Skip to content

CI Setup

ScreenCI can generate a GitHub Actions workflow during init, and that workflow is meant to be a usable default, not a placeholder. It records the same way you do locally, but with repository secrets and a deterministic CI environment.

You will learn

Generated workflow

When you opt into CI during init, ScreenCI writes:

.github/workflows/screenci.yaml

The generated workflow:

  • runs on pushes to main
  • also supports workflow_dispatch
  • checks that SCREENCI_SECRET exists
  • checks out the repository
  • installs Node.js 24 and caches dependencies for your package manager
  • installs Chromium if the Playwright cache is cold
  • runs screenci record

That is intentionally close to Playwright’s own CI model. If you need deeper background on Playwright runners and browser installation, see Playwright CI.

Required secret

Add SCREENCI_SECRET as a repository secret in GitHub Actions. You can get it from app.screenci.com/secrets.

The generated workflow fails early if the secret is missing so you do not spend time waiting for a recording job that cannot upload anything.

Push vs manual dispatch

Start simple:

  • keep push to main when you want docs and product videos to stay current automatically
  • use workflow_dispatch when you want a manual review or approval step before recording

You can narrow the trigger later, but the generated default is intentionally easy to adopt.

Keep recordings deterministic

CI recordings work best when:

  • the target environment is stable
  • feature flags are fixed
  • seeded demo data is predictable
  • authentication is handled before visible recording starts
  • visible waits are tied to UI state instead of luck

If a flow only works when everything is timed perfectly, fix the script locally before pushing CI responsibility onto it.

Relation to accepted and latest renders

CI uses the same ScreenCI upload and render pipeline as local recording. The main difference is that it becomes repeatable and repository-driven, which is useful when published videos should follow the shipped app.

What’s next