Skip to content

ci: guard CI dependency version compatibility - #3445

Merged
setchy merged 3 commits into
mainfrom
ci/playwright-image-lockstep
Oct 16, 2026
Merged

setchy merged 3 commits into
mainfrom
ci/playwright-image-lockstep

Conversation

@setchy

@setchy setchy commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Why

CI depends on a few version couplings that no single manifest expresses, and Renovate (or a manual edit) can move one half of a pair and leave the other behind. That surfaces as a confusing failure deep in the test or visual-regression run — most recently #3437, where the playwright npm package was bumped but the pinned visual-regression container image was not (same manual fix as #3299).

The couplings:

  • playwright (npm) must match the mcr.microsoft.com/playwright container image tag — they ship the same browser build.
  • @vitest/browser-playwright and @vitest/coverage-v8 peer-depend on the exact vitest version.
  • vite-plus bundles vitest and vite (@voidzero-dev/vite-plus-core) at exact versions.

Renovate can't keep the Playwright pair in lockstep on its own: they're separate datasources with independent release timelines, and MCR exposes no release timestamp for minimumReleaseAge to compare, so the image races ahead to the latest tag while npm waits out the age gate. Verified with local Renovate dry-runs.

What

  • Add src/main/ciDependencyCompatibility.test.ts, asserting the couplings above against the versions actually installed. It runs in the Run Tests job, so drift fails fast and explicitly.
  • Drop the Playwright group rule from renovate.json. It tried to keep the pair in lockstep but never actually grouped them (see above); the test now owns that guarantee.
  • Refresh the stale comment in the visual-regression job.

Tradeoff

The test is the guard: a Playwright upgrade needs the workflow tag + digest refreshed alongside the npm bump, and the test prints the exact docker buildx imagetools inspect command to do it. If that ever becomes too manual, the alternative is to let Renovate manage the image and accept a PR that stays red across the 3-day release-age window until npm catches up.

@setchy
setchy requested a review from afonsojramos as a code owner October 16, 2026 21:59
@github-actions github-actions Bot added the build Build, action or package manager changes label Oct 16, 2026
@setchy setchy changed the title ci: enforce playwright container image alignment ci: guard CI dependency version compatibility Oct 16, 2026
Renovate cannot keep the visual-regression Playwright container image in
lockstep with the playwright devDependency: they are separate datasources
with independent release timelines, and MCR exposes no release timestamp
for minimumReleaseAge to compare. Grouping them still resolves to
different versions and opens image-only PRs that strand the screenshot
baselines (see #3437, #3299).

Make package.json the source of truth and fail fast in Run Tests whenever
the workflow image tag drifts from the devDependency.
Also assert the exact vitest/vite couplings CI depends on:
@vitest/browser-playwright and @vitest/coverage-v8 peer on the vitest
version that vite-plus bundles, and vite must resolve to the
vite-plus-core build that vite-plus ships.
@setchy
setchy force-pushed the ci/playwright-image-lockstep branch from a565ffa to 566a569 Compare October 16, 2026 22:21
It tried to keep the npm package and the MCR image in lockstep, but
Renovate can't compare the two release timelines (MCR exposes no release
timestamp for minimumReleaseAge to read), so it never actually grouped
them. The CI dependency compatibility test now guards the pairing.
@setchy
setchy merged commit 5dfa48e into main Oct 16, 2026
19 checks passed
@setchy
setchy deleted the ci/playwright-image-lockstep branch October 16, 2026 22:24
@github-actions github-actions Bot added this to the Release 7.10.0 milestone Oct 16, 2026
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in Gitify v7.10.0! 🎉

Downloads for macOS, Windows, and Linux are available on the release page.

Thanks for helping make Gitify better!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Build, action or package manager changes

Development

Successfully merging this pull request may close these issues.

1 participant