Skip to content

Run both test suites on every pull request - #2

Merged
IPerception merged 1 commit into
mainfrom
chore/ci-run-the-test-suites
Aug 15, 2026
Merged

Run both test suites on every pull request#2
IPerception merged 1 commit into
mainfrom
chore/ci-run-the-test-suites

Conversation

@IPerception

Copy link
Copy Markdown
Owner

Adds a Tests workflow running the browser app's 8 suites and the Python prototype's on every pull request, and on pushes to main.

Why

The suites have always been the evidence a change works — 625 assertions across the browser app, plus the Python prototype the parity suite compares against. But nothing ran them except whoever opened the branch. A merge to main publishes straight to the live demo via pages.yml, so until now the first automated thing to touch a change was the deploy.

The PACDR PR made that concrete: its only verification was a local test run reported in the PR body.

Notes on the shape of it

  • Both toolchains in one job, deliberately. parity.mjs shells out to python to regenerate its reference output from edi_engine and compare the JavaScript engine against it byte for byte. Splitting Node and Python into separate jobs would leave the suite that stops the port drifting unable to run at all.
  • No install step and no dependency cache. Neither suite has a dependency to install. That is the property worth keeping rather than a gap to paper over, and it is why the two run steps are one line each.
  • cancel-in-progress: true, unlike pages.yml. Nothing here deploys or publishes, so an abandoned run has no result worth waiting for.
  • permissions: contents: read only.
  • Action majors match what pages.yml already uses; Node 24 and Python 3.14 match the local toolchain the suites were verified against.

Cost

None. GitHub Actions bills private repositories; this one is public, which is the same reason pages.yml has been running free on every push to main.

Verification

node web/tests/all.mjs and python -m unittest both pass locally on this branch. This PR is itself the first real exercise of the workflow — its own checks are the test.

🤖 Generated with Claude Code

The suites have always been the evidence a change works, but nothing ran them
except whoever opened the branch -- and a merge to main publishes straight to
the live demo, so the first automated thing to touch a change was the deploy.

Both toolchains in one job on purpose: parity.mjs shells out to `python` to
regenerate its reference output from edi_engine and compare the JavaScript
engine against it byte for byte, so the Node suite cannot run without Python
present. No install step and no dependency cache -- neither suite has a
dependency, which is a property worth keeping rather than a gap to paper over.

Actions is free here: it bills private repositories, and this one is public.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@IPerception
IPerception merged commit 48edcf6 into main Aug 15, 2026
1 check passed
@IPerception
IPerception deleted the chore/ci-run-the-test-suites branch August 15, 2026 02:36
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