Skip to content

Add RBAC integration spec: user + group creation, ACL membership - #39

Merged
tomchop merged 1 commit into
mainfrom
test/rbac-integration-spec
Aug 8, 2026
Merged

Add RBAC integration spec: user + group creation, ACL membership#39
tomchop merged 1 commit into
mainfrom
test/rbac-integration-spec

Conversation

@tomchop

@tomchop tomchop commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • New spec covering a feature area with zero prior coverage: users, groups, and ACLEdit. Creates a user and a group through the admin UI (/system/users, /system/groups), grants the user a Writer role on the group via ACLEdit's identity-select + role-select + "Update memberships" flow, and confirms it both in the UI and via a direct API check of the persisted ACL edge.
  • This exercises the exact code path behind the already-known Permission IntFlag schema mismatch (services/rbac.ts/services/users.ts widen the generated 1 | 2 | 4 type back to number to send composite role values like 3/7) -- the spec asserts the persisted role is exactly 3 (Writer), so a regression there would be caught.
  • README gains three new documented gotchas found while building this (all in Vuetify's overlay/select behavior, not app bugs):
    • getByLabel(X) can fuzzy-match a field's own append-icon aria-label ("X appended action") as well as the field itself
    • a v-combobox/v-select dropdown teleports outside its logical DOM container, same as the nested-dialog gotcha already documented -- query role="option" unscoped
    • a multi-select combobox's dropdown doesn't auto-close after picking one option, and can sit on top of what's below it until dismissed

Test plan

  • Spec run individually 4x in a row against a live dev stack -- all green
  • Full suite (14 specs) run together -- all green
  • npx tsc --noEmit on the playwright package -- clean
  • No leftover test data (verified via direct API search post-run)

… a role

Covers a feature area with zero prior coverage (users/groups/ACLEdit)
and exercises the exact code path behind the known Permission IntFlag
schema mismatch (services/rbac.ts, services/users.ts): creates a user
and a group through the admin UI, grants the user a Writer role on the
group via ACLEdit, and confirms it both in the UI and via a direct API
check of the persisted ACL edge's role value.

Also documents three new gotchas hit along the way (README): getByLabel
fuzzy-matching a field's own append-icon aria-label, a v-combobox/
v-select's dropdown menu teleporting outside its logical container same
as a nested dialog's content, and a multi-select combobox's dropdown
not auto-closing after picking an option.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011tXLywVq32tGPE7jCrdZVJ
@tomchop
tomchop merged commit 9c34007 into main Aug 8, 2026
1 check 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