You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/e2e/capabilities.md
+13-5Lines changed: 13 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,8 @@ Use disposable local data and create one custom role per scenario. Log out betwe
15
15
| Expected | Site and Media are reachable, Account is reachable, disallowed workspaces are hidden or denied without exposing their data. Direct disallowed URLs must not render the protected workspace. |
16
16
| Watch For | Stale nav items, route flashes before redirect, protected data in loading states, unclear denial copy. |
17
17
18
+
Automation note: `tests/e2e/users.e2e.ts` covers the limited Site + Media role path. It verifies Media is the only granted non-self workspace shown in the toolbar, Content and Users are absent, and direct `/admin/users` navigation redirects away without rendering the protected Users screen.
19
+
18
20
## CAP-002: Site Edit Mode Boundaries
19
21
20
22
| Field | Value |
@@ -37,24 +39,30 @@ Use disposable local data and create one custom role per scenario. Log out betwe
37
39
| Expected | The first attempt opens step-up, cancel leaves state unchanged, wrong password shows a clear error, correct password completes or reaches the action's normal validation. |
38
40
| Watch For | Actions completing before step-up, stale step-up windows across users, generic auth errors, partial side effects after cancel or wrong password. |
39
41
42
+
Automation note: `tests/e2e/capabilities.e2e.ts` covers plugin JSON-manifest install/uninstall and destructive CMS-bundle replace import step-up for cancel, wrong password, and correct password. Publish and user creation step-up are covered by the publishing, Users, and Account specs, including mobile user-create step-up dialog containment at 390px and MFA-enabled user-create step-up with wrong-code/no-mutation coverage.
43
+
40
44
## CAP-004: Data And Media Capability Splits
41
45
42
46
| Field | Value |
43
47
|---|---|
44
48
| Priority | P1 |
45
-
| Personas | Data reader, data manager, media reader, media writer, media replacer, media deleter |
49
+
| Personas | Data reader, data manager, data exporter, data importer, media reader, media writer, media replacer, media deleter |
46
50
| Setup | Seed a data table with rows and upload one media asset as Owner. Create one role for each listed persona. |
| Expected | Read personas can browse but not mutate. Write/manage personas see only the operations their capability grants. Replace and delete are not implied by upload/write. |
49
53
| Watch For | Hidden operations still reachable by direct URL, destructive media actions exposed to writers, data import/export buttons shown to table readers. |
50
54
55
+
Automation note: `tests/e2e/capabilities.e2e.ts` covers data reader, data manager, data exporter, data importer, content editor without row-move capability, content mover, media reader, media writer, media replacer, and media deleter personas. The automated data checks verify custom-table visibility, schema-only browsing without row-permission errors, table creation, import/export modal affordance boundaries, row-move controls hidden without `data.rows.move`, and a permitted content mover moving an entry between collections. The automated media checks verify read/write/replace/delete stay separate, replace can swap bytes without metadata/delete controls, and delete can trash/purge without upload/replace controls.
56
+
51
57
## CAP-005: Plugin And AI Capability Splits
52
58
53
59
| Field | Value |
54
60
|---|---|
55
61
| Priority | P1 |
56
-
| Personas | Plugin reader, plugin configurator, plugin lifecycle operator, AI chat user, AI provider manager, AI auditor |
62
+
| Personas | Plugin reader, plugin installer, plugin configurator, plugin lifecycle operator, AI chat user, AI provider manager, AI auditor |
57
63
| Setup | Install or seed a harmless test plugin if available. Configure an AI provider only when the run owns a disposable key or local provider. |
58
-
| Path | Check plugin list/settings/lifecycle actions per role. For AI, check provider settings, audit tab, conversation list, and chat-only tool behavior. |
59
-
| Expected | Plugin read/configure/lifecycle/install surfaces remain separate. AI chat users can open conversations but cannot access provider credentials or audit, and mutating tools are not presented. |
60
-
| Watch For | Masked settings leaking to read-only roles, lifecycle controls exposed to configurators, AI write actions available to chat-only users. |
64
+
| Path | Check plugin list/settings/lifecycle/schedule/pack actions per role. For AI, check provider settings, audit tab, conversation list, and chat-only tool behavior. |
65
+
| Expected | Plugin read/configure/lifecycle/install/schedule/pack surfaces remain separate. AI chat users can open conversations but cannot access provider credentials or audit, and mutating tools are not presented. |
66
+
| Watch For | Masked settings leaking to read-only roles, lifecycle controls exposed to configurators, schedule mutation controls exposed to readers, pack re-sync exposed without install capability, AI write actions available to chat-only users. |
67
+
68
+
Automation note: `tests/e2e/capabilities.e2e.ts` covers plugin reader vs installer upload/remove affordances, plugin configurators seeing Settings without install/lifecycle controls, plugin lifecycle operators seeing Disable without settings/install controls, installed-plugin schedule inspection without lifecycle mutation controls for readers, schedule mutation controls for lifecycle operators, pack re-sync visibility for installers only, site reader without `ai.chat` hiding the assistant rail, site reader with `ai.chat` opening the assistant panel, AI provider managers seeing Providers/Defaults without Audit, and AI auditors seeing Audit without provider/default controls. `tests/e2e/ai.e2e.ts` covers AI write-tool filtering by downgrading a credential-owning persona to `ai.chat` only before sending a Site assistant prompt, then asserting the fake-provider request includes read tools and omits mutating tools.
0 commit comments