Skip to main content
Run on CI/CD turns the collections you already run in the app into a pipeline file you can commit. You pick the collections, the CI provider, the runner’s operating system, and which reports you want, and Requestly writes the whole file: downloading the CLI, running each collection in order, and wiring the results into your provider’s own test reporting. Nothing runs inside Requestly. The output is a text file you copy into your repository, and every command in it is a Requestly CLI invocation you could have typed yourself.
Availability: Run on CI/CD is rolling out gradually, so if the Run in CLI sub-tab is missing from a collection’s Runner tab, contact support to confirm it is enabled for your account. CLI runs are not available for browser-based projects: open the project in the desktop app, or use a cloud project.

Open the generator

1

Open the collection's Runner tab

In the Collections sidebar, select the collection you want to run in CI, then open its Runner tab.
2

Switch to the Run in CLI sub-tab

The Runner tab has three sub-tabs: Manual, Scheduled, and Run in CLI. Manual is the on-demand Collection Runner and Scheduled holds this collection’s Scheduled Runs. Select Run in CLI.This sub-tab shows the single command that runs this one collection from your terminal. A cloud project also shows the two environment variables the command needs; a local project needs none.
The Run in CLI sub-tab of a collection's Runner tab, showing the generated CLI command and the Run on CI/CD section at the bottom.
3

Select Configure command

At the bottom of the sub-tab, under Run on CI/CD, select Configure command. The generator opens as its own tab with this collection already filled in as the first row.There is one generator tab per project. Opening it from another collection’s Runner adds that collection to the list rather than opening a second tab.

Configure the file

The generator is a form on the left and a live preview on the right. There is no Generate button: every edit rewrites the file on the right immediately.
The Run on CI/CD generator, with the collections table, provider, operating system, and reports controls on the left and the generated pipeline file previewed on the right.

Collections to run

The Collections to run table is the list of targets the pipeline executes, in order. Each row picks one collection and, optionally, one environment.
  • Add collection appends a row.
  • Drag a row by its grip, or use Move up / Move down in the row’s More actions (…) menu, to change the order. The order is the execution order.
  • The same collection can appear more than once as long as each row picks a different environment. An exact repeat is refused with “This collection is already in the list with that environment.”
  • The list can never be emptied. Removing the last row is refused with “A pipeline needs at least one collection to run.”
Iterations and inter-request delay are not set here. Each row carries the iteration count and delay already saved in that collection’s run configuration in the Collection Runner, so the pipeline and the app agree. Values at their defaults are left out of the command entirely. If a row names a collection that has since been deleted, the preview is withheld rather than quietly generating a smaller pipeline. The preview shows No file to generate with a button that jumps straight to the broken row. In a local project the preview is also withheld when a collection’s folder cannot be determined, or when the folder name contains a quote, $, a backtick, or a backslash. Reopen the project, or rename the folder, then the preview returns.

CI/CD provider

Pick the system that will run the file. Each option also names the path the file belongs at in your repository: The same path is shown above the preview as Save as, so you can copy the file and know where it goes without switching back to the form.

Operating system for CI/CD

This is the machine your pipeline runs on, not your own laptop. It decides which CLI build the install block downloads, which shell verbs it uses, and which runner the file targets. On GitLab the runner tag is a GitLab.com SaaS tag; on self-managed GitLab, swap it for your own runner’s tag. The options are Linux x64 (the default, and the standard runner image on all four providers), Linux arm64, macOS x64, macOS arm64, and Windows x64.

Reports

Reports selects which reporters every target runs with: Nothing but Terminal output is selected to begin with. Pick at least JUnit if you want results in your provider’s test view; the examples below all have JUnit selected.
The Reports multi-select in the Run on CI/CD generator, open to show the five report options with their descriptions and the locked Terminal output entry.
Terminal output is locked on for a reason: naming any reporter on the CLI replaces the default set instead of adding to it, so a run configured for files only would write its reports and print nothing at all, leaving a green build with an empty log. Test Reporting & Analytics is available in cloud projects only. In a local project the option is locked from the moment the generator opens, and the form explains why: the results would land in Test Reporting as a standalone build with no link back to this collection. Each file reporter writes one file per target, named after the target’s position in the list: rq-reports/1-checkout.xml, rq-reports/2-payments.xml, and so on. That numbering is what stops two targets overwriting each other’s report.

Credentials

A pipeline that runs cloud collections authenticates with two environment variables, BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESS_KEY. The generated file references them by name and never contains a credential value, so it is safe to commit. You add the values in your CI provider before the first run: On Jenkins the credential IDs are lowercase and hyphenated, not the variable names. The access key is your personal BrowserStack credential, so anyone who can run the pipeline runs as you. In a local project the generator says No credentials needed instead: the collections come off the checked-out repository, so the file references no secret and there is nothing to configure in your provider.

Copy and commit

Use the copy control in the preview toolbar to put the whole file on the clipboard, then save it at the path shown in the Save as label and commit it. The preview is read-only and searchable, so you can review the file before you take it.

What the generated file looks like

Every file installs the CLI, runs each target in order, and collects whatever report files you selected. GitHub, Jenkins, and Azure install once and collect once at the end; GitLab makes each target its own job, so it installs the CLI and attaches its reports per job.
The CLI version appears on exactly one line, as RQ_CLI_VERSION. Raise it there to upgrade every target at once; the CLI page lists the versions available.

Every target runs, then the build gates on the aggregate

A failing collection does not stop the ones after it. Each provider reaches that behavior in its own way: GitHub uses if: '!cancelled()', Azure uses condition: succeededOrFailed(), Jenkins wraps each stage in catchError, and GitLab gets it for free because each target is a separate job.
Every target runs even when an earlier one fails, and the build still fails if any target failed. Cancelling the pipeline still stops the targets that have not started.

Where the results show up

How the JUnit report is surfaced depends on the provider: JSON and HTML reports are kept as build artifacts on every provider. Test Reporting & Analytics uploads instead of writing a file, so it produces no artifact step at all.
GitHub stores the JUnit report as an artifact but does not render it as a test report. To see results in the run summary, add a JUnit reporting action from the Marketplace or write your own summary to $GITHUB_STEP_SUMMARY.
On Azure, a request that fails at the transport layer (an unreachable host, a DNS failure) reddens the build through the run’s exit code but does not appear in the Tests tab. For those, read the build log.

Local projects

When your project is a local, Git-backed project, the generated file targets collections by path inside your checkout instead of by cloud ID. Three things change:
  • The file declares an RQ_PROJECT_DIR variable, defaulting to . (the checkout root). Change it if the Requestly project lives in a subfolder.
  • Each target’s positional argument becomes "$RQ_PROJECT_DIR/<the collection's folder, relative to your project root>", quoted so folder names with spaces still resolve to one path.
  • Environments are matched by name rather than by ID, because the CLI reads local environments from their filenames.
Local target, GitHub Actions
The pipeline reads the project straight out of the repository, so it needs no BrowserStack credentials. Commit the project directory alongside the pipeline file.

What’s Next?

Requestly CLI

Every flag the generated file uses, plus the .requestlyrc file for shared defaults.

Collection Runner

Set the iterations and delay each target inherits, and check the run before you commit it.

Write Tests

Add the assertions that decide whether your pipeline passes or fails.