feat(graph): phase 3 graph view — Slice 6 (drawer pivots + axe ratchet + docs) - #587
Conversation
Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Automated approval for maintainer PR
All automated quality gates passed. See SECURITY_CONTROLS.md for compensating controls.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #587 +/- ##
=======================================
Coverage 69.26% 69.26%
=======================================
Files 32 32
Lines 3254 3254
=======================================
Hits 2254 2254
Misses 844 844
Partials 156 156
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Code Review
This pull request introduces a relationship graph view and integrates "View relationships" links into the user, group, and computer drawers. It also updates the documentation to reflect WCAG 2.2 Level AA compliance and adds a new E2E test suite using axe-core for accessibility verification. Feedback suggests renaming the test function to accurately reflect the AA compliance level and adjusting the graph icon's SVG properties to maintain visual consistency with existing project icons.
There was a problem hiding this comment.
Pull request overview
Completes the final slice of the Phase 3 relationship graph view by adding a “View relationships” entry point in entity drawers, introducing a dedicated axe-core E2E accessibility ratchet for graph pages, and documenting the graph view’s WCAG conformance in the README.
Changes:
- Adds a “View relationships” drawer pivot for users, groups, and computers that links to
/graph?entity=<DN>. - Introduces a new
iconGraphSVG for the drawer pivot. - Adds an E2E axe-core test covering
/graphand list-page?view=graphroutes, and updates README accessibility documentation accordingly.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/web/templates/users_v2.templ | Adds the “View relationships” drawer pivot for user drawers. |
| internal/web/templates/groups_v2.templ | Adds the “View relationships” drawer pivot for group drawers. |
| internal/web/templates/computers_v2.templ | Adds the “View relationships” drawer pivot for computer drawers. |
| internal/web/templates/icons.templ | Adds the new iconGraph() glyph used by the drawer pivots. |
| internal/e2e/axe_graph_test.go | Adds an axe-core E2E ratchet covering graph pages and graph list modes. |
| README.md | Documents WCAG 2.2 AA conformance for the graph view and references the new ratchet. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
There was a problem hiding this comment.
Automated approval for maintainer PR
All automated quality gates passed. See SECURITY_CONTROLS.md for compensating controls.
…e nested-interactive Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
There was a problem hiding this comment.
Automated approval for maintainer PR
All automated quality gates passed. See SECURITY_CONTROLS.md for compensating controls.
Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
There was a problem hiding this comment.
Automated approval for maintainer PR
All automated quality gates passed. See SECURITY_CONTROLS.md for compensating controls.
- iconGraph: use 16-viewBox + 1.5 stroke (matches project icon spec) - View relationships pivots: drop redundant aria-label that didn't match the visible text; rely on the visible "View relationships" span as the accessible name - users_v2 pivot: use vm.User.DN() (consistent with rest of file), not vm.User.User.DN() - TestAxeAAA_GraphPages -> TestAxeAA_GraphPages (matches the AA-only ruleset; AAA login ratchet stays separate in axe_test.go) Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
There was a problem hiding this comment.
Automated approval for maintainer PR
All automated quality gates passed. See SECURITY_CONTROLS.md for compensating controls.
Summary
Final slice of the Phase 3 relationship graph view. Adds the drawer entry point, the axe-core a11y ratchet, and the README conformance statement.
Plan:
docs/superpowers/plans/2026-04-24-phase-3-graph-view.mdTasks 35-40. Slices 1-5 already on main (#581 / #582 / #584 / #585 / #586).What ships
iconGraphSVG (4 nodes connected as a square). Links to/graph?entity=<DN>.internal/e2e/axe_graph_test.go(Task 37) — runs axe-core against/graph?entity=<seeded-DN>&depth=2,/users?view=graph,/groups?view=graph,/computers?view=graph. Uses the WCAG 2.2 AA ruleset (graph view's stated conformance level — the AAA login ratchet stays in place separately). Each subtest waits forsvg#graph-canvasso axe sees the JS-mutated DOM.Deferred
Tests
e2ebuild tag.Test plan
go build ./...— cleango build -tags e2e ./internal/e2e/...— cleango test ./... -count=1— all packages passgolangci-lint run ./...— 0 issuesList | Graphtoggle to switch backPhase 3 complete
This PR closes out the Phase 3 relationship graph view per spec
docs/superpowers/specs/2026-04-24-phase-3-graph-view-design.md. With this merged:BuildGraph(focusDN, depth)+BuildListGraph(users, computers)in-memory builders (Slice 1, Slice 5)/api/graph.json?entity=…&depth=…JSON endpoint with ETag/304/RFC 7232 (Slice 2)/graphHTML page with SSR SVG + edge table (Slice 3)v2-graph.jsinteractive client: pan/zoom, keyboard nav, click-to-pivot, click-to-expand, depth slider auto-submit, ARIA live announce (Slice 4)?view=graphlist-page mode for users/groups/computers withList | Graphsegmented toggle (Slice 5)