diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b9676258..09f16ec6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -141,9 +141,10 @@ jobs: browser-engine-smokes: runs-on: ubuntu-latest strategy: - # Report every engine's verdict. Failing fast would hide a WebKit-only - # regression behind a Firefox-only one, which is the exact distinction - # this job exists to draw. + # Kept on despite the matrix currently holding one engine: the moment a + # second is added back (see below), failing fast would hide one engine's + # regression behind another's — which is the exact distinction this job + # exists to draw, so the flag should not have to be remembered then. fail-fast: false matrix: # `webkit` belongs here and is deliberately absent: the smokes RUN in it diff --git a/README.md b/README.md index 6e5280ce..1855cc20 100644 --- a/README.md +++ b/README.md @@ -479,7 +479,7 @@ SMOKE_BROWSER=webkit npm run smoke:web:app # one smoke, one engine SMOKE_BROWSER=firefox npm run smoke:web:engine # all three smokes, one engine ``` -Unset, the engine is `chromium` — so `npm run ci` and `npm run smoke` are unchanged. CI runs Chromium inside the `build` job's `npm run smoke` and the remaining engines in a separate `Sandbox smokes ()` matrix job, rather than running the whole `build` job once per engine (validate, the coverage gate, the two verify gates and Storybook are all engine-independent). An unrecognized value is an error, not a fallback: a silent fallback would report a green Chromium run under a job labelled `webkit`. A missing browser binary fails naming the engine and its `npx playwright install --with-deps `. +Unset, the engine is `chromium` — so `npm run ci` and `npm run smoke` are unchanged. CI runs Chromium inside the `build` job's `npm run smoke`, and every other gated engine in a separate `Sandbox smokes ()` matrix job — today that matrix holds **Firefox alone**; see the paragraph below for where WebKit stands. Splitting it that way, rather than running the whole `build` job once per engine, is deliberate: validate, the coverage gate, the two verify gates and Storybook are all engine-independent. An unrecognized value is an error, not a fallback: a silent fallback would report a green Chromium run under a job labelled `webkit`. A missing browser binary fails naming the engine and its `npx playwright install --with-deps `. **CI green today: Chromium and Firefox.** WebKit is supported by the tooling and worth running locally, but it is **not yet in the CI matrix** — the two App smokes fail there on a real, pre-existing Safari incompatibility in the web client's SSE transport, tracked with its diagnosis and a verified fix in [#2132](https://github.com/modelcontextprotocol/inspector/issues/2132). That is the matrix doing its job on its first outing: the bug affects the shipped web UI in Safari, and every Chromium-only tier had been green through it. An engine is either green in CI or absent from it — a `continue-on-error` job would report coverage nobody is held to.