Skip to content

Move wp-env to 11.17 so the Screenshots workflow can start WordPress - #47

Merged
Hackshaven merged 2 commits into
mainfrom
claude/bold-pasteur-nu2yrt
Oct 14, 2026
Merged

Hackshaven merged 2 commits into
mainfrom
claude/bold-pasteur-nu2yrt

Conversation

@Hackshaven

@Hackshaven Hackshaven commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Summary

The Screenshots workflow currently fails on every PR at Start WordPress (wp-env), for example run 38628335733 on #46 and run 38629751015 on #45. Building the PHP 7.4 image runs apt-get install against bullseye-security, which now returns 404 because Debian 11 reached end-of-life and its security packages left the regular mirrors. wp-env 10 only redirects stretch and buster to archive.debian.org. wp-env 11.15+ also points bullseye at the archive and drops the bullseye -security and -updates suites (WordPress/gutenberg#82478).

Changes

  • @wordpress/env ^10.0.0 → ^11.17.0. The lockfile changes only inside wp-env's own dependencies: 44 entries, all hoisted from @wordpress/env or @wp-playground/cli. wp-env no longer pulls in extract-zip 1.7.0. The extract-zip alerts stay open because @puppeteer/browsers still pulls in 2.0.1.
  • Override "@wordpress/env": "$@wordpress/env". @wordpress/scripts 30 declares an optional peer dependency on wp-env ^10, which npm ci rejects with ERESOLVE. The override points that peer at the root's version. wp-scripts 32+ accepts >=10, but it brings @wordpress/eslint-plugin 25, the upgrade that breaks lint:js, so wp-scripts stays on 30. The comment:overrides note explains this entry.
  • .wp-env.json pins "port": 8888. wp-env 11 defaults to null and falls back to a random port when 8888 is busy. Playwright (playwright.config.js), the E2E global setup and the README all expect 8888, so the explicit port turns a busy port into a loud failure instead of a silent mismatch.
  • The Screenshots workflow also triggers on package.json, package-lock.json and .wp-env.json. Dependency and environment changes can break the capture or move baselines just as code changes can. Before this, Patch 48 of the 52 open npm Dependabot advisories #45 never ran the workflow at all. This PR runs it.
  • The dashboard-publisher baseline is refreshed, along with .wordpress-org/screenshot-6.png. With WordPress starting again, the first run passed 11 of 12 shots. In the exception, the "No service token" warning renders 7px taller (86 → 93px): it's @wordpress/components' <Notice>, supplied by WordPress core at runtime, which WordPress 7.1 restyled as a rounded, bordered box. The E2E site runs the latest WordPress ("core": null; the trace shows 7.1.3), so this is WordPress core changing since the July baselines, not plugin code. Both images come from the CI Linux runner (run 38633567767): Playwright's own actual image and the gallery's listing copy, which are pixel-identical. The three mobile shots the advisory report flags (about 0.11%) stay well under the 0.02 gate and are left alone.

wp-env 11's other breaking changes don't affect this repo:

  • pretty permalinks are on by default, and the E2E /?page_id= URLs redirect;
  • install-path became status, and nothing here calls it;
  • the removed WP_ENV_MULTISITE setting was never used.

Testing

  • CI is green, including Screenshots: run 38634589073 starts WordPress with wp-env 11 and passes all 12 shots. That run also covers the @simple-git/argv-parser override, through wp-env start cloning WordPress's PHPUnit suite.
  • npm ci resolves on the new lockfile. Without the override it fails with ERESOLVE.
  • npm run build: all 23 build/ files have the same sha256 as on main.
  • npm run lint:js passes. Playwright stays at 1.61.1.
  • npm audit: no new advisories.
  • wp-env 11's config loader accepts .wp-env.json with the CI override merged in: port 8888, tests port 8889, PHP 7.4, the mu-plugins mapping and TERRAVIZ_E2E.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GTtKLAZWx1G9Cc9u6VW8zS

`wp-env start` fails on every PR: building the PHP 7.4 image runs
`apt-get install` against bullseye-security, which now returns 404
because Debian 11 reached end-of-life and its security packages left the
regular mirrors. wp-env 10 only redirects stretch and buster to
archive.debian.org. wp-env 11.15+ also points bullseye at the archive
and drops the bullseye-security and -updates suites
(WordPress/gutenberg#82478).

- @wordpress/env ^10.0.0 -> ^11.17.0. The lockfile changes only inside
  wp-env's own dependencies (44 entries, all hoisted from @wordpress/env
  or @wp-playground/cli). This also drops wp-env's extract-zip 1.7.0;
  the extract-zip alerts stay open because @puppeteer/browsers still
  pulls in 2.0.1.
- `"@wordpress/env": "$@wordpress/env"` override: @wordpress/scripts 30
  declares an optional peer of ^10, which `npm ci` rejects (ERESOLVE).
  The override points that peer at the root's version. wp-scripts 32+
  accepts >=10 but brings @wordpress/eslint-plugin 25, the upgrade that
  breaks lint:js, so it stays on 30.
- .wp-env.json pins "port": 8888. wp-env 11 defaults to null and falls
  back to a random port when 8888 is busy. Playwright, the E2E global
  setup and the README all expect 8888, so an explicit port keeps a busy
  port a loud failure instead of a silent mismatch.
- The Screenshots workflow now also triggers on package.json,
  package-lock.json and .wp-env.json, so dependency and environment
  changes, this one included, run it.

wp-env 11's other breaking changes don't affect this repo. Pretty
permalinks are on by default, and the E2E `/?page_id=` URLs redirect.
`install-path` became `status`, and nothing here calls it.

Verified locally (no Docker here): `npm ci` resolves; build output is
byte-identical to main (sha256, 23 files); lint:js passes; Playwright
is unchanged at 1.61.1; npm audit is unchanged. wp-env 11's config
loader accepts .wp-env.json with CI's override merged in (port 8888,
tests 8889, PHP 7.4, mu-plugins mapping, TERRAVIZ_E2E). wp-env 11's own
downloadGitSource and downloadWPPHPUnit work with the
@simple-git/argv-parser 2 override, including a real wordpress-develop
sparse clone at 6.8.0. This PR's Screenshots run is the Docker check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTtKLAZWx1G9Cc9u6VW8zS
Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

🖼️ Visual report

12 shot(s) · 2 viewport(s) (desktop, mobile) · 3 with changes

Regression: 3 shot(s) changed, 0 new (no baseline), threshold 0.001.

Scene Viewport Change
Dataset block mobile 0.11% (154 px)
Right-Now Hero block mobile 0.11% (165 px)
Tour block mobile 0.12% (165 px)
All 12 shot(s)
Scene Viewport Change
Catalog block desktop —
Catalog block mobile —
Dataset block desktop —
Dataset block mobile 0.11% (154 px)
Right-Now Hero block desktop —
Right-Now Hero block mobile 0.11% (165 px)
Related Datasets rail desktop —
Related Datasets rail mobile —
Tour block desktop —
Tour block mobile 0.12% (165 px)
Publisher dashboard desktop —
Settings screen desktop —

Full gallery (actuals + .diff.png overlays) → the screenshots-gallery artifact on the Screenshots run.

Advisory — the Screenshots workflow is kept out of the core CI gate, so this never blocks a merge. Visual review only.

With wp-env starting again, the Screenshots run passes 11 of 12 shots.
The exception is dashboard-publisher: the page's .wrap renders 1078x93
instead of 1078x86, with 6% of pixels changed. The only difference is
the "No Terraviz service token" warning. It's a @wordpress/components
<Notice>, which WordPress core supplies at runtime (the plugin build
doesn't bundle it, and its output is byte-identical to main). WordPress
7.1 restyles it from a left-bar notice into a rounded, bordered box
with more padding.

The E2E site runs whatever WordPress is latest ("core": null; the
Playwright trace shows 7.1.3), so this is WordPress core moving on since
the July baselines, not this PR's code.

Both images come from the CI Linux runner (run 38633567767), as
tests/e2e/README requires:
- tests/e2e/__snapshots__/dashboard-publisher.png: Playwright's own
  -actual.png from the failed comparison.
- .wordpress-org/screenshot-6.png: the same shot's listing copy from the
  screenshots-gallery artifact. It was pixel-identical to the old
  baseline and is pixel-identical to the new one.

The three mobile shots the advisory report flags (about 0.11%) stay well
under the 0.02 gate and are left alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTtKLAZWx1G9Cc9u6VW8zS
Signed-off-by: Claude <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No unresolved issues remain, and the linked Screenshots workflow completed successfully.

0 open findings

What changed in this PR

Restores WordPress startup for the plugin’s screenshot and visual-regression workflow.

Changes:

  • Upgrades wp-env to 11.17 and resolves its wp-scripts peer dependency conflict.
  • Pins port 8888 and triggers screenshots on dependency and environment changes.
  • Documents the recovery and refreshed publisher-dashboard images.
File Description
package.json Upgrades wp-env and adds the peer override.
package-lock.json Locks updated wp-env dependencies.
CHANGELOG.md Documents workflow recovery and baseline refresh.
.wp-env.json Pins WordPress to port 8888.
.github/​workflows/​screenshots.yml Expands dependency and environment triggers.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@Hackshaven
Hackshaven merged commit f645e29 into main Oct 14, 2026
13 checks passed
@Hackshaven
Hackshaven deleted the claude/bold-pasteur-nu2yrt branch October 14, 2026 21:07
Hackshaven pushed a commit that referenced this pull request Oct 14, 2026
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MKEqjkVyUQiZZL7QTk9m64
Signed-off-by: Claude <noreply@anthropic.com>
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.

3 participants