@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/theme-default",
3
- "version": "0.1.0-beta.20",
3
+ "version": "0.1.0-beta.21",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./config/theme.config.ts",
@@ -0,0 +1,262 @@
1
+ ---
2
+ feature: DevTools Access Control
3
+ priority: critical
4
+ tags: [dev-area, access-control, security, roles]
5
+ grepTags: [uat, feat-dev-area, smoke, regression]
6
+ coverage: 7
7
+ ---
8
+
9
+ # DevTools Access Control
10
+
11
+ > Role-based access control tests for the /devtools area. Validates that Developer users can access all /devtools routes and /admin, while Superadmin and Member users are blocked.
12
+
13
+ ## @test ACCESS-001: Developer can access /devtools
14
+
15
+ ### Metadata
16
+ - **Priority:** Critical
17
+ - **Type:** Smoke
18
+ - **Tags:** developer, access, home
19
+ - **Grep:** `@smoke`
20
+
21
+ ```gherkin:en
22
+ Scenario: Developer can access /devtools home page
23
+
24
+ Given I am logged in as Developer (developer@nextspark.dev)
25
+ When I visit /devtools
26
+ Then I should be on /devtools home page
27
+ And the home page container should be visible
28
+ ```
29
+
30
+ ```gherkin:es
31
+ Scenario: Developer puede acceder a /devtools home page
32
+
33
+ Given estoy logueado como Developer (developer@nextspark.dev)
34
+ When visito /devtools
35
+ Then deberia estar en /devtools home page
36
+ And el contenedor de home page deberia estar visible
37
+ ```
38
+
39
+ ### Expected Results
40
+ - Developer successfully accesses /devtools
41
+ - Home page renders correctly
42
+ - No access denied errors
43
+
44
+ ---
45
+
46
+ ## @test ACCESS-002: Developer can access /devtools/style
47
+
48
+ ### Metadata
49
+ - **Priority:** Critical
50
+ - **Type:** Smoke
51
+ - **Tags:** developer, access, style-gallery
52
+ - **Grep:** `@smoke`
53
+
54
+ ```gherkin:en
55
+ Scenario: Developer can access Style Gallery
56
+
57
+ Given I am logged in as Developer (developer@nextspark.dev)
58
+ When I visit /devtools/style
59
+ Then the URL should include /devtools/style
60
+ And the style page should be visible
61
+ ```
62
+
63
+ ```gherkin:es
64
+ Scenario: Developer puede acceder a Style Gallery
65
+
66
+ Given estoy logueado como Developer (developer@nextspark.dev)
67
+ When visito /devtools/style
68
+ Then la URL deberia incluir /devtools/style
69
+ And la pagina de estilos deberia estar visible
70
+ ```
71
+
72
+ ### Expected Results
73
+ - Style Gallery page loads successfully
74
+ - All component sections available
75
+
76
+ ---
77
+
78
+ ## @test ACCESS-003: Developer can access /devtools/tests
79
+
80
+ ### Metadata
81
+ - **Priority:** Critical
82
+ - **Type:** Smoke
83
+ - **Tags:** developer, access, test-cases
84
+ - **Grep:** `@smoke`
85
+
86
+ ```gherkin:en
87
+ Scenario: Developer can access Test Cases viewer
88
+
89
+ Given I am logged in as Developer (developer@nextspark.dev)
90
+ When I visit /devtools/tests
91
+ Then the URL should include /devtools/tests
92
+ And the tests page should be visible
93
+ ```
94
+
95
+ ```gherkin:es
96
+ Scenario: Developer puede acceder al visor de Test Cases
97
+
98
+ Given estoy logueado como Developer (developer@nextspark.dev)
99
+ When visito /devtools/tests
100
+ Then la URL deberia incluir /devtools/tests
101
+ And la pagina de tests deberia estar visible
102
+ ```
103
+
104
+ ### Expected Results
105
+ - Test Cases viewer loads successfully
106
+ - File tree or empty state visible
107
+
108
+ ---
109
+
110
+ ## @test ACCESS-004: Developer can access /devtools/config
111
+
112
+ ### Metadata
113
+ - **Priority:** Critical
114
+ - **Type:** Smoke
115
+ - **Tags:** developer, access, config
116
+ - **Grep:** `@smoke`
117
+
118
+ ```gherkin:en
119
+ Scenario: Developer can access Config Viewer
120
+
121
+ Given I am logged in as Developer (developer@nextspark.dev)
122
+ When I visit /devtools/config
123
+ Then the URL should include /devtools/config
124
+ And the config page should be visible
125
+ ```
126
+
127
+ ```gherkin:es
128
+ Scenario: Developer puede acceder al Config Viewer
129
+
130
+ Given estoy logueado como Developer (developer@nextspark.dev)
131
+ When visito /devtools/config
132
+ Then la URL deberia incluir /devtools/config
133
+ And la pagina de config deberia estar visible
134
+ ```
135
+
136
+ ### Expected Results
137
+ - Config Viewer loads successfully
138
+ - Theme and Entities tabs available
139
+
140
+ ---
141
+
142
+ ## @test ACCESS-005: Developer can access /admin (inherited)
143
+
144
+ ### Metadata
145
+ - **Priority:** High
146
+ - **Type:** Regression
147
+ - **Tags:** developer, admin, inherited
148
+
149
+ ```gherkin:en
150
+ Scenario: Developer can access Admin area
151
+
152
+ Given I am logged in as Developer (developer@nextspark.dev)
153
+ When I visit /admin
154
+ Then the URL should include /admin
155
+ And the Admin container should be visible
156
+ ```
157
+
158
+ ```gherkin:es
159
+ Scenario: Developer puede acceder al area Admin
160
+
161
+ Given estoy logueado como Developer (developer@nextspark.dev)
162
+ When visito /admin
163
+ Then la URL deberia incluir /admin
164
+ And el contenedor de Admin deberia estar visible
165
+ ```
166
+
167
+ ### Expected Results
168
+ - Developer inherits superadmin privileges for Admin
169
+ - Admin control panel accessible
170
+ - No access denied redirect
171
+
172
+ ---
173
+
174
+ ## @test ACCESS-006: Superadmin is BLOCKED from /devtools
175
+
176
+ ### Metadata
177
+ - **Priority:** Critical
178
+ - **Type:** Smoke
179
+ - **Tags:** superadmin, blocked, security
180
+ - **Grep:** `@smoke`
181
+
182
+ ```gherkin:en
183
+ Scenario: Superadmin is redirected when attempting to access /devtools
184
+
185
+ Given I am logged in as Superadmin (superadmin@nextspark.dev)
186
+ When I attempt to visit /devtools
187
+ Then I should be redirected to /dashboard
188
+ And the URL should include error=access_denied
189
+ ```
190
+
191
+ ```gherkin:es
192
+ Scenario: Superadmin es redirigido al intentar acceder a /devtools
193
+
194
+ Given estoy logueado como Superadmin (superadmin@nextspark.dev)
195
+ When intento visitar /devtools
196
+ Then deberia ser redirigido a /dashboard
197
+ And la URL deberia incluir error=access_denied
198
+ ```
199
+
200
+ ### Expected Results
201
+ - Superadmin cannot access /devtools area
202
+ - Redirect to dashboard with error parameter
203
+ - Access control working correctly
204
+
205
+ ---
206
+
207
+ ## @test ACCESS-007: Member is BLOCKED from /devtools
208
+
209
+ ### Metadata
210
+ - **Priority:** Critical
211
+ - **Type:** Smoke
212
+ - **Tags:** member, blocked, security
213
+ - **Grep:** `@smoke`
214
+
215
+ ```gherkin:en
216
+ Scenario: Member is redirected when attempting to access /devtools
217
+
218
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
219
+ When I attempt to visit /devtools
220
+ Then I should be redirected to /dashboard
221
+ And the URL should include error=access_denied
222
+ ```
223
+
224
+ ```gherkin:es
225
+ Scenario: Member es redirigido al intentar acceder a /devtools
226
+
227
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
228
+ When intento visitar /devtools
229
+ Then deberia ser redirigido a /dashboard
230
+ And la URL deberia incluir error=access_denied
231
+ ```
232
+
233
+ ### Expected Results
234
+ - Member cannot access /devtools area
235
+ - Redirect to dashboard with error parameter
236
+ - Access control working correctly
237
+
238
+ ---
239
+
240
+ ## UI Elements
241
+
242
+ | Element | Selector | Description |
243
+ |---------|----------|-------------|
244
+ | Home Page | `[data-cy="dev-home-page"]` | Dev area home page container |
245
+ | Style Page | `[data-cy="dev-style-page"]` | Style Gallery page container |
246
+ | Tests Page | `[data-cy="dev-tests-page"]` | Test Cases viewer container |
247
+ | Config Page | `[data-cy="dev-config-page"]` | Config Viewer page container |
248
+ | Admin Container | `[data-cy="admin-container"]` | Admin main container |
249
+
250
+ ---
251
+
252
+ ## Summary
253
+
254
+ | Test ID | Block | Description | Tags |
255
+ |---------|-------|-------------|------|
256
+ | ACCESS-001 | Developer Access | Developer can access /devtools home | `@smoke` |
257
+ | ACCESS-002 | Developer Access | Developer can access /devtools/style | `@smoke` |
258
+ | ACCESS-003 | Developer Access | Developer can access /devtools/tests | `@smoke` |
259
+ | ACCESS-004 | Developer Access | Developer can access /devtools/config | `@smoke` |
260
+ | ACCESS-005 | Inherited Access | Developer can access /admin | |
261
+ | ACCESS-006 | Blocked Access | Superadmin BLOCKED from /devtools | `@smoke` |
262
+ | ACCESS-007 | Blocked Access | Member BLOCKED from /devtools | `@smoke` |
@@ -0,0 +1,171 @@
1
+ /// <reference types="cypress" />
2
+
3
+ import * as allure from 'allure-cypress'
4
+ import { DevtoolsPOM } from '../../src/features/DevtoolsPOM'
5
+ import {
6
+ loginAsDefaultDeveloper,
7
+ loginAsDefaultSuperadmin,
8
+ loginAsDefaultMember,
9
+ CORE_USERS
10
+ } from '../../src/session-helpers'
11
+
12
+ /**
13
+ * DevTools Access Control Tests
14
+ *
15
+ * Tests the role-based access control for the /devtools area:
16
+ * - Developer users can access all /devtools routes
17
+ * - Developer users can access /admin (inherited privileges)
18
+ * - Superadmin users are BLOCKED from /devtools
19
+ * - Member users are BLOCKED from /devtools
20
+ *
21
+ * Test Users (from session-helpers):
22
+ * - Developer: developer@nextspark.dev (CORE_USERS.DEVELOPER)
23
+ * - Superadmin: superadmin@nextspark.dev (CORE_USERS.SUPERADMIN)
24
+ * - Member: emily.johnson@nextspark.dev (DEFAULT_THEME_USERS.MEMBER)
25
+ */
26
+
27
+ describe('DevTools - Access Control', {
28
+ tags: ['@uat', '@feat-devtools', '@smoke', '@regression']
29
+ }, () => {
30
+ const devtools = DevtoolsPOM.create()
31
+
32
+ beforeEach(() => {
33
+ allure.epic('UAT')
34
+ allure.feature('DevTools')
35
+ allure.story('Access Control')
36
+ })
37
+
38
+ describe('ACCESS-001: Developer can access /devtools', { tags: '@smoke' }, () => {
39
+ it('should allow developer to access /devtools home page', { tags: '@smoke' }, () => {
40
+ allure.severity('critical')
41
+
42
+ // 1. Login as developer
43
+ loginAsDefaultDeveloper()
44
+
45
+ // 2. Visit /devtools
46
+ devtools.visitHome()
47
+
48
+ // 3. Verify access granted
49
+ devtools.assertOnDevtoolsHome()
50
+ devtools.assertHomePageVisible()
51
+
52
+ cy.log(`✅ Developer (${CORE_USERS.DEVELOPER}) can access /devtools home page`)
53
+ })
54
+ })
55
+
56
+ describe('ACCESS-002: Developer can access /devtools/style', { tags: '@smoke' }, () => {
57
+ it('should allow developer to access Style Gallery', { tags: '@smoke' }, () => {
58
+ allure.severity('critical')
59
+
60
+ // 1. Login as developer
61
+ loginAsDefaultDeveloper()
62
+
63
+ // 2. Visit /devtools/style
64
+ devtools.visitStyleGallery()
65
+
66
+ // 3. Verify access granted
67
+ devtools.assertOnStyleGallery()
68
+ devtools.assertStylePageVisible()
69
+
70
+ cy.log(`✅ Developer can access /devtools/style`)
71
+ })
72
+ })
73
+
74
+ describe('ACCESS-003: Developer can access /devtools/tests', { tags: '@smoke' }, () => {
75
+ it('should allow developer to access Test Cases viewer', { tags: '@smoke' }, () => {
76
+ allure.severity('critical')
77
+
78
+ // 1. Login as developer
79
+ loginAsDefaultDeveloper()
80
+
81
+ // 2. Visit /devtools/tests
82
+ devtools.visitTestCases()
83
+
84
+ // 3. Verify access granted
85
+ devtools.assertOnTestCases()
86
+ devtools.assertTestsPageVisible()
87
+
88
+ cy.log(`✅ Developer can access /devtools/tests`)
89
+ })
90
+ })
91
+
92
+ describe('ACCESS-004: Developer can access /devtools/config', { tags: '@smoke' }, () => {
93
+ it('should allow developer to access Config Viewer', { tags: '@smoke' }, () => {
94
+ allure.severity('critical')
95
+
96
+ // 1. Login as developer
97
+ loginAsDefaultDeveloper()
98
+
99
+ // 2. Visit /devtools/config
100
+ devtools.visitConfig()
101
+
102
+ // 3. Verify access granted
103
+ devtools.assertOnConfig()
104
+ devtools.assertConfigPageVisible()
105
+
106
+ cy.log(`✅ Developer can access /devtools/config`)
107
+ })
108
+ })
109
+
110
+ describe('ACCESS-005: Developer can access /superadmin (inherited)', () => {
111
+ it('should allow developer to access Superadmin area', () => {
112
+ allure.severity('high')
113
+
114
+ // 1. Login as developer
115
+ loginAsDefaultDeveloper()
116
+
117
+ // 2. Visit /superadmin
118
+ cy.visit('/superadmin')
119
+
120
+ // 3. Verify access granted (developer inherits superadmin privileges)
121
+ devtools.assertOnSuperadmin()
122
+ cy.get('[data-cy="superadmin-container"]').should('be.visible')
123
+
124
+ cy.log(`✅ Developer can access /superadmin (inherited superadmin privileges)`)
125
+ })
126
+ })
127
+
128
+ describe('ACCESS-006: Superadmin is BLOCKED from /devtools', { tags: '@smoke' }, () => {
129
+ it('should redirect superadmin to /dashboard when attempting to access /devtools', { tags: '@smoke' }, () => {
130
+ allure.severity('critical')
131
+
132
+ // 1. Login as superadmin
133
+ loginAsDefaultSuperadmin()
134
+
135
+ // 2. Attempt to visit /devtools (should be blocked)
136
+ cy.visit('/devtools', { failOnStatusCode: false })
137
+
138
+ // 3. Verify redirected to /dashboard (access denied)
139
+ devtools.assertRedirectedToDashboard()
140
+
141
+ // 4. Should show access_denied error in URL
142
+ cy.url().should('include', 'error=access_denied')
143
+
144
+ cy.log(`✅ Superadmin (${CORE_USERS.SUPERADMIN}) correctly blocked from /devtools`)
145
+ })
146
+ })
147
+
148
+ describe('ACCESS-007: Member is BLOCKED from /devtools', { tags: '@smoke' }, () => {
149
+ it('should redirect member to /dashboard when attempting to access /devtools', { tags: '@smoke' }, () => {
150
+ allure.severity('critical')
151
+
152
+ // 1. Login as member
153
+ loginAsDefaultMember()
154
+
155
+ // 2. Attempt to visit /devtools (should be blocked)
156
+ cy.visit('/devtools', { failOnStatusCode: false })
157
+
158
+ // 3. Verify redirected to /dashboard (access denied)
159
+ devtools.assertRedirectedToDashboard()
160
+
161
+ // 4. Should show access_denied error in URL
162
+ cy.url().should('include', 'error=access_denied')
163
+
164
+ cy.log(`✅ Member correctly blocked from /devtools`)
165
+ })
166
+ })
167
+
168
+ after(() => {
169
+ cy.log('✅ DevTools access control tests completed')
170
+ })
171
+ })
@@ -0,0 +1,261 @@
1
+ ---
2
+ feature: DevTools Navigation
3
+ priority: high
4
+ tags: [dev-area, navigation, sidebar]
5
+ grepTags: [uat, feat-dev-area, regression]
6
+ coverage: 7
7
+ ---
8
+
9
+ # DevTools Navigation
10
+
11
+ > Navigation functionality tests within the /devtools area. Validates sidebar navigation items, clickable links, and exit navigation to Dashboard and Admin.
12
+
13
+ ## @test NAV-001: Sidebar navigation works
14
+
15
+ ### Metadata
16
+ - **Priority:** High
17
+ - **Type:** Smoke
18
+ - **Tags:** sidebar, navigation, display
19
+ - **Grep:** `@smoke`
20
+
21
+ ```gherkin:en
22
+ Scenario: All sidebar navigation items are displayed
23
+
24
+ Given I am logged in as Developer (developer@nextspark.dev)
25
+ When I visit /devtools home
26
+ Then all navigation items should be visible in sidebar
27
+ And exit links (Dashboard, Admin) should be visible
28
+ ```
29
+
30
+ ```gherkin:es
31
+ Scenario: Todos los items de navegacion del sidebar estan visibles
32
+
33
+ Given estoy logueado como Developer (developer@nextspark.dev)
34
+ When visito /devtools home
35
+ Then todos los items de navegacion deberian estar visibles en el sidebar
36
+ And los enlaces de salida (Dashboard, Admin) deberian estar visibles
37
+ ```
38
+
39
+ ### Expected Results
40
+ - Home, Style Gallery, Test Cases, Config links visible
41
+ - Exit to Dashboard link visible
42
+ - Go to Admin link visible
43
+
44
+ ---
45
+
46
+ ## @test NAV-002a: Navigate to Style Gallery via sidebar
47
+
48
+ ### Metadata
49
+ - **Priority:** High
50
+ - **Type:** Smoke
51
+ - **Tags:** navigate, style-gallery
52
+
53
+ ```gherkin:en
54
+ Scenario: Navigate to Style Gallery via sidebar
55
+
56
+ Given I am on /devtools home
57
+ When I click Style Gallery nav item
58
+ Then the URL should include /devtools/style
59
+ And the style page should be visible
60
+ ```
61
+
62
+ ```gherkin:es
63
+ Scenario: Navegar a Style Gallery via sidebar
64
+
65
+ Given estoy en /devtools home
66
+ When hago clic en el item de navegacion Style Gallery
67
+ Then la URL deberia incluir /devtools/style
68
+ And la pagina de estilos deberia estar visible
69
+ ```
70
+
71
+ ### Expected Results
72
+ - Navigation completes successfully
73
+ - Style Gallery page loads
74
+
75
+ ---
76
+
77
+ ## @test NAV-002b: Navigate to Test Cases via sidebar
78
+
79
+ ### Metadata
80
+ - **Priority:** High
81
+ - **Type:** Smoke
82
+ - **Tags:** navigate, test-cases
83
+
84
+ ```gherkin:en
85
+ Scenario: Navigate to Test Cases via sidebar
86
+
87
+ Given I am on /devtools home
88
+ When I click Test Cases nav item
89
+ Then the URL should include /devtools/tests
90
+ And the tests page should be visible
91
+ ```
92
+
93
+ ```gherkin:es
94
+ Scenario: Navegar a Test Cases via sidebar
95
+
96
+ Given estoy en /devtools home
97
+ When hago clic en el item de navegacion Test Cases
98
+ Then la URL deberia incluir /devtools/tests
99
+ And la pagina de tests deberia estar visible
100
+ ```
101
+
102
+ ### Expected Results
103
+ - Navigation completes successfully
104
+ - Test Cases viewer page loads
105
+
106
+ ---
107
+
108
+ ## @test NAV-002c: Navigate to Config Viewer via sidebar
109
+
110
+ ### Metadata
111
+ - **Priority:** High
112
+ - **Type:** Smoke
113
+ - **Tags:** navigate, config
114
+
115
+ ```gherkin:en
116
+ Scenario: Navigate to Config Viewer via sidebar
117
+
118
+ Given I am on /devtools home
119
+ When I click Config nav item
120
+ Then the URL should include /devtools/config
121
+ And the config page should be visible
122
+ ```
123
+
124
+ ```gherkin:es
125
+ Scenario: Navegar a Config Viewer via sidebar
126
+
127
+ Given estoy en /devtools home
128
+ When hago clic en el item de navegacion Config
129
+ Then la URL deberia incluir /devtools/config
130
+ And la pagina de config deberia estar visible
131
+ ```
132
+
133
+ ### Expected Results
134
+ - Navigation completes successfully
135
+ - Config Viewer page loads
136
+
137
+ ---
138
+
139
+ ## @test NAV-002d: Navigate back to Home via sidebar
140
+
141
+ ### Metadata
142
+ - **Priority:** High
143
+ - **Type:** Smoke
144
+ - **Tags:** navigate, home
145
+
146
+ ```gherkin:en
147
+ Scenario: Navigate back to Home via sidebar
148
+
149
+ Given I am on /devtools/style
150
+ When I click Home nav item
151
+ Then the URL should be /devtools
152
+ And the home page should be visible
153
+ ```
154
+
155
+ ```gherkin:es
156
+ Scenario: Navegar de vuelta a Home via sidebar
157
+
158
+ Given estoy en /devtools/style
159
+ When hago clic en el item de navegacion Home
160
+ Then la URL deberia ser /devtools
161
+ And la pagina home deberia estar visible
162
+ ```
163
+
164
+ ### Expected Results
165
+ - Navigation completes successfully
166
+ - Home page loads
167
+
168
+ ---
169
+
170
+ ## @test NAV-003: Back to Dashboard link works
171
+
172
+ ### Metadata
173
+ - **Priority:** High
174
+ - **Type:** Smoke
175
+ - **Tags:** exit, dashboard
176
+
177
+ ```gherkin:en
178
+ Scenario: Navigate to Dashboard when clicking exit link
179
+
180
+ Given I am on /devtools home
181
+ When I click "Exit to Dashboard" link
182
+ Then the URL should include /dashboard
183
+ And the URL should not include /devtools
184
+ And the dashboard container should be visible
185
+ ```
186
+
187
+ ```gherkin:es
188
+ Scenario: Navegar a Dashboard al hacer clic en enlace de salida
189
+
190
+ Given estoy en /devtools home
191
+ When hago clic en el enlace "Exit to Dashboard"
192
+ Then la URL deberia incluir /dashboard
193
+ And la URL no deberia incluir /devtools
194
+ And el contenedor del dashboard deberia estar visible
195
+ ```
196
+
197
+ ### Expected Results
198
+ - Exit navigation works correctly
199
+ - User lands on main dashboard
200
+ - No /devtools in URL
201
+
202
+ ---
203
+
204
+ ## @test NAV-004: Go to Admin link works
205
+
206
+ ### Metadata
207
+ - **Priority:** High
208
+ - **Type:** Smoke
209
+ - **Tags:** exit, admin
210
+
211
+ ```gherkin:en
212
+ Scenario: Navigate to Admin when clicking exit link
213
+
214
+ Given I am on /devtools home
215
+ When I click "Go to Admin" link
216
+ Then the URL should include /admin
217
+ And the Admin container should be visible
218
+ ```
219
+
220
+ ```gherkin:es
221
+ Scenario: Navegar a Admin al hacer clic en enlace de salida
222
+
223
+ Given estoy en /devtools home
224
+ When hago clic en el enlace "Go to Admin"
225
+ Then la URL deberia incluir /admin
226
+ And el contenedor de Admin deberia estar visible
227
+ ```
228
+
229
+ ### Expected Results
230
+ - Exit to Admin works correctly
231
+ - Developer can access Admin (inherited privileges)
232
+ - Admin control panel visible
233
+
234
+ ---
235
+
236
+ ## UI Elements
237
+
238
+ | Element | Selector | Description |
239
+ |---------|----------|-------------|
240
+ | Nav Home | `[data-cy="dev-nav-home"]` | Home navigation item |
241
+ | Nav Style Gallery | `[data-cy="dev-nav-stylegallery"]` | Style Gallery navigation item |
242
+ | Nav Test Cases | `[data-cy="dev-nav-testcases"]` | Test Cases navigation item |
243
+ | Nav Config | `[data-cy="dev-nav-config"]` | Config navigation item |
244
+ | Exit to Dashboard | `[data-cy="dev-sidebar-exit-to-dashboard"]` | Exit to dashboard link |
245
+ | Go to Admin | `[data-cy="dev-sidebar-go-to-admin"]` | Go to Admin link |
246
+ | Dashboard Container | `[data-cy="dashboard-container"]` | Main dashboard container |
247
+ | Admin Container | `[data-cy="admin-container"]` | Admin main container |
248
+
249
+ ---
250
+
251
+ ## Summary
252
+
253
+ | Test ID | Block | Description | Tags |
254
+ |---------|-------|-------------|------|
255
+ | NAV-001 | Sidebar Display | All navigation items visible | `@smoke` |
256
+ | NAV-002a | Navigate | Style Gallery via sidebar | |
257
+ | NAV-002b | Navigate | Test Cases via sidebar | |
258
+ | NAV-002c | Navigate | Config Viewer via sidebar | |
259
+ | NAV-002d | Navigate | Back to Home via sidebar | |
260
+ | NAV-003 | Exit Links | Back to Dashboard works | |
261
+ | NAV-004 | Exit Links | Go to Admin works | |