ci(quality): let an app declare the Playwright front-controller preflight URL - #141
ci(quality): let an app declare the Playwright front-controller preflight URL#141rubenvdlinde wants to merge 1 commit into
Conversation
…ight URL The preflight probes /apps/<app-name>/ and treats HTTP 404 as proof the php -S front controller is not routing pretty URLs. That inference only holds for an app that actually serves a main page. nldesign does not. Its routes.php declares only /api/* and /settings/*, and info.xml declares <settings> with no <navigation> - it is an admin-settings-only theming app. /apps/nldesign/ is therefore a CORRECT 404, and the preflight reported it as a broken front controller and exited 1 before a single spec ran. Add playwright-preflight-path so such an app can name a URL it really serves. The default is empty and falls back to /apps/<app-name>/, so every existing caller probes exactly what it probed before - this cannot change behaviour for any repo that does not set it. Also point the failure message at the new input. The OCS entry-point check below is untouched and remains the load-bearing proof that the router itself works.
|
Independent confirmation from tonight's fleet sweep: this is the sole remaining blocker on ConductionNL/nldesign#206, and the diagnosis here is correct. Re-verified against the current run (nldesign 30879432992): Checked against nldesign's I also read the diff rather than taking the description's word for it. The behaviour claim holds: the input defaults to empty, empty falls back to Not merging it, per your note that One incidental note in case it is useful for the same file later: nldesign only reaches the 404 at all because #206 installs OpenRegister via |
|
Closing as superseded by #145, which merged at 09:57 today and fixes the same failure more generally. Both PRs target the same bug: the Playwright job proved the The difference is where the fix sits:
With #145 in place the input this PR adds would be dead config — no caller needs it. That is also why the branch shows a conflict: both edit the same preflight block. No work is lost by closing this; the branch stays on the remote. |
Problem
The Playwright job's preflight probes
/apps/<app-name>/and treats HTTP 404 as proof that thephp -Sfront controller is not routing pretty URLs:That inference is only valid for an app that actually serves a main page.
nldesign does not. Its
appinfo/routes.phpdeclares only/api/*and/settings/*routes, and itsappinfo/info.xmldeclares a<settings>section with no<navigation>— it is an admin-settings-only theming app./apps/nldesign/is a correct 404. The preflight read that correct 404 as a broken front controller and exited 1 before a single spec ran, so enabling e2e on nldesign could never produce a verdict.Observed live on ConductionNL/nldesign#206.
Change
Adds one input,
playwright-preflight-path./apps/<app-name>/.The failure message now also names the input, so the next app to hit this reads the actual cause instead of investigating a router that is working fine.
The OCS entry-point check immediately below is untouched. That check —
/ocs/v2.php/cloud/userreturning 401 (reachedocs/v2.php) versus 404 (swallowed intoindex.php) — remains the load-bearing proof that the router itself is functioning, and it is not weakened or made optional here. An app overriding the pretty-URL path still has to pass it.Verification
Fallback semantics checked directly:
""(default)/apps/<app-name>//settings/admin/nldesign/settings/admin/nldesignYAML parses; input count 41;
playwright-test-pathand every other default unchanged. The diff againstmainis exactly two hunks.Note on concurrency
This branch was rebased onto current
mainbefore pushing. An earlier attempt was based on themainI read at the start of the session and would have silently reverted #140 ("stop a phpmd finding from silently deleting the PHPUnit signal") — acontentsPUT overwrites the whole file, so a stale base reverts anything that landed meanwhile without any conflict being reported. Verified after rebase: #140's change is intact on this branch.Blocking
ConductionNL/nldesign#206 cannot get an E2E verdict until this lands, since callers reference
quality.yml@main.Not self-merging — this workflow is consumed by ~30 repos and
mainis left to a human.