Customer Story How Bitso cut change failure rate 83% while scaling delivery with coding agents
Jobs

Run your test suites where your services run

Jobs execute your existing Playwright, Cypress, k6, or custom suites on pre-warmed runner pods inside your cluster, automatically routed to the sandbox under test. Logs stream back to CI and artifacts upload on completion.
Bring any test framework or container image
Test execution stays inside your cluster
YOUR CLUSTER playwright e2e login.spec.ts cart.spec.ts checkout.spec.ts runner pod checkout SANDBOX FORK auth cart payments passed
Trusted by engineering teams worldwide
How it works

From CI trigger to test report in one submission

A Job is a single unit of test execution. You define the runner environment once, then every submission runs your suite against the right sandbox with no environment setup in the pipeline.
YOUR CLUSTER PR #142 opens sandbox checkout.spec.ts runner pod rk: pr-142 checkout SANDBOX FORK auth cart pay e2e PR #142 opens sandbox YOUR CLUSTER checkout.spec.ts runner pod rk: pr-142 checkout SANDBOX FORK auth cart pay e2e
1
Define a runner group
Point it at your test image, resource limits, and secrets. The Operator keeps warm pods ready in your cluster so there is no cold start per run.
runnergroup: e2e-suite image: e2e cpu: 2 secret: ci warm warm warm warm
2
Submit from CI or the CLI
One command submits a script or command with a routing context binding it to the sandbox or route group under test.
$ signadot job submit DISPATCHES TO A WARM RUNNER POD
3
Traffic routes itself
The routing key is injected into the HTTP traffic your suite emits. Requests hit the forked services under test and shared services for everything else.
rk: pr-142 checkout SANDBOX FORK auth, cart, pay SHARED SERVICES
4
Results land in the PR
Logs stream back to the CI job in real time. Reports, screenshots, and videos upload as artifacts you can pull from the dashboard or API.
e2e / playwright passed report.html video.mp4
Execution infrastructure

Bring the frameworks you already use

Jobs do not replace the tests your teams trust. A runner group points at your own container image with your service accounts and resource limits, and the Operator keeps pre-warmed pods ready so dispatch is fast.
Any suite that runs in a container, from Playwright to fully custom harnesses
Your image, your service accounts, your resource limits
Pre-warmed runner pods, no cold start per run
Playwright
Cypress
Grafana k6
Selenium

“Signadot is a key part of our solution for the most critical parts of our testing pyramid. For integration and end-to-end testing we need to have a sandbox up and running because they need a live service to talk to.”

EE
Early Ehlinger
Dev Experience Lead, Earnest

The hardest layers of the testing pyramid, covered pre-merge.

Earnest runs its integration and end-to-end suites in parallel against live sandboxes on every change, catching problems before they reach staging.

suite rk: pr-142 sandbox shared
Routing

Auto-routed to the sandbox under test

A Job declares a routing context that binds it to a sandbox or route group. Signadot injects the matching routing key into the HTTP traffic the suite emits, so requests reach the forked services under test and shared services everywhere else.
Off-the-shelf suites work with no code changes
Execution waits for sandbox readiness, so results are coherent
The same suite validates any number of sandboxes in parallel
Results

Results where your team already looks

Attach from the pipeline and output streams back in real time with a real exit code, so a failing run fails the check. Everything the suite produced is collected automatically when the run completes.
Streamed logs and exit codes in the CI job
Reports, screenshots, and videos upload as artifacts
Run history and downloads in the dashboard and API
Read the Jobs reference in the docs
signadot/hotrod pr-220 into master All checks have passed 7 successful checks Go / build (pull_request) 1m 32s Go / sandbox-router (pull_request) 48s Go / sandbox-location (pull_request) Skipped Go / sandbox-driver (pull_request) Skipped Sandbox: pr-220-route Routing key: gbscspdnzvcc0 12s

Point your existing suites at every change

Run the tests you already have against isolated sandboxes on the cluster you already operate, with results back in the PR in minutes.

Jobs FAQ

What test frameworks can Jobs run?

Any framework that runs in a container. Teams run Playwright, Cypress, k6, pytest, and fully custom suites by pointing the runner group at their own image. A Job executes a script or command inside that image, so nothing about your existing tests needs to change.

Where do Jobs execute?

Inside your Kubernetes cluster, on pre-warmed runner pods managed by the Signadot Operator. The Signadot control plane orchestrates scheduling and stores results, while the test traffic itself stays between the runner pod and the services on your cluster.

How does a Job target a specific sandbox?

Each Job declares a routing context that binds it to a sandbox or route group. Signadot injects the matching routing key into the HTTP traffic the Job emits, so requests flow through the sandboxed versions of changed services and reach shared services for everything else. Off-the-shelf suites work without code changes.

How do results get back to my CI pipeline?

Submit a Job from CI with the Signadot CLI and attach to it. Stdout and stderr stream back to the CI log in real time, and any declared artifacts such as HTML reports, screenshots, and videos are uploaded when the Job completes and can be downloaded from the dashboard or API.