Skip to content

feat(ci): check on every pull request that the versions agree, and warn on main about a version without a tag - #432

Merged
nucliweb merged 2 commits into
mainfrom
feat/release-version-check
Nov 14, 2026
Merged

nucliweb merged 2 commits into
mainfrom
feat/release-version-check

Conversation

@nucliweb

Copy link
Copy Markdown
Owner

Stacked on #431.

Summary

The release of the CLI 1.16.0 was merged and its tag was not pushed. For some hours the Copy prompt of every snippet page asked npm for webperf-snippets@1.16.0, which was not there, and the evals failed on every pull request with ETARGET.

scripts/release-versions.js adds two checks:

  • npm run check:versions, on every pull request. The version of each part is written in several files that a release changes by hand. It fails when one of them carries another version:

    • cli/server.json (its version and the one of its package) and the cli entry of the lockfile, against cli/package.json
    • cliVersion and cli_version in the examples of cli/README.md and content/CLI.mdx, with the line
    • the root of the lockfile, against package.json
    • the placeholder of .github/ISSUE_TEMPLATE/extension-feedback.yml, against extension/manifest.json

    check-tag-version.js compares some of these when the tag is pushed, which is after the merge.

  • A warning on main about a version without a tag. On a push, CI reads the tags of the remote and annotates the run when the version of the collection, the CLI or the extension has none. It does not fail: the tag comes right after the merge.

RELEASING.md describes both.

Test plan

On macOS with Node 26.13.1:

  • npm run test:ci: 43 of 43, with the 7 new tests. With one comparison disabled in the script, its test fails
  • npm run check:versions passes on the repository. With cli_version changed to 1.15.0 in cli/README.md, it exits with 1 and names cli/README.md:194
  • node scripts/release-versions.js --untagged against the remote: every version has its tag
  • npm run lint, and actionlint in Docker on the workflows
  • CI. The warning step runs on a push to main only, so its first run is the merge of this pull request

Playwright 1.65.1 brings Chromium 159. The prompt of a snippet page installs and runs the same version the CLI is tested with, so PLAYWRIGHT goes from 1.63 to 1.65.

Chromium 159 does not register an unload handler unless the page sends Permissions-Policy: unload=(self), and a frame also needs allow="unload" from the page that embeds it. Two tests of Back-Forward-Cache failed because their pages no longer had the handler they test: the fixture sends the header and allows the frame. The snippet does not change: without a handler there is nothing that blocks the bfcache.
…rn on main about a version without a tag

The version of each part is written in several files that a release changes by hand, and they were only compared when the tag was pushed, after the merge. npm run check:versions compares cli/server.json, the lockfile, the examples of the JSON output and the feedback template with the version of their part, and CI runs it on every pull request.

On a push to main, CI warns when the version of the collection, the CLI or the extension has no tag on the remote. The release of the CLI 1.16.0 was merged and not tagged, so the Copy prompt of the site asked npm for a version that was not there.
@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 3:04pm UTC

Base automatically changed from chore/playwright-1.65 to main November 14, 2026 15:02
@nucliweb
nucliweb merged commit f26335d into main Nov 14, 2026
3 checks passed
@nucliweb
nucliweb deleted the feat/release-version-check branch November 14, 2026 15:15

This branch was successfully deployed

1 active deployment
Preview — be18c9c3 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