Skip to main content

Example: WebApp flow under test

Objective

Show how to move from recording to distributed execution using a real user flow from an online store web application:

recording -> correlation -> editing -> debug -> local run -> distributed run.

Before starting, install the Relampo CLI here: https://relampo.com/cli-install/.

Test case

  • Application: http://www.testingyes.com/demo/
  • Test user: Contact us to assign a test user.
  • Test password: Contact us to assign a test password.
  • Flow to record:
  1. Open HomePage.
  2. Click Login.
  3. Enter the credentials provided by the Relampo team.
  4. Select a product (for example: avocado, tomato, or bread).
  5. Complete the purchase by going through all screens until order confirmation.
  6. Log out of the app.

1) Record real flow

Step 1. Start recording

relampo record \ # Starts HTTP(S) traffic recording
--port 8888 \ # Local MITM proxy port
--base-url "http://www.testingyes.com/demo/" \ # Base URL of the app under test
--prefix "<optional-prefix>" \ # Optional initial prefix (you can also set it interactively)
--responses \ # Captures responses (headers/body) for later correlation
--output my_script.yaml \ # Output YAML file
--exclude "(?i).*\.(css|js|png|jpg|jpeg|gif|svg|ico|woff2?)(\?.*)?$" # Excludes static resources
Windows tip

