@nextsparkjs/theme-default 0.1.0-beta.20 → 0.1.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/package.json +1 -1
  2. package/tests/cypress/e2e/_devtools/access.bdd.md +262 -0
  3. package/tests/cypress/e2e/_devtools/access.cy.ts +171 -0
  4. package/tests/cypress/e2e/_devtools/navigation.bdd.md +261 -0
  5. package/tests/cypress/e2e/_devtools/navigation.cy.ts +157 -0
  6. package/tests/cypress/e2e/_devtools/pages.bdd.md +303 -0
  7. package/tests/cypress/e2e/_devtools/pages.cy.ts +184 -0
  8. package/tests/cypress/e2e/_docs/README.md +215 -0
  9. package/tests/cypress/e2e/_docs/tutorials/sector7-superadmin-teams.narration.json +155 -0
  10. package/tests/cypress/e2e/_docs/tutorials/sector7-superadmin.cy.ts +390 -0
  11. package/tests/cypress/e2e/_docs/tutorials/teams-system.doc.cy.ts +349 -0
  12. package/tests/cypress/e2e/_docs/tutorials/teams-system.narration.json +165 -0
  13. package/tests/cypress/e2e/_selectors/auth.cy.ts +306 -0
  14. package/tests/cypress/e2e/_selectors/billing.cy.ts +89 -0
  15. package/tests/cypress/e2e/_selectors/dashboard-mobile.cy.ts +113 -0
  16. package/tests/cypress/e2e/_selectors/dashboard-navigation.cy.ts +89 -0
  17. package/tests/cypress/e2e/_selectors/dashboard-sidebar.cy.ts +60 -0
  18. package/tests/cypress/e2e/_selectors/dashboard-topnav.cy.ts +146 -0
  19. package/tests/cypress/e2e/_selectors/devtools.cy.ts +210 -0
  20. package/tests/cypress/e2e/_selectors/global-search.cy.ts +88 -0
  21. package/tests/cypress/e2e/_selectors/pages-editor.cy.ts +179 -0
  22. package/tests/cypress/e2e/_selectors/posts-editor.cy.ts +282 -0
  23. package/tests/cypress/e2e/_selectors/public.cy.ts +112 -0
  24. package/tests/cypress/e2e/_selectors/settings-api-keys.cy.ts +228 -0
  25. package/tests/cypress/e2e/_selectors/settings-billing.cy.ts +105 -0
  26. package/tests/cypress/e2e/_selectors/settings-layout.cy.ts +119 -0
  27. package/tests/cypress/e2e/_selectors/settings-password.cy.ts +71 -0
  28. package/tests/cypress/e2e/_selectors/settings-profile.cy.ts +82 -0
  29. package/tests/cypress/e2e/_selectors/settings-teams.cy.ts +68 -0
  30. package/tests/cypress/e2e/_selectors/superadmin.cy.ts +185 -0
  31. package/tests/cypress/e2e/_selectors/tasks.cy.ts +242 -0
  32. package/tests/cypress/e2e/_selectors/taxonomies.cy.ts +126 -0
  33. package/tests/cypress/e2e/_selectors/teams.cy.ts +142 -0
  34. package/tests/cypress/e2e/_superadmin/all-teams.bdd.md +261 -0
  35. package/tests/cypress/e2e/_superadmin/all-teams.cy.ts +177 -0
  36. package/tests/cypress/e2e/_superadmin/all-users.bdd.md +406 -0
  37. package/tests/cypress/e2e/_superadmin/all-users.cy.ts +294 -0
  38. package/tests/cypress/e2e/_superadmin/dashboard.bdd.md +235 -0
  39. package/tests/cypress/e2e/_superadmin/dashboard.cy.ts +149 -0
  40. package/tests/cypress/e2e/_superadmin/subscriptions-overview.bdd.md +290 -0
  41. package/tests/cypress/e2e/_superadmin/subscriptions-overview.cy.ts +194 -0
  42. package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
  43. package/tests/cypress/e2e/ai/chat-api.cy.ts +107 -0
  44. package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
  45. package/tests/cypress/e2e/api/billing/BillingAPIController.js +319 -0
  46. package/tests/cypress/e2e/api/billing/check-action.cy.ts +326 -0
  47. package/tests/cypress/e2e/api/billing/checkout.cy.ts +358 -0
  48. package/tests/cypress/e2e/api/billing/lifecycle.cy.ts +423 -0
  49. package/tests/cypress/e2e/api/billing/plans/README.md +345 -0
  50. package/tests/cypress/e2e/api/billing/plans/business.cy.ts +412 -0
  51. package/tests/cypress/e2e/api/billing/plans/downgrade.cy.ts +510 -0
  52. package/tests/cypress/e2e/api/billing/plans/fixtures/billing-plans.json +163 -0
  53. package/tests/cypress/e2e/api/billing/plans/free.cy.ts +500 -0
  54. package/tests/cypress/e2e/api/billing/plans/pro.cy.ts +497 -0
  55. package/tests/cypress/e2e/api/billing/plans/starter.cy.ts +342 -0
  56. package/tests/cypress/e2e/api/billing/portal.cy.ts +313 -0
  57. package/tests/cypress/e2e/api/devtools/registries.bdd.md +300 -0
  58. package/tests/cypress/e2e/api/devtools/registries.cy.ts +368 -0
  59. package/tests/cypress/e2e/api/entities/blocks-scope.cy.ts +396 -0
  60. package/tests/cypress/e2e/api/entities/customers-crud.cy.ts +648 -0
  61. package/tests/cypress/e2e/api/entities/customers-metas.cy.ts +839 -0
  62. package/tests/cypress/e2e/api/entities/pages-crud.cy.ts +425 -0
  63. package/tests/cypress/e2e/api/entities/pages-status.cy.ts +335 -0
  64. package/tests/cypress/e2e/api/entities/post-categories-crud.cy.ts +610 -0
  65. package/tests/cypress/e2e/api/entities/posts-crud.cy.ts +709 -0
  66. package/tests/cypress/e2e/api/entities/posts-status.cy.ts +396 -0
  67. package/tests/cypress/e2e/api/entities/tasks-crud.cy.ts +602 -0
  68. package/tests/cypress/e2e/api/entities/tasks-metas.cy.ts +878 -0
  69. package/tests/cypress/e2e/api/entities/users-crud.cy.ts +469 -0
  70. package/tests/cypress/e2e/api/entities/users-metas.cy.ts +913 -0
  71. package/tests/cypress/e2e/api/entities/users-security.cy.ts +375 -0
  72. package/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.bdd.md +375 -0
  73. package/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.cy.ts +346 -0
  74. package/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.bdd.md +451 -0
  75. package/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.cy.ts +447 -0
  76. package/tests/cypress/e2e/api/scheduled-actions/scheduling.bdd.md +649 -0
  77. package/tests/cypress/e2e/api/scheduled-actions/scheduling.cy.ts +333 -0
  78. package/tests/cypress/e2e/api/settings/api-keys.crud.cy.ts +923 -0
  79. package/tests/cypress/e2e/uat/auth/app-roles/developer-login.bdd.md +231 -0
  80. package/tests/cypress/e2e/uat/auth/app-roles/developer-login.cy.ts +144 -0
  81. package/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.bdd.md +118 -0
  82. package/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.cy.ts +84 -0
  83. package/tests/cypress/e2e/uat/auth/custom-roles/editor-login.bdd.md +288 -0
  84. package/tests/cypress/e2e/uat/auth/custom-roles/editor-login.cy.ts +188 -0
  85. package/tests/cypress/e2e/uat/auth/login-logout.bdd.md +160 -0
  86. package/tests/cypress/e2e/uat/auth/login-logout.cy.ts +116 -0
  87. package/tests/cypress/e2e/uat/auth/password-reset.bdd.md +289 -0
  88. package/tests/cypress/e2e/uat/auth/password-reset.cy.ts +200 -0
  89. package/tests/cypress/e2e/uat/auth/team-roles/admin-login.bdd.md +225 -0
  90. package/tests/cypress/e2e/uat/auth/team-roles/admin-login.cy.ts +148 -0
  91. package/tests/cypress/e2e/uat/auth/team-roles/member-login.bdd.md +251 -0
  92. package/tests/cypress/e2e/uat/auth/team-roles/member-login.cy.ts +163 -0
  93. package/tests/cypress/e2e/uat/auth/team-roles/owner-login.bdd.md +231 -0
  94. package/tests/cypress/e2e/uat/auth/team-roles/owner-login.cy.ts +141 -0
  95. package/tests/cypress/e2e/uat/billing/extended.bdd.md +273 -0
  96. package/tests/cypress/e2e/uat/billing/extended.cy.ts +209 -0
  97. package/tests/cypress/e2e/uat/billing/feature-gates.bdd.md +407 -0
  98. package/tests/cypress/e2e/uat/billing/feature-gates.cy.ts +307 -0
  99. package/tests/cypress/e2e/uat/billing/page.bdd.md +329 -0
  100. package/tests/cypress/e2e/uat/billing/page.cy.ts +250 -0
  101. package/tests/cypress/e2e/uat/billing/status.bdd.md +190 -0
  102. package/tests/cypress/e2e/uat/billing/status.cy.ts +145 -0
  103. package/tests/cypress/e2e/uat/billing/team-switch.bdd.md +156 -0
  104. package/tests/cypress/e2e/uat/billing/team-switch.cy.ts +122 -0
  105. package/tests/cypress/e2e/uat/billing/usage.bdd.md +218 -0
  106. package/tests/cypress/e2e/uat/billing/usage.cy.ts +176 -0
  107. package/tests/cypress/e2e/uat/blocks/hero.bdd.md +124 -0
  108. package/tests/cypress/e2e/uat/blocks/hero.cy.ts +56 -0
  109. package/tests/cypress/e2e/uat/devtools/api-tester.cy.ts +390 -0
  110. package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
  111. package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
  112. package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
  113. package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
  114. package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
  115. package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
  116. package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
  117. package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
  118. package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
  119. package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
  120. package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
  121. package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
  122. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
  123. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
  124. package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
  125. package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
  126. package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
  127. package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
  128. package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
  129. package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
  130. package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
  131. package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
  132. package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
  133. package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
  134. package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
  135. package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
  136. package/tests/cypress/e2e/uat/roles/editor-role.bdd.md +552 -0
  137. package/tests/cypress/e2e/uat/roles/editor-role.cy.ts +210 -0
  138. package/tests/cypress/e2e/uat/roles/member-restrictions.bdd.md +450 -0
  139. package/tests/cypress/e2e/uat/roles/member-restrictions.cy.ts +189 -0
  140. package/tests/cypress/e2e/uat/roles/owner-full-crud.bdd.md +530 -0
  141. package/tests/cypress/e2e/uat/roles/owner-full-crud.cy.ts +247 -0
  142. package/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.bdd.md +736 -0
  143. package/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.cy.ts +740 -0
  144. package/tests/cypress/e2e/uat/teams/roles-matrix.bdd.md +553 -0
  145. package/tests/cypress/e2e/uat/teams/roles-matrix.cy.ts +185 -0
  146. package/tests/cypress/e2e/uat/teams/switcher.bdd.md +1151 -0
  147. package/tests/cypress/e2e/uat/teams/switcher.cy.ts +497 -0
  148. package/tests/cypress/e2e/uat/teams/team-switcher.md +198 -0
  149. package/tests/cypress/fixtures/blocks.json +218 -0
  150. package/tests/cypress/fixtures/entities.json +78 -0
  151. package/tests/cypress/fixtures/page-builder.json +21 -0
  152. package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
  153. package/tests/cypress/src/components/CustomersPOM.ts +439 -0
  154. package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  155. package/tests/cypress/src/components/EntityForm.ts +375 -0
  156. package/tests/cypress/src/components/EntityList.ts +389 -0
  157. package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
  158. package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
  159. package/tests/cypress/src/components/PostsListPOM.ts +223 -0
  160. package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
  161. package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
  162. package/tests/cypress/src/components/TasksPOM.ts +272 -0
  163. package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  164. package/tests/cypress/src/components/index.ts +21 -0
  165. package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
  166. package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
  167. package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
  168. package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
  169. package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
  170. package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
  171. package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
  172. package/tests/cypress/src/controllers/index.js +25 -0
  173. package/tests/cypress/src/core/AuthPOM.ts +450 -0
  174. package/tests/cypress/src/core/BasePOM.ts +86 -0
  175. package/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
  176. package/tests/cypress/src/core/DashboardEntityPOM.ts +692 -0
  177. package/tests/cypress/src/core/index.ts +14 -0
  178. package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
  179. package/tests/cypress/src/entities/PagesPOM.ts +137 -0
  180. package/tests/cypress/src/entities/PostsPOM.ts +137 -0
  181. package/tests/cypress/src/entities/TasksPOM.ts +176 -0
  182. package/tests/cypress/src/entities/index.ts +14 -0
  183. package/tests/cypress/src/features/BillingPOM.ts +385 -0
  184. package/tests/cypress/src/features/DashboardPOM.ts +245 -0
  185. package/tests/cypress/src/features/DevtoolsPOM.ts +739 -0
  186. package/tests/cypress/src/features/PageBuilderPOM.ts +263 -0
  187. package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  188. package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  189. package/tests/cypress/src/features/SettingsPOM.ts +362 -0
  190. package/tests/cypress/src/features/SuperadminPOM.ts +331 -0
  191. package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  192. package/tests/cypress/src/features/index.ts +28 -0
  193. package/tests/cypress/src/helpers/ApiInterceptor.ts +177 -0
  194. package/tests/cypress/src/index.ts +101 -0
  195. package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
  196. package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
  197. package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
  198. package/tests/cypress/src/pages/dashboard/index.js +6 -0
  199. package/tests/cypress/src/pages/index.js +5 -0
  200. package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
  201. package/tests/cypress/src/pages/public/LandingPage.js +69 -0
  202. package/tests/cypress/src/pages/public/PricingPage.js +33 -0
  203. package/tests/cypress/src/pages/public/index.js +6 -0
  204. package/tests/cypress/src/selectors.ts +46 -0
  205. package/tests/cypress/src/session-helpers.ts +500 -0
  206. package/tests/cypress/support/doc-commands.ts +260 -0
  207. package/tests/cypress.config.ts +150 -0
  208. package/tests/jest/components/post-header.test.tsx +377 -0
  209. package/tests/jest/config/role-config.test.ts +529 -0
  210. package/tests/jest/jest.config.ts +81 -0
  211. package/tests/jest/langchain/COVERAGE.md +372 -0
  212. package/tests/jest/langchain/guardrails.test.ts +465 -0
  213. package/tests/jest/langchain/streaming.test.ts +367 -0
  214. package/tests/jest/langchain/token-tracker.test.ts +455 -0
  215. package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
  216. package/tests/jest/langchain/tracer.test.ts +823 -0
  217. package/tests/jest/user-roles/role-helpers.test.ts +432 -0
  218. package/tests/jest/validation/categories.test.ts +429 -0
  219. package/tests/jest/validation/posts.test.ts +546 -0
  220. package/tests/tsconfig.json +15 -0
