Skip to content

chore(e2e): upgrade @playwright/test 1.62.1 to 1.63.0 and dedupe playwright-core - #659

Merged
jasonhnd merged 2 commits into
previewfrom
chore/playwright-1.63.0
Sep 24, 2026
Merged

jasonhnd merged 2 commits into
previewfrom
chore/playwright-1.63.0

Conversation

@jasonhnd

@jasonhnd jasonhnd commented Sep 24, 2026 •

Copy link
Copy Markdown
Owner

Closes #646

Part of #635 (order 10). Base preview. Blocked-by order 9 is 43d1e3b8 (PR #658).

Edits mapped to やること

  1. Branch chore/playwright-1.63.0 from origin/preview 43d1e3b8 (order 9 merged). Bun 1.4.2 (1.4.2+744846f84) was already installed at /tmp/bun-1.4.2 and was prepended to PATH. Global Bun was not upgraded (bun upgrade was not run; ~/.bun was not written). Node v24.20.0. No PUBLIC_GA4_MEASUREMENT_ID / PUBLIC_X_PIXEL_ID / PUBLIC_META_PIXEL_ID for the CI-equivalent suite.
  2. package.json devDependencies["@playwright/test"]: "1.62.1" → "1.63.0" (exact, no caret). @axe-core/playwright stays "4.13.0". Commit 1d4ba5a9.
  3. bun install, then bun update @axe-core/playwright. See Lockfile.
  4. Browsers + suite below. bun x playwright test --reporter=line (no PUBLIC_*): 356 passed, 26 skipped, 0 failed. bun run test:e2e exited 1; see that section. Rendered-output assertions were not relaxed.
  5. No rendered-output spec failed under Chromium 153, so the preview re-run in step 5 was not triggered.
  6. Standard chain below, run after commit 1d4ba5a9 so git diff --exit-code is the generated-file check. bun run test:e2e rebuilds dist-astro/ with PUBLIC_GA4_MEASUREMENT_ID=G-E2E0000000, so that build was replaced with bun run build (the same command as step 4, PUBLIC_* unset) before REQUIRE_BUILT_ARTIFACTS and verify:gates. All listed commands exit 0. Results match the dry-run table.
  7. Docs in commit 1d4ba5a9:
    • docs/TOOLCHAIN.md §2 Playwright/axe row: **1.63.0** / **4.13.0** (Chromium 153).
    • CHANGELOG.md ### Changed: - **@playwright/test 1.62.1 → 1.63.0 (Chromium 153)**; playwright-core deduped to one 1.63.0. CI rendered-output suite unchanged: 356 passed.
    • docs/TOOLCHAIN.md §11 order 10: — done (#659). Follow-up commit 5968e1e2.

Lockfile

git diff --numstat 43d1e3b8 for commit 1d4ba5a9:

1	0	CHANGELOG.md
5	7	bun.lock
1	0	docs/TOOLCHAIN.md
1	1	package.json

package.json diff lines (git diff package.json | grep '^[-+] ' at the time of the bump, before the commit):

-    "@playwright/test": "1.62.1",
+    "@playwright/test": "1.63.0",

bun install (Bun 1.4.2, after the pin bump, before dedupe):

bun install v1.4.2 (744846f84)
Saved lockfile

+ @playwright/test@1.63.0

4 packages installed [34.00ms]

bun update @axe-core/playwright:

bun update v1.4.2 (744846f84)
Resolving dependencies
Resolved, downloaded and extracted [2]
Saved lockfile

1 package installed [116.00ms]

The lockfile was written by those two commands. It was not hand-edited. package.json axe pin stayed "4.13.0". lockfileVersion stays 1.

Lockfile greps (after dedupe)

grep -c '"playwright-core@' bun.lock
1

grep -n '"playwright-core": \["playwright-core@' bun.lock
734:    "playwright-core": ["playwright-core@1.63.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg=="],

grep -c '"playwright/playwright-core"' bun.lock
0

grep -n 'lockfileVersion' bun.lock
2:  "lockfileVersion": 1,

@playwright/test@1.63.0 depends on playwright@1.63.0, which depends on playwright-core@1.63.0. One playwright-core entry.

fsevents lines in the same lockfile diff

playwright@1.63.0 no longer declares optionalDependencies.fsevents. bun update rewrote the lockfile's fsevents entries along with the playwright dedupe:

  • root fsevents 2.3.2 → 2.3.3
  • nested vite/fsevents alias removed (that alias was already fsevents@2.3.3)

package.json does not name fsevents. The Issue's grep checks all match the dry-run table, so this was left as Bun wrote it.

Verification (Bun 1.4.2+744846f84, Node v24.20.0, macOS arm64)

bun x playwright --version

Version 1.63.0
exit=0

bun x playwright install chromium

Downloading Chrome for Testing 153.0.8010.12 (playwright chromium v1243) from https://cdn.playwright.dev/builds/cft/153.0.8010.12/mac-arm64/chrome-mac-arm64.zip
Chrome for Testing 153.0.8010.12 (playwright chromium v1243) downloaded to /Users/ms23m2/Library/Caches/ms-playwright/chromium-1243
Downloading Chrome Headless Shell 153.0.8010.12 (playwright chromium-headless-shell v1243) from https://cdn.playwright.dev/builds/cft/153.0.8010.12/mac-arm64/chrome-headless-shell-mac-arm64.zip
Chrome Headless Shell 153.0.8010.12 (playwright chromium-headless-shell v1243) downloaded to /Users/ms23m2/Library/Caches/ms-playwright/chromium_headless_shell-1243
exit=0

Node printed Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. Progress bars omitted.

bun run build (PUBLIC_* unset)

[check-lockfile-sync] OK — 13 deps match between package.json and bun.lock.
[check-analytics-config] OK — 6 script-src origins ok, 11 connect-src origins ok, 0 frame-src origins ok, 5 PUBLIC_* env vars documented.
[check-nested-html-comments] OK — scanned 71 files, no nested HTML comments.
00:50:00 [build] 844 page(s) built in 7.38s
00:50:00 [build] Complete!
[subset-fonts] 2 font files, serif=1102 sans=2399 unique codepoints, 302 KiB total
[check-geo-freshness] OK - GPT 6 SOL 2026-09-23, 556 occupations, mean=4.55
[check-rendered-leaks] OK — scanned 844 pages, no leaked tokens.
[compute-csp-hashes] OK — script-src/style-src already up to date (24 inline-script + 36 inline-style hash(es), 844 HTML files scanned).
exit=0

The 844 route lines are omitted. CSP hashes unchanged.

bun x playwright test --reporter=line

  26 skipped
  356 passed (21.8s)
exit=0

0 failed. Per-test lines omitted (382 listed: 356 passed + 26 skipped). This is the CI quality command. Counts match the dry-run table (356 passed / 26 skipped / 0 failed).

bun run test:e2e

scripts/run-e2e.sh ran bun install --frozen-lockfile (no changes), bun x playwright install --with-deps chromium (browser already present), then rebuilt with PUBLIC_GA4_MEASUREMENT_ID=G-E2E0000000 only. CSP hashes stayed 24 inline-script + 36 inline-style. git status after the run showed only the intended package.json / bun.lock edits (docs were not written yet).

  10 failed
  6 skipped
  366 passed (39.4s)
exit=1

All 10 failures are in tests/e2e/analytics.spec.ts:

  • analytics: … loads all tracker libraries on /, /sectors, /156, /rankings/ai-risk-low (mobile-chrome and desktop-chrome): Cloudflare Web Analytics beacon request was NOT made. Seen requests include gtag/js?id=G-E2E0000000 and /_vercel/insights/script.js. No static.cloudflareinsights.com/beacon.min.js.
  • X Ads: window.twq becomes a function with non-empty pixel ID (mobile-chrome and desktop-chrome): page.waitForFunction timeout 8000ms.

run-e2e.sh sets only the throwaway GA4 id. PUBLIC_CF_BEACON_TOKEN and PUBLIC_X_PIXEL_ID were unset, so BaseLayout.astro does not emit the Cloudflare beacon or the X twq snippet. The spec's file-level skip looks only for googletagmanager.com/gtag/js in dist-astro/sectors.html, so baking G-E2E0000000 un-skips the file and the other tracker assertions run. BaseLayout.astro, scripts/run-e2e.sh, and tests/e2e/analytics.spec.ts are unchanged versus origin/preview. This is the local PUBLIC_* failure mode the Issue describes. Assertions were not relaxed, thresholds were not raised, and no spec was skipped.

The CI-equivalent run above (no PUBLIC_*) skipped those cases and matches the dry-run counts. A second full e2e on origin/preview with Playwright 1.62.1 was not executed.

bun run typecheck

$ node node_modules/typescript/bin/tsc --noEmit
exit=0

bun run test

bun run test runs build:data then bun test. ETL completed (556 occupations).

bun test v1.4.2 (744846f84)

 1725 pass
 0 fail
Ran 1725 tests across 168 files. [4.68s]
exit=0

sector.test.ts prints two [og] sectors projection schema mismatch lines. Same pre-existing negative fixtures noted on #657; the run is 1725 pass / 0 fail.

REQUIRE_BUILT_ARTIFACTS=1 bun test scripts/home-css-loading.test.ts src/site/models-built.test.ts

Run after the clean bun run build (PUBLIC_* unset).

bun test v1.4.2 (744846f84)

 10 pass
 0 fail
Ran 10 tests across 2 files. [102.00ms]
exit=0

bun run verify:gates

[OK] projections pass L3 consistency checks
[check-geo-freshness] OK - GPT 6 SOL 2026-09-23, 556 occupations, mean=4.55
[check-model-redirects] OK - 12 bare model slug(s) redirect to their latest run
[check-analytics-spec] OK — 36 events / 46 params match analytics/spec.yaml (5 dynamic emit sites declared).
[check-architecture] no Edge entries — plane C is nodejs/Bun (TOOLCHAIN §9)
[check-architecture] ✓ all enforced layer boundaries respected
[check-doc-links] OK — 58 tracked Markdown files, 99 local link/image target(s)
[verify-occupation-routes] 556 occupations own 556 unique, indexable routes
✅ Internal-link integrity passed — every NEW href resolves; 0 pre-known broken targets remain (TODO).
✅ JSON-LD validation passed — all 843/844 pages structurally valid.
✓ URL set (urls.txt) — 844 URLs
✓ data file paths (data-files.txt) — 616 files
✓ sitemap.xml — 5002 lines
✓ image-sitemap.xml — 3897 lines
✓ SEO metadata (seo-metadata.jsonl) — 844 URLs compared
✓ OG / Twitter meta (og-meta.jsonl) — 844 URLs compared
✓ JSON-LD (json-ld.jsonl) — 844 URLs compared
✓ internal links + anchors (internal-links.jsonl) — 844 URLs compared
✅ SEO baseline clean — no drift.
[check-page-class] §18.7 class membership: OK
[check-design-sync] OK — Design.md §21.2 and design-tokens.ts agree
[check-type-scale] OK — every font-size on a conformant surface is a scale token (0 warning(s))
[check-heading-rules] OK — no conformant surface sets heading type (0 warning(s))
[check-surface-coverage] OK — every file carrying design declarations belongs to a surface
[check-contrast] OK — 33 role × background combinations satisfy §2.2
[check-role-color] OK — every checked role uses its §4.7 colour token (33 roles in the table, 0 warning(s))
[check-color-tokens] OK — no palette tint written raw, data URI colours on palette (98 off-palette colour(s) reported by drift:design)
[compute-csp-hashes] OK — script-src has 24 inline-script hash(es) and matches dist-astro/.
exit=0

bun audit

bun audit v1.4.2 (744846f84)

No vulnerabilities found (checked 438 packages) [163.00ms]
exit=0

git diff --exit-code

exit=0

No output. Working tree clean after the chain (no generated-file drift).

Not changed

  • playwright.config.ts, specs, and .github/workflows/ci.yml are untouched.
  • @axe-core/playwright stays "4.13.0". No caret was added.
  • No new 1.63 APIs (lock, visible(), step subtitle/params) were adopted.
  • This Issue lists no preview-URL curl. None was run.

Vercel

Read-only. vercel inspect and the deployment build log. No state-changing Vercel command.

  • 1d4ba5a9 (lockfile): GitHub status Deployment has completed → dpl_2dnrgRA19AmUvg5R8iFR9HCeyGvW. Status Ready. Preview alias: https://jobs-git-chore-playwright-1630-zkscio.vercel.app
  • Build log (bld_dgaphymmc, commit 1d4ba5a): bun install --frozen-lockfile, bun install v1.4.1 (4661e494f), + @playwright/test@1.63.0, [check-lockfile-sync] OK — 13 deps match between package.json and bun.lock., 1725 pass / 0 fail, Build Completed in /vercel/output [49s].
  • 5968e1e2 (§11 only): scripts/vercel-ignore-build.sh skipped the build (Canceled by Ignored Build Step, deployment GNa1ndrjSpxaoFhsJwMTqKPfMuav). That is the status on the PR head. It did not replace the deployment above.

Build-image Bun is 1.4.1, which matches TOOLCHAIN §2 (Vercel 1.4.x observed at 1.4.1). lockfileVersion 1 installed under --frozen-lockfile.

CI quality

Head run 36023910218 on 5968e1e2: job quality success. The earlier run on 1d4ba5a9 was cancelled by the workflow concurrency group when the §11 commit was pushed.

quality / "Run rendered-output checks (a11y, §4.2 floor, layout invariants)":

  26 skipped
  356 passed (2.2m)

0 failed. Same pass count as the local run and the dry-run table.

…wright-core

Dedupe playwright-core to a single 1.63.0. @axe-core/playwright stays 4.13.0.
Chromium for the rendered-output suite is 153.0.8010.12.

Refs #646
@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated
jobs Ignored Ignored Preview Sep 24, 2026 3:57pm UTC

Request Review

§11 order 10 now points at the PR that moves @playwright/test to 1.63.0.
@jasonhnd
jasonhnd merged commit 95ac84d into preview Sep 24, 2026
3 checks passed
@jasonhnd
jasonhnd deleted the chore/playwright-1.63.0 branch September 24, 2026 16:03
jasonhnd added a commit that referenced this pull request Sep 24, 2026
Order 10 (#659) landed on preview while this branch was open.
Keep both changelog lines and both §11 done marks (#659 and #660).
jasonhnd added a commit that referenced this pull request Sep 24, 2026
Orders 10 and 11 (#659, #660) landed on preview while this branch was open.
Keep preview's done (#659) and done (#660) and this branch's done (#661)
on §11. CHANGELOG keeps both sides' entries.

Refs #648
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