CircleCI โ
Run your Shiplight E2E tests in CircleCI and upload the results to Shiplight Cloud. CircleCI uses the same shiplight CLI as every other provider โ only the pipeline syntax differs.
Before you start โ
- A scaffolded Shiplight test project (
/shiplight init). See the CI/CD overview for how the pieces fit together. - An org API token from app.shiplight.ai/api-tokens, stored as a project environment variable (or a context) named
SHIPLIGHT_API_TOKEN. - One-time: connect the repository in the CircleCI app (Projects โ Set Up Project) so CircleCI reads your config.
Pipeline โ
Create .circleci/config.yml at your repository root:
yaml
version: 2.1
jobs:
e2e:
docker:
- image: cimg/node:20.11-browsers # -browsers variant ships the system libs Chromium needs
environment:
SHIPLIGHT_REPORT_TO_CLOUD: "1"
# SHIPLIGHT_API_TOKEN comes from a project env var / context.
steps:
- checkout
- run: npm install
- run: npx playwright install chromium
- run: npx shiplight test
- run:
name: Upload results to Shiplight
command: npx shiplight report
when: always # upload even when tests fail
workflows:
e2e:
jobs:
- e2eNotes โ
SHIPLIGHT_API_TOKENandSHIPLIGHT_REPORT_TO_CLOUD=1are required on every non-Shiplight runner โ they are provided automatically only on Shiplight-hosted GitHub runners.- The
cimg/node:*-browsersimage bundles the system libraries Chromium needs, so a plainnpx playwright install chromiumis enough. On a non-browser image, use--with-deps. when: alwayson the report step is what makes the upload survive a red run.- Not available on CircleCI: Shiplight-hosted runners, the self-healing action cache, automatic LLM credentials, and auto-triage โ those are GitHub Actions only.
- Project in a subdirectory (e.g.
tests/e2e)? Addworking_directory: ~/project/tests/e2eto the job, orcdinto it before each command.