@@ -0,0 +1,225 @@
1
+ ---
2
+ feature: Admin Team Role Permissions
3
+ priority: critical
4
+ tags: [auth, team-role, admin, permissions, security]
5
+ grepTags: [uat, feat-auth, team-role, admin]
6
+ coverage: 6
7
+ ---
8
+
9
+ # Admin Team Role Permissions
10
+
11
+ > Tests for Admin team role permissions and access control. Admin has full CRUD access to entities but limited team settings and no billing management. Cannot access app-role areas.
12
+
13
+ ## @test ADMIN-PERM-001: Admin Dashboard Access
14
+
15
+ ### Metadata
16
+ - **Priority:** Critical
17
+ - **Type:** Smoke
18
+ - **Tags:** admin, dashboard, navigation
19
+ - **Grep:** `@smoke`
20
+
21
+ ```gherkin:en
22
+ Scenario: Admin can access dashboard with full navigation
23
+
24
+ Given I am logged in as Admin (james.wilson@nextspark.dev)
25
+ When I visit /dashboard
26
+ Then the dashboard container should be visible
27
+ And I should see navigation for customers
28
+ And I should see navigation for tasks
29
+ ```
30
+
31
+ ```gherkin:es
32
+ Scenario: Admin puede acceder al dashboard con navegacion completa
33
+
34
+ Given estoy logueado como Admin (james.wilson@nextspark.dev)
35
+ When visito /dashboard
36
+ Then el contenedor del dashboard deberia estar visible
37
+ And deberia ver navegacion a customers
38
+ And deberia ver navegacion a tasks
39
+ ```
40
+
41
+ ### Expected Results
42
+ - Dashboard loads correctly
43
+ - Navigation items visible
44
+ - No entity restrictions
45
+
46
+ ---
47
+
48
+ ## @test ADMIN-PERM-002: Admin Full Entity Access
49
+
50
+ ### Metadata
51
+ - **Priority:** Critical
52
+ - **Type:** Smoke
53
+ - **Tags:** admin, customers, crud
54
+ - **Grep:** `@smoke`
55
+
56
+ ```gherkin:en
57
+ Scenario: Admin has full CRUD access to customers
58
+
59
+ Given I am logged in as Admin (james.wilson@nextspark.dev)
60
+ When I visit /customers
61
+ Then the create button should be visible
62
+ And the entity list should be visible
63
+ ```
64
+
65
+ ```gherkin:es
66
+ Scenario: Admin tiene acceso CRUD completo a customers
67
+
68
+ Given estoy logueado como Admin (james.wilson@nextspark.dev)
69
+ When visito /customers
70
+ Then el boton de crear deberia estar visible
71
+ And la lista de entidades deberia estar visible
72
+ ```
73
+
74
+ ### Expected Results
75
+ - Full CRUD access to entities
76
+ - Create button visible
77
+ - Edit/Delete available
78
+
79
+ ---
80
+
81
+ ## @test ADMIN-PERM-003: Admin Settings Access
82
+
83
+ ### Metadata
84
+ - **Priority:** High
85
+ - **Type:** Regression
86
+ - **Tags:** admin, settings
87
+
88
+ ```gherkin:en
89
+ Scenario: Admin can access settings with limited options
90
+
91
+ Given I am logged in as Admin (james.wilson@nextspark.dev)
92
+ When I visit /settings
93
+ Then the settings container should be visible
94
+ And the profile tab should be visible
95
+ ```
96
+
97
+ ```gherkin:es
98
+ Scenario: Admin puede acceder a settings con opciones limitadas
99
+
100
+ Given estoy logueado como Admin (james.wilson@nextspark.dev)
101
+ When visito /settings
102
+ Then el contenedor de settings deberia estar visible
103
+ And la pestana de perfil deberia estar visible
104
+ ```
105
+
106
+ ### Expected Results
107
+ - Settings accessible
108
+ - Profile management available
109
+ - Some team settings may be restricted
110
+
111
+ ---
112
+
113
+ ## @test ADMIN-PERM-004: Admin Billing Restricted Access
114
+
115
+ ### Metadata
116
+ - **Priority:** High
117
+ - **Type:** Regression
118
+ - **Tags:** admin, billing, restricted
119
+
120
+ ```gherkin:en
121
+ Scenario: Admin has view-only or no access to billing
122
+
123
+ Given I am logged in as Admin (james.wilson@nextspark.dev)
124
+ When I visit /billing
125
+ Then I should have view-only access or be redirected
126
+ ```
127
+
128
+ ```gherkin:es
129
+ Scenario: Admin tiene acceso solo lectura o sin acceso a billing
130
+
131
+ Given estoy logueado como Admin (james.wilson@nextspark.dev)
132
+ When visito /billing
133
+ Then deberia tener acceso solo lectura o ser redirigido
134
+ ```
135
+
136
+ ### Expected Results
137
+ - Either view-only billing access
138
+ - Or redirect to dashboard
139
+ - No upgrade/payment buttons if accessible
140
+
141
+ ---
142
+
143
+ ## @test ADMIN-PERM-005: Admin Cannot Access Sector7
144
+
145
+ ### Metadata
146
+ - **Priority:** High
147
+ - **Type:** Security
148
+ - **Tags:** admin, sector7, blocked
149
+
150
+ ```gherkin:en
151
+ Scenario: Admin is blocked from Sector7
152
+
153
+ Given I am logged in as Admin (james.wilson@nextspark.dev)
154
+ When I attempt to visit /sector7
155
+ Then I should be redirected away from /sector7
156
+ ```
157
+
158
+ ```gherkin:es
159
+ Scenario: Admin no puede acceder a Sector7
160
+
161
+ Given estoy logueado como Admin (james.wilson@nextspark.dev)
162
+ When intento visitar /sector7
163
+ Then deberia ser redirigido fuera de /sector7
164
+ ```
165
+
166
+ ### Expected Results
167
+ - Access denied to Sector7
168
+ - Redirect to dashboard
169
+
170
+ ---
171
+
172
+ ## @test ADMIN-PERM-006: Admin Cannot Access Dev Zone
173
+
174
+ ### Metadata
175
+ - **Priority:** High
176
+ - **Type:** Security
177
+ - **Tags:** admin, dev-zone, blocked
178
+
179
+ ```gherkin:en
180
+ Scenario: Admin is blocked from Dev Zone
181
+
182
+ Given I am logged in as Admin (james.wilson@nextspark.dev)
183
+ When I attempt to visit /dev
184
+ Then I should be redirected away from /dev
185
+ ```
186
+
187
+ ```gherkin:es
188
+ Scenario: Admin no puede acceder a Dev Zone
189
+
190
+ Given estoy logueado como Admin (james.wilson@nextspark.dev)
191
+ When intento visitar /dev
192
+ Then deberia ser redirigido fuera de /dev
193
+ ```
194
+
195
+ ### Expected Results
196
+ - Access denied to Dev Zone
197
+ - Redirect to dashboard
198
+
199
+ ---
200
+
201
+ ## UI Elements
202
+
203
+ | Element | Selector | Description |
204
+ |---------|----------|-------------|
205
+ | Dashboard Container | `[data-cy="dashboard-container"]` | Main dashboard container |
206
+ | Customers Nav | `[data-cy="sidebar-nav-customers"]` | Customers navigation item |
207
+ | Tasks Nav | `[data-cy="sidebar-nav-tasks"]` | Tasks navigation item |
208
+ | Create Button | `[data-cy="entity-create-button"]` | Entity create button |
209
+ | Entity List | `[data-cy="entity-list-container"]` | Entity list container |
210
+ | Settings Container | `[data-cy="settings-container"]` | Settings page container |
211
+ | Profile Tab | `[data-cy="settings-tab-profile"]` | Profile settings tab |
212
+ | Billing Container | `[data-cy="billing-container"]` | Billing page container |
213
+
214
+ ---
215
+
216
+ ## Summary
217
+
218
+ | Test ID | Block | Description | Tags |
219
+ |---------|-------|-------------|------|
220
+ | ADMIN-PERM-001 | Access | Dashboard with navigation | `@smoke` |
221
+ | ADMIN-PERM-002 | Access | Full CRUD to customers | `@smoke` |
222
+ | ADMIN-PERM-003 | Access | Settings with limits | |
223
+ | ADMIN-PERM-004 | Restricted | View-only billing | |
224
+ | ADMIN-PERM-005 | Blocked | Cannot access Sector7 | |
225
+ | ADMIN-PERM-006 | Blocked | Cannot access Dev Zone | |
@@ -0,0 +1,148 @@
1
+ /// <reference types="cypress" />
2
+
3
+ /**
4
+ * Admin Team Role Login Tests
5
+ *
6
+ * Tests the Admin team role login and specific permissions:
7
+ * - Full CRUD access to entities
8
+ * - Limited team settings access (cannot delete team)
9
+ * - No billing access (owner only)
10
+ * - Member management (limited)
11
+ * - Cannot access /dev or /superadmin (app roles only)
12
+ *
13
+ * Note: Basic login is tested in login-logout.cy.ts
14
+ * This file focuses on Admin-specific permissions and restrictions.
15
+ *
16
+ * Tags: @uat, @feat-auth, @team-role, @admin
17
+ */
18
+
19
+ import * as allure from 'allure-cypress'
20
+
21
+ import { loginAsDefaultAdmin, DEFAULT_THEME_USERS } from '../../../../src/session-helpers'
22
+ import { DashboardPOM } from '../../../../src/features/DashboardPOM'
23
+ import { SettingsPOM } from '../../../../src/features/SettingsPOM'
24
+ import { BillingPOM } from '../../../../src/features/BillingPOM'
25
+ import { SuperadminPOM } from '../../../../src/features/SuperadminPOM'
26
+ import { DevAreaPOM } from '../../../../src/features/DevAreaPOM'
27
+
28
+ describe('Authentication - Admin Team Role Permissions', {
29
+ tags: ['@uat', '@feat-auth', '@team-role', '@admin']
30
+ }, () => {
31
+ const dashboard = DashboardPOM.create()
32
+ const settings = SettingsPOM.create()
33
+ const billing = BillingPOM.create()
34
+ const sector7 = SuperadminPOM.create()
35
+ const devArea = DevAreaPOM.create()
36
+
37
+ beforeEach(() => {
38
+ allure.epic('Authentication')
39
+ allure.feature('Team Roles')
40
+ allure.story('Admin Permissions')
41
+ loginAsDefaultAdmin()
42
+ })
43
+
44
+ describe('ADMIN-PERM-001: Admin Dashboard Access', { tags: '@smoke' }, () => {
45
+ it('should access dashboard with full navigation', { tags: '@smoke' }, () => {
46
+ allure.severity('critical')
47
+
48
+ // 1. Visit dashboard and wait for it to load
49
+ dashboard.visitDashboard()
50
+ dashboard.waitForDashboard()
51
+
52
+ // 2. Validate sidebar navigation items
53
+ dashboard.assertEntityNavVisible('customers')
54
+ dashboard.assertEntityNavVisible('tasks')
55
+
56
+ cy.log(`✅ Admin dashboard access verified (${DEFAULT_THEME_USERS.ADMIN})`)
57
+ })
58
+ })
59
+
60
+ describe('ADMIN-PERM-002: Admin Full Entity Access', { tags: '@smoke' }, () => {
61
+ it('should have full CRUD access to customers', { tags: '@smoke' }, () => {
62
+ allure.severity('critical')
63
+
64
+ // 1. Navigate to customers
65
+ dashboard.visitEntity('customers')
66
+ dashboard.waitForEntityPage('customers')
67
+
68
+ // 2. Validate create button is visible (Admin can create)
69
+ dashboard.assertEntityAddButtonVisible('customers')
70
+
71
+ // 3. Validate table is visible
72
+ dashboard.assertEntityPageVisible('customers')
73
+
74
+ cy.log('✅ Admin has full CRUD access to customers')
75
+ })
76
+ })
77
+
78
+ describe('ADMIN-PERM-003: Admin Settings Access', () => {
79
+ it('should access settings page with limited options', () => {
80
+ allure.severity('high')
81
+
82
+ // 1. Navigate to settings
83
+ settings.visitSettings()
84
+ settings.waitForSettings()
85
+
86
+ // 2. Validate settings page is accessible
87
+ settings.assertSettingsVisible()
88
+
89
+ // 3. Validate profile nav is visible
90
+ settings.assertNavItemVisible('profile')
91
+
92
+ cy.log('✅ Admin can access settings')
93
+ })
94
+ })
95
+
96
+ describe('ADMIN-PERM-004: Admin Billing Restricted Access', () => {
97
+ it('should have view-only or no access to billing', () => {
98
+ allure.severity('high')
99
+
100
+ // 1. Navigate to billing
101
+ billing.visitBilling()
102
+
103
+ // 2. Check access - Admin may have view-only or redirected
104
+ cy.url().then((url) => {
105
+ if (url.includes('/billing')) {
106
+ // If accessible, billing container should be visible
107
+ billing.getBillingMain().should('be.visible')
108
+ cy.log('✅ Admin has view-only billing access')
109
+ } else {
110
+ // If redirected, that's also valid
111
+ cy.log('✅ Admin correctly redirected from billing')
112
+ }
113
+ })
114
+ })
115
+ })
116
+
117
+ describe('ADMIN-PERM-005: Admin Cannot Access Superadmin', () => {
118
+ it('should be redirected when trying to access /superadmin', () => {
119
+ allure.severity('high')
120
+
121
+ // 1. Attempt to visit Superadmin
122
+ cy.visit('/superadmin', { timeout: 60000, failOnStatusCode: false })
123
+
124
+ // 2. Should be redirected
125
+ sector7.assertAccessDenied()
126
+
127
+ cy.log('✅ Admin correctly blocked from Superadmin')
128
+ })
129
+ })
130
+
131
+ describe('ADMIN-PERM-006: Admin Cannot Access Dev Zone', () => {
132
+ it('should be redirected when trying to access /dev', () => {
133
+ allure.severity('high')
134
+
135
+ // 1. Attempt to visit Dev Zone
136
+ devArea.attemptToVisitDev()
137
+
138
+ // 2. Should be redirected
139
+ devArea.assertRedirectedToDashboard()
140
+
141
+ cy.log('✅ Admin correctly blocked from Dev Zone')
142
+ })
143
+ })
144
+
145
+ after(() => {
146
+ cy.log('✅ Admin team role tests completed')
147
+ })
148
+ })
@@ -0,0 +1,251 @@
1
+ ---
2
+ feature: Member Team Role Restrictions
3
+ priority: critical
4
+ tags: [auth, team-role, member, permissions, security, restrictions]
5
+ grepTags: [uat, feat-auth, team-role, member]
6
+ coverage: 7
7
+ ---
8
+
9
+ # Member Team Role Restrictions
10
+
11
+ > Tests for Member team role restrictions. Member is the most restricted team role with read-only access to entities, no create/update/delete permissions, and no access to settings, billing, or app-role areas.
12
+
13
+ ## @test MEMBER-PERM-001: Member Dashboard Access
14
+
15
+ ### Metadata
16
+ - **Priority:** Critical
17
+ - **Type:** Smoke
18
+ - **Tags:** member, dashboard
19
+ - **Grep:** `@smoke`
20
+
21
+ ```gherkin:en
22
+ Scenario: Member can access dashboard
23
+
24
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
25
+ When I visit /dashboard
26
+ Then the dashboard container should be visible
27
+ ```
28
+
29
+ ```gherkin:es
30
+ Scenario: Member puede acceder al dashboard
31
+
32
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
33
+ When visito /dashboard
34
+ Then el contenedor del dashboard deberia estar visible
35
+ ```
36
+
37
+ ### Expected Results
38
+ - Dashboard loads
39
+ - Limited navigation visible
40
+
41
+ ---
42
+
43
+ ## @test MEMBER-PERM-002: Member Read-Only Entity Access
44
+
45
+ ### Metadata
46
+ - **Priority:** Critical
47
+ - **Type:** Smoke
48
+ - **Tags:** member, customers, read-only
49
+ - **Grep:** `@smoke`
50
+
51
+ ```gherkin:en
52
+ Scenario: Member has read-only access to customers
53
+
54
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
55
+ When I visit /customers
56
+ Then the entity list should be visible
57
+ And the create button should NOT exist
58
+ ```
59
+
60
+ ```gherkin:es
61
+ Scenario: Member tiene acceso solo lectura a customers
62
+
63
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
64
+ When visito /customers
65
+ Then la lista de entidades deberia estar visible
66
+ And el boton de crear NO deberia existir
67
+ ```
68
+
69
+ ### Expected Results
70
+ - Can view entity list
71
+ - Cannot create new entities
72
+ - No action buttons visible
73
+
74
+ ---
75
+
76
+ ## @test MEMBER-PERM-003: Member Cannot Create Entities
77
+
78
+ ### Metadata
79
+ - **Priority:** High
80
+ - **Type:** Security
81
+ - **Tags:** member, create, blocked
82
+
83
+ ```gherkin:en
84
+ Scenario: Member cannot see create button on entity pages
85
+
86
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
87
+ When I visit /customers
88
+ Then the create button should not exist
89
+ When I visit /tasks
90
+ Then the create button should not exist
91
+ ```
92
+
93
+ ```gherkin:es
94
+ Scenario: Member no puede ver boton crear en paginas de entidades
95
+
96
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
97
+ When visito /customers
98
+ Then el boton crear no deberia existir
99
+ When visito /tasks
100
+ Then el boton crear no deberia existir
101
+ ```
102
+
103
+ ### Expected Results
104
+ - No create buttons on any entity page
105
+ - Read-only experience
106
+
107
+ ---
108
+
109
+ ## @test MEMBER-PERM-004: Member Settings Restricted
110
+
111
+ ### Metadata
112
+ - **Priority:** High
113
+ - **Type:** Security
114
+ - **Tags:** member, settings, restricted
115
+
116
+ ```gherkin:en
117
+ Scenario: Member has limited or no settings access
118
+
119
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
120
+ When I visit /settings
121
+ Then I should see only profile tab or be redirected
122
+ And the team settings tab should not exist
123
+ ```
124
+
125
+ ```gherkin:es
126
+ Scenario: Member tiene acceso limitado o sin acceso a settings
127
+
128
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
129
+ When visito /settings
130
+ Then deberia ver solo pestana de perfil o ser redirigido
131
+ And la pestana de team settings no deberia existir
132
+ ```
133
+
134
+ ### Expected Results
135
+ - Profile tab only (if accessible)
136
+ - No team settings access
137
+ - No danger zone access
138
+
139
+ ---
140
+
141
+ ## @test MEMBER-PERM-005: Member Billing Blocked
142
+
143
+ ### Metadata
144
+ - **Priority:** High
145
+ - **Type:** Security
146
+ - **Tags:** member, billing, blocked
147
+
148
+ ```gherkin:en
149
+ Scenario: Member cannot access billing
150
+
151
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
152
+ When I visit /billing
153
+ Then I should be redirected away from /billing
154
+ ```
155
+
156
+ ```gherkin:es
157
+ Scenario: Member no puede acceder a billing
158
+
159
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
160
+ When visito /billing
161
+ Then deberia ser redirigido fuera de /billing
162
+ ```
163
+
164
+ ### Expected Results
165
+ - No billing access
166
+ - Redirect to dashboard
167
+
168
+ ---
169
+
170
+ ## @test MEMBER-PERM-006: Member Cannot Access Sector7
171
+
172
+ ### Metadata
173
+ - **Priority:** High
174
+ - **Type:** Security
175
+ - **Tags:** member, sector7, blocked
176
+
177
+ ```gherkin:en
178
+ Scenario: Member is blocked from Sector7
179
+
180
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
181
+ When I attempt to visit /sector7
182
+ Then I should be redirected away from /sector7
183
+ ```
184
+
185
+ ```gherkin:es
186
+ Scenario: Member no puede acceder a Sector7
187
+
188
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
189
+ When intento visitar /sector7
190
+ Then deberia ser redirigido fuera de /sector7
191
+ ```
192
+
193
+ ### Expected Results
194
+ - Access denied
195
+ - Redirect to dashboard
196
+
197
+ ---
198
+
199
+ ## @test MEMBER-PERM-007: Member Cannot Access Dev Zone
200
+
201
+ ### Metadata
202
+ - **Priority:** High
203
+ - **Type:** Security
204
+ - **Tags:** member, dev-zone, blocked
205
+
206
+ ```gherkin:en
207
+ Scenario: Member is blocked from Dev Zone
208
+
209
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
210
+ When I attempt to visit /dev
211
+ Then I should be redirected away from /dev
212
+ ```
213
+
214
+ ```gherkin:es
215
+ Scenario: Member no puede acceder a Dev Zone
216
+
217
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
218
+ When intento visitar /dev
219
+ Then deberia ser redirigido fuera de /dev
220
+ ```
221
+
222
+ ### Expected Results
223
+ - Access denied
224
+ - Redirect to dashboard
225
+
226
+ ---
227
+
228
+ ## UI Elements
229
+
230
+ | Element | Selector | Description |
231
+ |---------|----------|-------------|
232
+ | Dashboard Container | `[data-cy="dashboard-container"]` | Main dashboard container |
233
+ | Create Button | `[data-cy="entity-create-button"]` | Entity create button (should not exist) |
234
+ | Entity List | `[data-cy="entity-list-container"]` | Entity list container |
235
+ | Settings Container | `[data-cy="settings-container"]` | Settings page container |
236
+ | Profile Tab | `[data-cy="settings-tab-profile"]` | Profile settings tab |
237
+ | Team Tab | `[data-cy="settings-tab-team"]` | Team settings tab (should not exist) |
238
+
239
+ ---
240
+
241
+ ## Summary
242
+
243
+ | Test ID | Block | Description | Tags |
244
+ |---------|-------|-------------|------|
245
+ | MEMBER-PERM-001 | Access | Dashboard access | `@smoke` |
246
+ | MEMBER-PERM-002 | Read-Only | Read-only entity access | `@smoke` |
247
+ | MEMBER-PERM-003 | Blocked | Cannot create entities | |
248
+ | MEMBER-PERM-004 | Restricted | Settings limited/blocked | |
249
+ | MEMBER-PERM-005 | Blocked | Billing blocked | |
250
+ | MEMBER-PERM-006 | Blocked | Sector7 blocked | |
251
+ | MEMBER-PERM-007 | Blocked | Dev Zone blocked | |