Sep 2026 · 4 min read

Trigger a smoke test from CI without a dashboard login

A token, a URL, and a JSON body are enough to fail a pipeline when the smoke test fails.

The browser UI is for a human pasting a URL. A pipeline wants the same run with a token and a status code. POST /api/browser-test/ci accepts a URL, optional mode and viewport, and returns ok, shareUrl, and the summary. A bad token is 401 and does not start Chromium.

Put CI_HOOK_TOKEN in the project secrets, send it as x-ci-token, and fail the job when ok is false. Pass notifyWebhook if Slack should see the share link. The quota on the hook is separate from the public browser-test limit, so a noisy deploy does not lock you out of the website.

Invalid JSON does not burn a quota slot. That detail is the same idea as public quotas: count the runs that actually cost a browser, not the typos.

Trigger a smoke test from CI without a dashboard login — ShipCheck