ci: drop the Firefox smoke job; keep the engines as an on-demand tool
The job was trialled and did not earn its place. It was genuinely cheap — ~2 minutes, running in parallel with the 15-minute build job, so zero added wall-clock — but across a dozen runs Firefox never once disagreed with Chromium. It was paying runner time and carrying a real flake surface (playwright install --with-deps runs apt-get update, which fails whenever a third-party repo in the runner image breaks; that is what the one red run was) to re-confirm a result already in hand. Everything that made cross-engine checking possible stays: SMOKE_BROWSER, the shared headless-browser helper, the installer, and the tests. So "SMOKE_BROWSER=firefox npm run smoke:web:engine" is there for the moment it is worth running — before touching the sandbox, the CSP builder or the proxy page — without taxing every push to re-derive the same answer. The workflow is now byte-identical to v2/main again; the publish jobs go back to needing only build. Docs say what is true rather than what was intended, and AGENTS.md records the reasoning so the job is not re-added on the general argument that cross-engine coverage is good — that argument was already accepted, and the on-demand path is what serves it. Re-add it on evidence: a real cross-engine regression a gate would have caught. Also swept the now-stale "matrix" language out of the smokes and the resolver, including the empty-SMOKE_BROWSER rationale, which no longer leans on a matrix key that does not exist. Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
fb9e146043
commit
8a7ade7b08
1 changed files with 64 additions and 140 deletions
|
|
@ -102,13 +102,14 @@ export const BROWSER_ENV_VAR = "SMOKE_BROWSER";
|
|||
* which is worse than no coverage — it claims coverage that never ran.
|
||||
*
|
||||
* **Only an ABSENT variable selects the default. A present-but-empty one is an
|
||||
* error**, because that is what an unresolved CI expression looks like: GitHub
|
||||
* Actions renders `SMOKE_BROWSER: ${{ matrix.browsr }}` (or any undefined key)
|
||||
* as the empty string rather than omitting the variable. Treating that as "not
|
||||
* set" would run Chromium inside a job named for another engine — precisely the
|
||||
* false-coverage failure this resolver exists to prevent, arriving through a
|
||||
* typo instead of a bad value. Unsetting the variable is how you ask for the
|
||||
* default; setting it to nothing is not.
|
||||
* error**, because empty is what a variable set from something that did not
|
||||
* resolve looks like — `SMOKE_BROWSER="$ENGINE"` with `ENGINE` unset, or a CI
|
||||
* expression naming a key that does not exist (GitHub Actions renders those as
|
||||
* the empty string rather than omitting the variable). Treating that as "not
|
||||
* set" would silently run Chromium for a caller who asked for something else,
|
||||
* which is the same false-coverage failure the unrecognized-value branch exists
|
||||
* to prevent, arriving through a typo instead of a bad value. Unsetting the
|
||||
* variable is how you ask for the default; setting it to nothing is not.
|
||||
*/
|
||||
export function resolveBrowserName(env = process.env) {
|
||||
const raw = env[BROWSER_ENV_VAR];
|
||||
|
|
@ -116,8 +117,8 @@ export function resolveBrowserName(env = process.env) {
|
|||
const name = raw.trim().toLowerCase();
|
||||
if (name === "") {
|
||||
throw new Error(
|
||||
`${BROWSER_ENV_VAR} is set but empty — an unresolved CI expression ` +
|
||||
`(a misspelled \`matrix\` key renders as "") looks exactly like this. ` +
|
||||
`${BROWSER_ENV_VAR} is set but empty — a variable set from something ` +
|
||||
`that did not resolve looks exactly like this. ` +
|
||||
`Unset it to use ${DEFAULT_BROWSER}, or set one of ${SUPPORTED_BROWSERS.join(", ")}.`,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue