From 1c6a140ea7683e72e458007f7b918e6675f33b19 Mon Sep 17 00:00:00 2001 From: Markus Neusinger <2921697+MarkusNeusinger@users.noreply.github.com> Date: Fri, 23 Oct 2026 12:31:03 +0200 Subject: [PATCH 1/5] fix(js-render): bump Playwright to 1.64.1 for the Ubuntu 26.04 runner GitHub's ubuntu-latest label now resolves to Ubuntu 26.04 (image 20261012.163.1). Playwright 1.55.1 has no host-platform entry for it, so `npx playwright install --with-deps chromium` in the setup-node composite action failed with "Playwright does not support chromium on ubuntu26.04-x64", and every impl-generate and impl-repair run for the five JavaScript libraries died in its setup step. 1.64.1 carries the ubuntu26.04-x64 download paths and apt dependency list and installs Chromium 156 instead of 140. The lockfile change is playwright + playwright-core plus the darwin-only fsevents optional entry 1.64 no longer declares; esbuild stays at 0.28.1. This matches the playwright-core@1.64.1 pin site-smoke and ci-image already use. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza --- changelog.d/playwright-ubuntu-26.md | 9 +++++++ package-lock.json | 38 ++++++++--------------------- package.json | 2 +- 3 files changed, 20 insertions(+), 29 deletions(-) create mode 100644 changelog.d/playwright-ubuntu-26.md diff --git a/changelog.d/playwright-ubuntu-26.md b/changelog.d/playwright-ubuntu-26.md new file mode 100644 index 0000000000..d6a80baab4 --- /dev/null +++ b/changelog.d/playwright-ubuntu-26.md @@ -0,0 +1,9 @@ +### Fixed + +- **The JavaScript render harness installs again on the Ubuntu 26.04 runner + image.** GitHub moved `ubuntu-latest` to Ubuntu 26.04, and Playwright 1.55.1 + refused to install Chromium there, so every `impl-generate` and `impl-repair` + run for Chart.js, D3, ECharts, Highcharts and MUI X failed in its setup step. + Playwright moves to 1.64.1, which knows the new image and brings Chromium 156 + instead of 140; a sample of 17 catalogue snippets in both themes renders + pixel-identical to the 1.55.1 renders. diff --git a/package-lock.json b/package-lock.json index cd77b5323c..d647549c93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ }, "devDependencies": { "esbuild": "0.28.1", - "playwright": "1.55.1" + "playwright": "1.64.1" }, "engines": { "node": ">=22" @@ -1877,21 +1877,6 @@ "integrity": "sha512-Ia4qIYrrsEqIRx3c3XhkT+QDLQuUV5ovsr6ah1rIgKT5wclhoGK3lAMS1bWRAWxlx7wtlTBpV7QXB5d9fOSRxA==", "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -2113,35 +2098,32 @@ "license": "ISC" }, "node_modules/playwright": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.1.tgz", - "integrity": "sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==", + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.1.tgz", + "integrity": "sha512-HCrVhHr5QQuwYoswEUGTb7gGp522yflbv/ST8nF4sFWGuLjQCt17Q/EubpGGSNKYn1tsTCPZxqHhHCfVURu7UA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.55.1" + "playwright-core": "1.64.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" + "node": ">=20" } }, "node_modules/playwright-core": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.1.tgz", - "integrity": "sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==", + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz", + "integrity": "sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==", "dev": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/prop-types": { diff --git a/package.json b/package.json index c000d9a628..fea71fc594 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,6 @@ }, "devDependencies": { "esbuild": "0.28.1", - "playwright": "1.55.1" + "playwright": "1.64.1" } } From 779cfdc63f4b6e092d45f5e99b10217e378cb20e Mon Sep 17 00:00:00 2001 From: Markus Neusinger <2921697+MarkusNeusinger@users.noreply.github.com> Date: Fri, 23 Oct 2026 12:31:10 +0200 Subject: [PATCH 2/5] style(core): use the Python 3.14 except form ruff format now wants Since the move to Python 3.14 (#12247), ruff format rewrites a parenthesised multi-exception `except` to the PEP 758 unparenthesised form. The two tokenizer fallbacks from #12244 predate that and have kept "CI: Lint and Format Check" red on main since 10:16 UTC, which fails every open PR's lint job on its merge ref. Same semantics; the mirror file stays byte-identical to core/adaptability.py's block. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza --- automation/scripts/adaptability_check.py | 2 +- core/adaptability.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/automation/scripts/adaptability_check.py b/automation/scripts/adaptability_check.py index d843782f8d..1714342405 100644 --- a/automation/scripts/adaptability_check.py +++ b/automation/scripts/adaptability_check.py @@ -1207,7 +1207,7 @@ def _comments(source: str) -> list[tuple[int, int, str]]: for token in tokenize.generate_tokens(io.StringIO(source).readline): if token.type == tokenize.COMMENT: out.append((token.start[0], token.start[1], token.string)) - except (tokenize.TokenError, IndentationError, SyntaxError): + except tokenize.TokenError, IndentationError, SyntaxError: for number, line in enumerate(source.splitlines(), start=1): stripped = line.lstrip() if stripped.startswith("#"): diff --git a/core/adaptability.py b/core/adaptability.py index f4895fcaff..ec34cd3ab0 100644 --- a/core/adaptability.py +++ b/core/adaptability.py @@ -876,7 +876,7 @@ def _comments(source: str) -> list[tuple[int, int, str]]: for token in tokenize.generate_tokens(io.StringIO(source).readline): if token.type == tokenize.COMMENT: out.append((token.start[0], token.start[1], token.string)) - except (tokenize.TokenError, IndentationError, SyntaxError): + except tokenize.TokenError, IndentationError, SyntaxError: for number, line in enumerate(source.splitlines(), start=1): stripped = line.lstrip() if stripped.startswith("#"): From b0f65767add865a37add61272acc6c320ce7a913 Mon Sep 17 00:00:00 2001 From: Markus Neusinger <2921697+MarkusNeusinger@users.noreply.github.com> Date: Fri, 23 Oct 2026 12:31:36 +0200 Subject: [PATCH 3/5] docs(changelog): reference #12259 in the Playwright fragment Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza --- changelog.d/playwright-ubuntu-26.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/playwright-ubuntu-26.md b/changelog.d/playwright-ubuntu-26.md index d6a80baab4..5817ee49f4 100644 --- a/changelog.d/playwright-ubuntu-26.md +++ b/changelog.d/playwright-ubuntu-26.md @@ -6,4 +6,4 @@ run for Chart.js, D3, ECharts, Highcharts and MUI X failed in its setup step. Playwright moves to 1.64.1, which knows the new image and brings Chromium 156 instead of 140; a sample of 17 catalogue snippets in both themes renders - pixel-identical to the 1.55.1 renders. + pixel-identical to the 1.55.1 renders. (#12259) From f6eae123f856bcf8282770bb373f50e0185d33c4 Mon Sep 17 00:00:00 2001 From: Markus Neusinger <2921697+MarkusNeusinger@users.noreply.github.com> Date: Fri, 23 Oct 2026 12:36:09 +0200 Subject: [PATCH 4/5] docs(changelog): note the ruff format fix in the Playwright fragment Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza --- changelog.d/playwright-ubuntu-26.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/changelog.d/playwright-ubuntu-26.md b/changelog.d/playwright-ubuntu-26.md index 5817ee49f4..1ef00f2991 100644 --- a/changelog.d/playwright-ubuntu-26.md +++ b/changelog.d/playwright-ubuntu-26.md @@ -7,3 +7,9 @@ Playwright moves to 1.64.1, which knows the new image and brings Chromium 156 instead of 140; a sample of 17 catalogue snippets in both themes renders pixel-identical to the 1.55.1 renders. (#12259) +- **The lint job on `main` is green again after the move to Python 3.14.** + `ruff format` now writes a multi-exception `except` without parentheses + (PEP 758), and the two tokenizer fallbacks in `core/adaptability.py` and its + mirror `automation/scripts/adaptability_check.py` still used the old form, so + "CI: Lint and Format Check" failed on `main` and on every open PR's merge + ref. Both now use the new form, with unchanged behavior. (#12259) From 41739fc2493ec5278e7fcacabce329150b664f4e Mon Sep 17 00:00:00 2001 From: Markus Neusinger <2921697+MarkusNeusinger@users.noreply.github.com> Date: Fri, 23 Oct 2026 13:58:53 +0200 Subject: [PATCH 5/5] docs(changelog): drop the format-fix bullet, #12260 landed those lines Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza --- changelog.d/playwright-ubuntu-26.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/changelog.d/playwright-ubuntu-26.md b/changelog.d/playwright-ubuntu-26.md index 1ef00f2991..5817ee49f4 100644 --- a/changelog.d/playwright-ubuntu-26.md +++ b/changelog.d/playwright-ubuntu-26.md @@ -7,9 +7,3 @@ Playwright moves to 1.64.1, which knows the new image and brings Chromium 156 instead of 140; a sample of 17 catalogue snippets in both themes renders pixel-identical to the 1.55.1 renders. (#12259) -- **The lint job on `main` is green again after the move to Python 3.14.** - `ruff format` now writes a multi-exception `except` without parentheses - (PEP 758), and the two tokenizer fallbacks in `core/adaptability.py` and its - mirror `automation/scripts/adaptability_check.py` still used the old form, so - "CI: Lint and Format Check" failed on `main` and on every open PR's merge - ref. Both now use the new form, with unchanged behavior. (#12259)