The TestSprite CLI is now live — open source.Star it on GitHub

Real Browser Tests in Your GitLab CI Pipeline

TestSprite's CLI needs nothing but an API key in the environment — no credentials file, no browser binaries to install in the runner. Run your suite to a real verdict, let the exit code gate the job, and hand GitLab a JUnit report it renders in the merge request natively.
Type
Solution
Language
English

Seamlessly Integrates With Your Favorite AI-Powered Editors

Claude CodeCodexVisual Studio CodeCursorTrae
Our GitHub App listens for deployment events, and that part is GitHub-only. On GitLab the answer is the CLI — same tests, same cloud execution, driven by your pipeline instead.

Two Variables, No Config File

Set TESTSPRITE_API_KEY as a masked CI/CD variable and the CLI authenticates from the environment. Nothing is written to ~/.testsprite, which is what you want in an ephemeral runner.

No Browsers in Your Runner

Execution happens in TestSprite's cloud against real browsers, so the job installs only the CLI. That removes the slowest step from a cold pipeline — no browser binaries to download or cache.

JUnit That GitLab Renders

--report junit --report-file <path> writes a sidecar. Point artifacts:reports:junit at it and GitLab shows per-test results directly in the merge request widget.

The Exit Code Is the Gate

--wait blocks until every run is terminal, so exit 0 means every test genuinely passed rather than every test was dispatched. Documented codes distinguish a failed test (1) from an auth problem (3) or an exhausted balance (12).

Priority
Test
Status
HIGH
TC001_Review_App_Reachable
Pass
HIGH
TC002_Signup_Flow_Completes
Failed
MEDIUM
TC003_Merge_Request_Env_Serves_Build
Pass
MEDIUM
TC004_API_Contract_Matches_Schema
Pass
LOW
TC005_Locale_Switch_Persists
Warning

Gate the Merge Request on a Real Browser

Unit tests confirm the code does what it was written to do. Only a run against your review app confirms the thing you are about to merge actually works.

Built for Teams Shipping on GitLab

Works With Review Apps

Point the project at your review app URL before the run — testsprite project update <id> --url "$CI_ENVIRONMENT_URL" — so the suite stays stable while the target moves per merge request.

Pin the Version

Install @testsprite/testsprite-cli@<version> rather than tracking latest, so a new release never changes what your pipeline does without a commit.

Frontend and Backend in One Gate

Group web flows and API contract tests into a test list and run it with testsprite testlist run, pinning each project to its environment.

Free Community Version

Offers a free community version, making us accessible to everyone.

Trusted By Businesses Worldwide

"Good job! Pretty cool MCP from TestSprite team! AI coding + AI testing helps you build better software easily!"

"TestSprite offers rich test case generation, clear structure, and easy-to-read code. It also supports simple online debugging with the ability to quickly expand by generating new test cases."

"TestSprite's automation helps us reduce tons of manual work. The developers can easily catch and resolve bugs earlier in the development process."

FAQ

Does the GitHub App integration work with GitLab?

No — that integration listens to GitHub deployment events and is GitHub-only. On GitLab you drive the run from your pipeline with the CLI, which needs only TESTSPRITE_API_KEY in the environment.

How do I show results in the merge request?

Write a JUnit sidecar with --report junit --report-file testsprite-junit.xml and declare it under artifacts:reports:junit. GitLab then renders per-test results in the merge request widget.

How do I test a review app whose URL changes every time?

Update the project URL as the first step of the job using GitLab's own variable: testsprite project update <id> --url "$CI_ENVIRONMENT_URL". The test suite stays the same while the target moves.

What if my application requires a login?

Store a test account on the project with --username and --password-file — both flags are required together. Without them, exploration and runs only see public pages, and it warns rather than failing.

Is the CLI open source?

Yes — the open-source CLI is Apache-2.0 and free to install from npm. It requires Node 20.19+, 22.13+, or 24+. Test execution runs in the cloud and consumes workspace credits.

Can I try commands without spending credits?

Yes. --dry-run exercises the full code path offline with canned data, and test scaffold and test lint never touch the network or your credentials at all.

Add a Real Browser Check to Your Pipeline