Run both test suites on every pull request - #2
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
Testsworkflow running the browser app's 8 suites and the Python prototype's on every pull request, and on pushes tomain.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
mainpublishes straight to the live demo viapages.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
parity.mjsshells out topythonto regenerate its reference output fromedi_engineand 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.cancel-in-progress: true, unlikepages.yml. Nothing here deploys or publishes, so an abandoned run has no result worth waiting for.permissions: contents: readonly.pages.ymlalready 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.ymlhas been running free on every push tomain.Verification
node web/tests/all.mjsandpython -m unittestboth 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