test(e2e): the VTODO deep link serves the shell, it no longer redirects - #3337
Merged
Merged
Conversation
This block asserted 302/303 with Location containing '#/flow-tasks/<uuid>'. Both halves are gone: #3315 rewrote TaskController::open() to return a TemplateResponse serving the SPA shell directly, and #3270 had already moved the router off hash routing so that fragment addressed nothing. It survived both changes because the block SKIPS whenever the assignee has no VTODO-capable calendar, and CI's admin has none — 'No VTODO-supporting calendar found for user admin' shows up in the server logs. So it has been asserting a contract that stopped existing, without ever running to say so. Now asserts what open() actually does: 200, and the shell rather than an API payload or an error page. Filed as #3313 on the premise that the redirect pointed at a route that did not exist; the route (/flow-tasks/:uuid, flow-task-detail in src/main.js) exists now and the redirect is gone, so nothing is left to decide.
Contributor
Quality Report — ConductionNL/openregister @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| test-l10n-parity | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| check-l10n-js | ✅ | ||||
| composer | ✅ | ✅ 174/174 | |||
| npm | ✅ | ✅ 543/543 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ deferred — runs on the promotion into beta/main, not on a pull request into development | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-09-02 12:11 UTC
Download the full PDF report from the workflow artifacts.
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.
Closes #3313, which is stale in the good direction: both halves of what I filed have been fixed by other work, and what is left is a test asserting the old contract.
What changed under the issue
#3315("wire the fleet task inbox into the UI") rewroteTaskController::open()to return aTemplateResponseserving the SPA shell directly. There is no redirect any more./flow-tasks/:uuidexists, asflow-task-detailinsrc/main.js, described there as "the one stable address every VTODO URL and notification button carries".So the product question the issue was holding open — where a task should open — is answered in code.
The leftover
task-projections.spec.tsstill asserted the contract that went away:A redirect that no longer happens, to a hash fragment that
#3270stopped resolving when the router moved off hash routing.It survived both changes because it never runs. The block skips whenever the assignee has no VTODO-capable calendar, and CI's
adminhas none —No VTODO-supporting calendar found for user adminappears in the server logs. So it has been asserting a contract that stopped existing, without ever executing to say so.That is the same shape as a skip that cannot tell "not applicable on this instance" from "this is now wrong". The skip itself is right and stays; only the assertion behind it was stale.
Now
Asserts what
open()actually does: 200, and the shell rather than an API payload or an error page. Still meaningful on an instance that does have a calendar, and no longer describes a redirect that cannot occur.Verification
eslintclean;playwright test --listcollects the five tests in this file unchanged.