Skip to content

fix(e2e): the chrome tests assert the shell LaunchPad renders - #547

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/chrome-e2e-tests-the-shell-launchpad-renders
Sep 5, 2026
Merged

fix(e2e): the chrome tests assert the shell LaunchPad renders#547
rubenvdlinde merged 1 commit into
developmentfrom
fix/chrome-e2e-tests-the-shell-launchpad-renders

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

LaunchPad does not render CnAppNav, and that is deliberate. It does not root on CnAppRoot/NcContent; App.vue says so where it writes its own .workspace-shell — org navigation rail, slide-in sidebar, branded DashboardFooter, its own skip link.

Five tests asserted [data-testid="cn-nav"] and .cn-app-nav__footer-list anyway, from "feat(chrome): give launchpad a Store" (2026-09-04) onward. The E2E leg has been red on every push since — last green development run was 2026-09-03. The failure is a beforeEach waiting 30 s for a nav that cannot appear, reported as five broken features. The manifest got the Store entry; the shell never got the nav.

What the tests check now

The chrome is declared, and its destinations do work. So:

  • The four entries, in order, from the manifest — Documentation, Store, Reports, Features & roadmap — each with an icon, Documentation as an external href, and each of the other three naming a page this app hosts. Read from src/manifest.json rather than restated as literals, so a renamed or dropped entry fails instead of going quietly stale.
  • Each destination opens. A row that goes nowhere is precisely the failure mode a manifest gate cannot see, so the test navigates to /store, /reports and /features-roadmap and asserts the shell rendered and the router matched.
  • Reports, the dashboards report, Store and Flows are reached by route, which is how they are reachable in this app.

The tripwire

A new first test asserts the absence of CnAppNav. It is the premise the others rest on, and it is deliberate: if LaunchPad ever adopts CnAppRoot, that test fails where the reason is written down, instead of leaving four tests passing against chrome that has moved.

One assertion is dropped, not moved

The settings-foldout test loses its personal-settings assertion. That entry is a CnAppNav widget with no equivalent in .workspace-shell, so there is nothing here to assert about it — saying otherwise would be the same mistake in a new place. What survives is the part about LaunchPad rather than about the component: the admin settings section renders, and the Flows page opens.

Verified

prettier, eslint and playwright test --list are green; six tests collect. Every manifest assertion in the new test was dry-run against the real src/manifest.json and passes: four labels in order, all four icons present, Documentation an https:// href, and Store / Reports / FeaturesRoadmap resolving to /store, /reports and /features-roadmap.

The browser half runs on the development push, since the E2E leg is skipping on pull requests.

🤖 Generated with Claude Code

LaunchPad does not render CnAppNav, and that is deliberate: it does not
root on CnAppRoot/NcContent, and App.vue says so where it writes its own
`.workspace-shell` — org navigation rail, slide-in sidebar, branded
DashboardFooter, its own skip link.

Five tests asserted `[data-testid="cn-nav"]` and
`.cn-app-nav__footer-list` anyway, from "feat(chrome): give launchpad a
Store" (2026-09-04) onward. The E2E leg has been red on every push since:
a beforeEach waiting 30 s for a nav that cannot appear, reported as five
broken features. The manifest got the Store entry; the shell never got
the nav.

The chrome IS declared — Documentation, Store, Reports and Features &
roadmap, in the manifest's footer section — and its destinations do work.
So the tests check that instead: the four entries in order, each with an
icon, Documentation as an external href, and each of the other three
opening the page this app hosts. Read from the manifest rather than
restated, so a renamed entry fails rather than going stale. Reports, the
dashboards report, Store and Flows are reached by route, which is how
they are reachable here.

A new first test asserts the absence of CnAppNav. It is the premise the
others rest on, and it is the tripwire: if this app ever adopts
CnAppRoot, that fails where the reason is written down instead of leaving
four tests passing against chrome that moved.

The settings-foldout test drops its personal-settings assertion, because
that entry is a CnAppNav widget with no equivalent in this shell. What
survives is the part about LaunchPad rather than about the component: the
admin settings section and the Flows page open.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ 49e42fd

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
format
check-schema-l10n
composer ✅ 104/104
npm ✅ 527/527
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-05 13:44 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 7f89447 into development Sep 5, 2026
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant