All posts
Engineering10 August 2026 9 min read

From Pull Request to Governed Run: Wiring Assertive into CI/CD

A practical walkthrough of triggering end-to-end runs from GitHub Actions — tokens, concurrency, gating merges on results, and keeping the report auditable.

By The Assertive Team

A test platform that lives in a browser tab gets used for a fortnight. A test platform wired into the pipeline gets used forever. Here is the shape of that integration, end to end.

One token, scoped correctly

Create an API token of kind runner or mcp depending on the caller, store it as a repository secret, and never reuse a personal session token in CI. Tokens are organisation-scoped, hashed at rest, and revocable independently, so rotating one pipeline's credential never disturbs another.

Trigger, poll, gate

The action posts to the run trigger endpoint with the project and an optional scenario selection, receives a run reference such as RUN-000123, then polls until the batch closes. Exit non-zero on failures and the pull request is blocked; exit zero and the job attaches the report URL as a check annotation.

Choose what to run per event

Pull requests usually run a fast subset: smoke journeys plus anything touching the changed area. Merges to main run the full set across browsers and viewports. Nightly jobs run the full set plus a regeneration pass so new coverage is proposed while nobody is waiting on it.

Concurrency without credential sprawl

The on-prem Runner executes scenarios in a worker pool with an isolated browser context per worker. Secrets are resolved inside each sandbox and never written to the shared filesystem, so raising concurrency raises throughput without widening the blast radius.

The audit trail is the deliverable

Each CI run produces an immutable attempt: sealed metrics, per-step telemetry, traces, video, and the agent version used. Months later you can answer 'what exactly did we verify before shipping that release?' with a link rather than a guess.

Frequently asked questions

Do I need the on-prem Runner to use CI?
No. Cloud execution works for any target reachable from the internet. The Runner is for applications behind a VPN or private network, or where credentials must never leave your infrastructure.
How do I stop a flaky run from blocking a merge?
Retries are recorded as separate attempts rather than overwriting the first result, and the batch reports a flaky count distinct from failures. Gate on failures, review flakiness as a trend rather than per-merge noise.
Are API tokens scoped to a single project?
Tokens are organisation-scoped and kind-scoped. Each request names the project it targets, and access is checked against that organisation's membership, so a token cannot reach another tenant's data.

Keep reading