Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.


Transformer

A tool to convert web browser sessions (HAR files) into Locust load testing scenarios (locustfiles).

Use it when you want to replay HAR files (containing recordings of interactions with your website) in load tests with Locust.

Installation

Install from PyPI with pip:

pip install har-transformer

Usage

Command-line

$ transformer my_scenarios_dir/

Library

import transformer

with open("locustfile.py", "w") as f:
    transformer.dump(f, ["my_scenarios_dir/"])

Example HAR files are included in the examples directory for you to try out.

How-to

Create a HAR file

Using Chrome Developer Tools

Record

  1. Prepare your scenario by thinking through the steps you want to execute
  2. Open Chrome in either Guest or Incognito mode (it's important to have no cookies prior to starting)
  3. Open the Developer Tools
  4. Open the Network panel
  5. Select Disable cache and Preserve log
  6. Clear the existing log by clicking the Clear 🚫 button
  7. Ensure recording is enabled, the Record button should be red 🔴 (click to toggle)
  8. Navigate to your target site by entering the URL in the address bar e.g. https://www.zalando.de, https://www.zalando.de/damen-home/, etc.
  9. Perform your scenario by clicking through the pages, filling in forms, clicking buttons etc.

N.B. It's recommend that after each click/action, and before the next one, you wait until the network panel stops showing activity. This is to ensure that all requests are properly recorded.

Save

Once you have finished performing your scenario:

  1. End recording by clicking the Record 🔴 button
  2. Right-click on any of the file names listed in the bottom pane of the Network panel
  3. Select Save as HAR with content
  4. Save the file on your machine

ℹ️ You can view the details of the recorded HAR by simply drag-and-dropping it into the Chrome Developer Tools Network panel.

Scenario weights

By default, all scenarios have the same weight 1, which means they should all be executed as often as the others.

You can specify a different weight for each HAR file by creating an associated weight file. Weights must be positive, non-null integers due to how Locust works. Consider the following scenario group:

$ ls
scenario1.har
scenario2.har
scenario2.weight

$ cat scenario2.weight
3

Here are the weights Transformer will specify in the corresponding locustfile:

Scenario Weight
scenario1.har 1
scenario2.har 3

This means that Locust will run scenario2.har 3 times as much as scenario1.har.

Hierarchical scenarios

It may be the case that all your scenarios cannot be treated the same:

  • some only apply to a part of your load test target,
  • some should run more often than others.

For instance, the Zalando website works differently depending on its top-level domain: zalando.fr has an additional step before payment compared to zalando.de. This requires using different scenarios (i.e. different HAR files) depending on the tested domain. Moreover, to execute a realistic load test, we need to produce much more traffic targeting certain countries (i.e. groups of scenarios) than others.

To accommodate this way of working, our HAR files are organized in TLD-specific directories, each of which is potentially associated to a specific "weight" according to the relative amount of traffic expected:

scenarios/
├── Germany/
│   ├── scenario_1.har
│   ├── scenario_2.har
│   └── scenario_2.weight
├── Germany.weight
├── Switzerland/
│   └── scenario_1.har
└── Switzerland.weight

The "weight file" of directories (Germany.weight, Switzerland.weight) are similar to scenario weight files but apply to the whole directory (relatively to other directories of the same level). Thus, in the previous example, if Germany.weight is 6 and Switzerland.weight is 2, then Germany scenarios will be executed (in total) 3 times more (6 / 2) than Switzerland scenarios. A directory without a weight file has a weight of 1.

Scenarios can be arbitrarily nested, allowing you to organize and weight them as you want:

scenarios/
├── Germany/
│   ├── beauty/
│   │   └── checkout.har
│   ├── kids/
│   │   └── frontpage.har
│   ├── kids.weight
│   └── scenario_1.har
├── Germany.weight
├── Switzerland/
│   └── scenario_1.har
└── Switzerland.weight

To represent this, Transformer will produce nested Locust TaskSets in the resulting locustfile.

Blacklist specific URLs

By default, Transformer converts all requests found in input HAR files. You can blacklist, i.e. ignore, certain URLs by creating a .urlignore file in the directory in which Transformer is called.

Example

A .urlignore containing:

google
www.facebook.com
https://mosaic

... would ignore requests with URLs such as https://www.google.com, https://www.facebook.com/, and https://mosaic01-abc.js (amongst others).

An example blacklist file called .urlignore_example exists that you can use as a base.

Use plugins

In case you need some customization of the Locustfile generated by Transformer, you can use its plugin mechanisms to achieve it. Please see plugins documentation for more details.

Contributing

Please read CONTRIBUTING.md for details on our process for submitting pull requests to us, and please ensure you follow the CODE_OF_CONDUCT.md.

The only required dependency for local development is Poetry.

With Poetry, our Makefile installs all necessary dependencies and run all tests and linters:

make

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Metadata

Release files for har-transformer 1.0.2.dev20190221094105

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for har-transformer 1.0.2.dev20190221094105
File Size Uploaded Provenance
har-transformer-1.0.2.dev20190221094105.tar.gz 48.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for har-transformer 1.0.2.dev20190221094105
File Interpreter ABI Platform
har_transformer-1.0.2.dev20190221094105-py3-none-any.whl Python 3 none any Details

Total release size: 221.7 kB

Release files / har-transformer-1.0.2.dev20190221094105.tar.gz

Download URL har-transformer-1.0.2.dev20190221094105.tar.gz
Size 48.0 kB
Tags Source
SHA-256 checksum
How to use checksums
74728211ab55eda7031a35484f64483735d4d3c00f0b5ac9835cc9d51370db50
BLAKE2b-256 checksum
How to use checksums
21f17f52ed05757053a6d034a76fe20a44da2e17917cdffb095651f4b41c25e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/0.12.11 CPython/3.7.1 Linux/4.15.0-1026-gcp

Release files / har_transformer-1.0.2.dev20190221094105-py3-none-any.whl

Download URL har_transformer-1.0.2.dev20190221094105-py3-none-any.whl
Size 173.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a71846fa60f8b07d045eda682f02e86fd3edf9f2e54802cd9720fa7715dad790
BLAKE2b-256 checksum
How to use checksums
cdaa3233f90686d1a2606e122c5f1079bbe93acab6f9e175680b905b5135dace
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/0.12.11 CPython/3.7.1 Linux/4.15.0-1026-gcp

Security for har-transformer 1.0.2.dev20190221094105

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page