Skip to content

ci: run the jobs side by side, and split the E2E tests of the CLI in four shards - #433

Merged
nucliweb merged 1 commit into
mainfrom
ci/parallel-jobs
Nov 14, 2026
Merged

nucliweb merged 1 commit into
mainfrom
ci/parallel-jobs

Conversation

@nucliweb

@nucliweb nucliweb commented Nov 14, 2026 •

Copy link
Copy Markdown
Owner

Summary

A run of CI took about 11 minutes in one job, validate. The E2E tests of the CLI were 566 seconds of the last run on main.

The jobs run side by side, each on its own runner:

Job What it runs
changes Decides whether a pull request only changes documentation, as before; the three jobs below depend on it
checks Lint, the checks and every test that needs neither a build nor a browser
build The build, the check of the built snippets and the Lighthouse audit
e2e-extension The E2E tests of the extension
e2e-cli (4 shards) The E2E tests of the CLI, with vitest --shard
  • A shard has a whole runner, as the suite had when it ran alone, so the tests that read timings keep their margin. fail-fast is off: a shard that fails does not stop the others.
  • .github/actions/setup installs Node, the dependencies and, when asked, the Chromium of Playwright.
  • The check named validate goes away. main has no branch protection and no required checks.

Not done: a cache for Chromium (its install takes 18 seconds, and restoring a cache of that size about the same) and a cache for .next (prebuild removes it on purpose).

Test plan

  • actionlint (rhysd/actionlint:latest in Docker, macOS): no errors
  • The 4 shards take the 73 files of cli/tests/e2e (19, 18, 18 and 18), none twice and none left out. Checked on macOS with Node 26.13.1, running each shard with a test name that matches nothing and reading the files of its JSON report
  • CI of this pull request, which is the workflow it changes: 5 runs of the whole workflow, one after the other, and every job passed in the 5. A run takes between 4 min 13 s and 4 min 48 s; checks 42 s, build 1 min 35 s, the E2E tests of the extension 1 min 26 s, and a shard of the CLI between 2 min 27 s and 4 min 5 s

…four shards

A run took about 11 minutes in one job, and the E2E tests of the CLI were 566 seconds of them. The checks that need neither a build nor a browser, the build, the E2E tests of the extension and the E2E tests of the CLI are jobs of their own, and the last one runs in four shards with vitest --shard. Each shard has a whole runner, as the suite had, so the tests that read timings keep their margin.

.github/actions/setup installs Node, the dependencies and, when asked, the Chromium of Playwright for all of them. The decision to skip the slow jobs on a pull request that only changes documentation is a job the others depend on.
@vercel

vercel Bot commented Nov 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
webperf-snippets Ready Ready Preview Nov 14, 2026 4:25pm UTC

@nucliweb
nucliweb merged commit 3af4d5c into main Nov 14, 2026
46 checks passed
@nucliweb
nucliweb deleted the ci/parallel-jobs branch November 14, 2026 17:16

This branch was successfully deployed

1 active deployment
Preview — 35b27457 Deployed Nov 14, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant