Skip to content

fix(e2e): match nav links and URLs as paths, not hashes - #584

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/keepiq-nav-selectors-history
Sep 1, 2026
Merged

fix(e2e): match nav links and URLs as paths, not hashes#584
rubenvdlinde merged 1 commit into
developmentfrom
fix/keepiq-nav-selectors-history

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Follow-up to #582, which turned E2E red on development. Three selectors and one URL assertion still described hash routing:

a[href$="#/"] the Dashboard nav entry
a[href$="#/lock"] the Lock vault entry (twice)
toHaveURL(/#\/lock$/) and /#\/(?!lock)/ after unlock

Under history routing those match nothing, so the nav assertions failed on "element(s) not found" rather than on anything about navigation.

Matched as suffixes rather than whole hrefs: Nextcloud serves the app as both /apps/keepiq/... and /index.php/apps/keepiq/..., and the link carries whichever base the page was loaded under, so pinning either would fail on the other for a reason that is not a defect. The existing comment already made that argument for the hash form; it now makes it for the path form.

The post-unlock assertion is inverted rather than retargeted: it asserts we left /lock instead of naming the destination, which varies with the returnUrl the gate captured.

Verified: no hash href selectors and no hash URL assertions remain in tests/; prettier --check on the full glob is clean.

Follow-up to #582, which turned E2E red on development. Three selectors
and one URL assertion still described hash routing:

  a[href$="#/"]      the Dashboard nav entry
  a[href$="#/lock"]  the Lock vault entry (twice)
  toHaveURL(/#\/lock$/)     and /#\/(?!lock)/ after unlock

Under history routing those match nothing, so the nav assertions failed
on 'element(s) not found' rather than on anything about navigation.

Matched as SUFFIXES rather than whole hrefs: Nextcloud serves the app as
both /apps/keepiq/... and /index.php/apps/keepiq/..., and the link
carries whichever base the page was loaded under, so pinning either would
fail on the other for a reason that is not a defect. The existing comment
already made that argument for the hash form; it now makes it for the
path form.

The post-unlock assertion is inverted rather than retargeted: it now
asserts we LEFT /lock instead of naming the destination, which varies
with the returnUrl the gate captured.

Verified: no hash href selectors and no hash URL assertions remain in
tests/; prettier --check on the full glob is clean.
@rubenvdlinde
rubenvdlinde merged commit f5577ff into development Sep 1, 2026
1 check passed
@rubenvdlinde
rubenvdlinde deleted the fix/keepiq-nav-selectors-history branch September 1, 2026 09:44
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/keepiq @ 692e10b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
format
check-l10n-js
check-schema-l10n
composer ✅ 111/111
npm ✅ 536/536
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-01 10:02 UTC

Download the full PDF report from the workflow artifacts.

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