Skip to content

ci: smoke test helper against matrix of Etherpad versions#3

Merged
JohnMcLear merged 3 commits into
mainfrom
ci/cross-version-matrix
Apr 19, 2026
Merged

ci: smoke test helper against matrix of Etherpad versions#3
JohnMcLear merged 3 commits into
mainfrom
ci/cross-version-matrix

Conversation

@JohnMcLear

Copy link
Copy Markdown
Member

Summary

Follow-up to #2. Adds a GitHub Actions matrix that boots a real
Etherpad (released `v2.6.1` tag + `develop` tip) with this helper
plus a representative consumer (`ep_font_color`) installed, hits
`/p/`, and asserts the page renders (HTTP 200 + no `TypeError`
in the server log).

Why

Had this matrix existed in April 2026, the ether/etherpad#7543 CJS/ESM
interop regression would have been caught on the first PR to migrate
plugins onto `template({skip: () => settings.toolbar…})`. Instead it
propagated silently to every `ether/*` plugin and broke every Etherpad
user on `v2.5.x` / `v2.6.x` until a bug report landed days later.

Catching this class of regression at the helper layer is much cheaper
than waiting for each consumer plugin to run its own integration tests.

Matrix choice

  • `v2.6.1` — latest tagged release (carries the interop bug).
  • `develop` — has the #7421 compat shim; must stay green.

Two rungs is enough to cover "still works on released" and "hasn't
broken on unreleased". A third rung (say a prior major) is easy to
add later but doubles CI runtime for diminishing returns.

Dependency

Depends on #2 merging first. Against `v2.6.1` the matrix will
fail without that fix, because `v2.6.1` still has the core interop
bug and `ep_font_color`'s `skip()` predicate would throw.

Test plan

🤖 Generated with Claude Code

JohnMcLear and others added 3 commits April 19, 2026 12:19
Boot a real Etherpad (v2.6.1 released tag + develop tip) with this
helper + ep_font_color installed, hit /p/<id>, and assert HTTP 200 plus
a clean server log. Had we had this matrix in April 2026, the #7543
CJS/ESM interop regression would have been caught on the first PR to
migrate plugins onto template({skip: () => settings.toolbar…}) — instead
it propagated to every ether/* plugin and broke every Etherpad user on
v2.5.x / v2.6.x until a bug report came in days later.

Depends on #2 (the try/catch swallow of skip() throws) to pass against
v2.6.1, since v2.6.1 still has the core interop bug.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Etherpad installs plugins into src/plugin_packages/.versions/… via its
own pnpm workspace, not the standard node_modules/ tree. The version
sanity check was using Node's default resolver and failing with
'Cannot find module ./node_modules/ep_plugin_helpers/package.json'.

Find the package.json under src/plugin_packages/ instead, so the check
actually proves what it claims.
Two follow-ups after first real run against v2.6.1:

1. The log scan matched our own [WARN] line from the swallowed skip()
   throw, which is the *success* signal, not a crash. Pin the grep to
   [ERROR]-level entries so only genuine crashes fail the job.

2. Version equality between the locally-installed helper and the one
   pnpm resolved was brittle — pnpm can pull a transitive newer copy
   from npm and that is not a problem, as long as the pad still loads.
   Drop the hard check; keep it as informational output.
@JohnMcLear
JohnMcLear merged commit 9726707 into main Apr 19, 2026
4 checks passed
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