On Windows, replace \ with PowerShell backtick (`) or CMD caret (^). You can also run this command in a single line.

Step 1 - Start recording

Expected result: Once you press Enter, you should see the following.

Output after pressing Enter

  • Prefix interactive mode enabled...
  • Starting Relampo MITM proxy on port 8888

Step 2. Configure Firefox proxy

  1. Open Settings > Network Settings > Settings...
  2. Select Manual proxy configuration
  3. Host: localhost
  4. Port: 8888
  5. Enable Use this proxy server for all protocols

Step 2 - Firefox proxy

Step 3. Execute the functional app flow

Before starting the functional app flow, you can add prefixes to each request to name them and map user actions to captured requests.

How it works: before each action in the web app, type in the terminal how you want to name that group of requests, then press Enter.

Keep in mind this feature is enabled when you run relampo record with --prefix, as shown in this example.

For example, you can type in the console:

HOMEPAGE

In the console, you should see:

HOMEAPAGE
2026/03/11 13:39:53 [record] Updated prefix from stdin: "HOMEAPAGE"

Prefix output in console

Now you can go to the web app home page: http://www.testingyes.com/demo/

Web app home page

If you go back to the Relampo console, you will see the first recorded requests:

2026/03/11 13:44:06 [mitm] HOMEAPAGE - GET /demo -> 301 (160.96075ms)
2026/03/11 13:44:07 [mitm] HOMEAPAGE - GET /demo/ -> 200 (491.15775ms)

Do the same for the rest of the flow steps:

Each request should be recorded with its corresponding prefix:

Requests recorded with prefix

  1. HomePage
  2. Click Login
  3. Sign In (credentials provided by the Relampo team)
  4. Select product
  5. Add to cart
  6. Checkout
  7. Confirm Order
  8. LogOff

Step 4. Finish recording

Press Ctrl + C in the terminal.

Expected result:

2026/03/11 13:52:10 [record] YAML saved to: /Users/delvisecheverria/my_script.yaml

Output after stopping recording

Recorded Script Ready

We now have a recorded script, and in this case we also captured responses.

Download it here: Download my_script.yaml

2) Correlation analysis

Now that we have our script recorded with Relampo and, in this case, we kept responses, we can run a first analysis to detect dynamic values present in the script.

To do that, run:

relampo correlate /Users/delvisecheverria/my_script.yaml

Expected result:

  • Relampo shows a table with potential correlation candidates.
  • The table includes: ID, VARIABLE NAME, and associated VALUE.
  • SOURCE (response) shows where the server sent the value (for example: headers, URL, body, etc.).
  • USED IN shows in which request that value is sent back to the server.

Correlation candidates table

3) Apply correlation

Once Relampo shows correlation candidates, you can decide which values to apply.

  • If you want to apply all candidates: relampo correlate /Users/delvisecheverria/my_script.yaml --apply
  • If you want to apply only specific IDs: relampo correlate /Users/delvisecheverria/my_script.yaml --apply-ids "1,3"

For this case, we will use IDs 1 and 3 (securityToken and products_id):

relampo correlate /Users/delvisecheverria/my_script.yaml --apply-ids "1,3"

Expected result:

[relampo] Analyzing script: /Users/delvisecheverria/my_script.yaml
[relampo] Requests: 21 Responses: 21
[relampo] Scanning for dynamic values and re-usage patterns...

[relampo] Applied correlations:
securityToken | (?is)(?:var|let|const)\s+securityToken\s*=\s*["']([^"']+)["'] | Regex Extractor | APPLIED
products_id | (?is)<input[^>]*name=["']products_id["'][^>]*value=["']([^"']+)["'] | Regex Extractor | APPLIED
✓ Correlated YAML written to /Users/delvisecheverria/my_script.yaml.correlated.yaml

Apply correlations by IDs

Relampo generates a new correlated script, with the created extractors and variable substitutions in the requests where values are sent back to the server.

Correlated Script Ready

We now have a correlated script with extractors and variable substitutions already applied.

Download it here: Download my_script.yaml.correlated.yaml

4) Edit in Relampo Editor

relampo editor

At this point, we already have a correlated script with values identified automatically by Relampo.

Now you can open Relampo Editor to review the generated script and extend it with additional runtime configuration.

You can do it in two ways:

  • From terminal with relampo editor.
  • From web at editor.relampo.com, loading /Users/delvisecheverria/my_script.yaml.correlated.yaml.

Inside the editor, you can:

  • Add manual correlations that Relampo did not detect automatically.
  • Configure scenario.cookies.
  • Configure data_source (for example CSV).
  • Define think_time.
  • Add assert / assertions.
  • Extend logic with JavaScript using spark (before and after).

Note: some elements are generated automatically to speed up script editing.

Your script can be viewed both as a node tree and as code.

Correlated script editing in Relampo Editor

Feel free to add all elements your script needs to make your performance scenario as realistic as possible.

As an example, here we are adding:

  • think_time
  • assertions
  • a spark after example to capture a token with JavaScript
  • a data_source using an external file (email and password) for login

Additional configuration example in Relampo Editor

Run an edited example script

If you want to run an edited script with some of these elements already configured, you can download this script.

This script includes:

  • data_source with users.csv to feed different login credentials per iteration (email and pass).
  • Dynamic login payload driven by variables (recommended: email_address={{email}} and password={{pass}}).
  • Correlation extractors for securityToken and products_id.
  • spark after JavaScript to capture securityToken from the response and store Securitytoken_Spark (for visibility/example use).
  • think_time between requests using mixed pauses (fixed and ranged), keeping pacing under 5s.
  • Multiple assertions (status, contains, response_time, regex, not_contains, response_size) to validate behavior and detect failures early.

Download it here: Download ScriptEdited.yaml

Expected result:

  • Script refined and saved with complete runtime configuration.

5) Debug flow

relampo debug /Users/delvisecheverria/my_script.yaml.correlated.yaml

Expected result:

  • Functional step-by-step flow.
  • Dynamic variables resolved correctly.

6) Local run

relampo run /Users/delvisecheverria/my_script.yaml.correlated.yaml

Expected result:

  • Local execution completed with metrics.

7) Distributed run

7.1 Prepare distributed repository

Setup command:

relampo distributed setup

Or with a specific repository:

relampo distributed setup --repo owner/perf-tests

Expected result:

  • Remote repository prepared for distributed execution.

7.2 Upload test files

Before running distributed tests, upload the scenario and required data files (such as CSV files).

--files must be a bracketed list:

relampo distributed files upload \
--repo owner/perf-tests \
--files "[/Users/me/test.yaml,/Users/me/users.csv]"
Windows tip

On Windows, replace \ with PowerShell backtick (`) or CMD caret (^). You can also run this command in a single line.

Expected result:

  • YAML script and CSV data available in the distributed repository.

7.3 Execute distributed run

Recommended entry command:

relampo distributed run /Users/me/test.yaml \
--repo owner/perf-tests \
--nodes 2 \
--vus 10 \
--duration 2m \
--json /Users/me/Downloads/distributed-summary.json \
--html /Users/me/Downloads/distributed-summary.html \
--csv /Users/me/Downloads/distributed-summary.csv \
--text /Users/me/Downloads/distributed-summary.txt
Windows tip

On Windows, replace \ with PowerShell backtick (`) or CMD caret (^). You can also run this command in a single line.

You can monitor execution from GitHub Actions while the test is running, or wait locally for the summary output. You can also review the generated HTML report and logs in JSON, TXT, and CSV formats.

Expected result:

  • Multi-node execution completed with aggregated results.