Fix: bump testcafe to ^3.7.5 for Chrome 149 compatibility (PER-9755)#32
Merged
Conversation
TestCafe 3.7.2 (pinned in the lockfile) cannot establish a native-automation CDP connection to Chrome 149 now shipping on GitHub-hosted runners, so the `Tests` job hangs ~6 minutes, reports "Chrome 149.0.0.0 browser disconnected", and the snapshot command never runs ([percy] Snapshot command was not called). Bumps testcafe to ^3.7.5 (3.7.4 bumped testcafe-hammerhead; 3.7.5 is the latest) and regenerates package-lock.json so `npm ci` installs 3.7.5. `@percy/testcafe` peer dep is `testcafe >=1`, so no Percy-side change is needed. Fixes PER-9755. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The basic `Tests` job (.github/workflows/test.yml) pinned Node 14, which is below testcafe's engine floor (3.7.2 needs >=16, 3.7.5 needs >=20). On Node 14 `percy exec -- testcafe` no-ops (<1s, no output, exit 0) so 0 snapshots reach Percy and the Percy check fails with "no snapshots were uploaded". Bumps node-version 14 -> 20 (satisfies testcafe@3.7.5 engines), refreshes the deprecated actions (checkout@v3->v4, setup-node@v1->v4, cache@v3->v4), and fixes the cache key (package-lock.lock -> package-lock.json, node-14 -> node-20). Refs PER-9755. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…de 20 + pinned deps) The advanced job uploaded 0 snapshots: every percySnapshot failed with testcafe's "Cannot prepare tests ... eval code cannot contain async/await syntax" → Percy build failed no_snapshots and masked the green basic build (shared commit-status context). Both jobs use identical @percy/testcafe 1.0.4 + testcafe 3.7.5; the only deltas were the advanced env: Node 18 (vs 20) and unpinned deps (npm install pulled @percy/cli 1.32.2 vs the basic job's proven 1.30.11). This aligns advanced to the basic job's working set: - advanced.yml: Node 18 -> 20, setup-node@v3->v4, checkout@v3->v4, npm install -> npm ci - advanced/package.json: pin @percy/cli 1.30.11, @percy/testcafe 1.0.4, testcafe 3.7.5 - add advanced/package-lock.json so npm ci is reproducible (no more silent drift) Refs PER-9755 / PER-8195. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Shivanshu-07
approved these changes
Jul 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The
Testsjob fails deterministically on GitHub-hosted runners now that they ship Chrome 149. The run hangs ~6 minutes (6m23s / 6m28s / 6m30s across recent runs), then:Root cause
testcafe@3.7.2is pinned inpackage-lock.json(CI usesnpm ci, which installs the exact lockfile version regardless of the^3.7.2range). TestCafe 3.0+ drives Chromium over native CDP, and 3.7.2 cannot establish a CDP connection to Chrome 149 — so it hits TestCafe's browser-connection timeout and the tests never execute. This is environmental (runner Chrome upgrade) × a stale TestCafe pin;percy exec/@percy/testcafeare not at fault (the disconnect is entirely inside TestCafe's automation layer). Same pattern as DevExpress/testcafe#8367.Fix
package.json:testcafe^3.7.2→^3.7.5(3.7.4 bumpedtestcafe-hammerhead; 3.7.5 is latest, published 2026-06-16).package-lock.jsonsonpm ciinstalls 3.7.5 (the caret alone wouldn't help while the lockfile pinned 3.7.2).@percy/testcafepeer dep istestcafe: ">=1", so the bump is safe — no Percy-side change.Validation
Please let CI run the full
Testsjob and confirm it executes a real ~6-min testcafe run and goes green on Chrome 149 (rather than the 1s no-op). If green, the same bump should be applied to the other TestCafe sample repos.Fixes PER-9755.
🤖 Generated with Claude Code