devops: run the browser checks nightly - #71
Merged
Merged
Conversation
The e2e suite was local-only, so the one thing that proves the app renders and behaves — as opposed to generating the right HTML — never ran on a change unless someone remembered to run it. `check` boots the app but stops at the login page. Linux only and on its own job: the checks drive frankenphp and a headless chromium, not the native shell, so a second platform would re-run the same assertions at 10x, and a red e2e should read as a broken app rather than as a broken lint.
Per pull request was the wrong cadence: 15 checks, each booting a postgres, a server and a chromium, spent on every push to re-prove what the last run proved about code that mostly does not touch the UI. Once a night still catches a regression by the next morning, and the Actions tab has the button for when the answer is wanted now. Its own file rather than a job in build.yml, because nothing here shares a step with the packaging matrix and a schedule bolted onto that file would have every job in it carrying an `if:` to say which trigger it answers to. The one pull_request trigger left is `paths: [.github/workflows/e2e.yml]`: a nightly that has never run is a nightly nobody knows is broken, and the first honest run of it should not be at 21:30 with nobody watching.
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.
The e2e suite was local-only.
make checkboots the app but stops at the login page, so nothing in CI ever proved the app renders and behaves — the class of bugcurlcannot see, and the reason CLAUDE.md opens with "debug the running app, do not guess".A new
e2eworkflow, on its own:workflow_dispatchfor when the answer is wanted now.pull_requesttrigger left ispaths: [.github/workflows/e2e.yml]— a nightly that has never run is a nightly nobody knows is broken, so editing it runs it.timeout-minutes: 20, and screenshots upload as an artifact on failure — there is no other way to see what the page looked like on a runner nobody was watching.playwright install-depsis a separate step rather than part ofmise run install: that task runs on developer machines and this one installs with sudo apt. It is not decorative — the runner only carries the libraries its own Chrome needs, and the step installs the rest.Verified green on this branch in 2m01s, all 15 checks: https://github.com/landsman/adminer-desktop/actions/runs/30831009158
Fixed along the way, and unrelated to this file. Every workflow run had been failing at startup in 0s since ~14:40 UTC today —
build.ymlon themacos-codesignbranch too, before this branch existed. The cause was not a workflow file: the repository's Actions policy had been set tolocal_only, "allow only actions defined in this repository", which rejectsactions/checkoutand everything else before a job starts. It is now an allow-list — GitHub-owned actions, plusjdx/mise-action@*andlandsman/config/*(the reusable workflowclaude-mentions.ymlcalls). A new third-party action needs an explicit entry, which is the point.