Skip to content

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:
      - e2e

Notes โ€‹

  • SHIPLIGHT_API_TOKEN and SHIPLIGHT_REPORT_TO_CLOUD=1 are required on every non-Shiplight runner โ€” they are provided automatically only on Shiplight-hosted GitHub runners.
  • The cimg/node:*-browsers image bundles the system libraries Chromium needs, so a plain npx playwright install chromium is enough. On a non-browser image, use --with-deps.
  • when: always on 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)? Add working_directory: ~/project/tests/e2e to the job, or cd into it before each command.

Released under the MIT License.