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

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 (221) 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/support/e2e.ts +89 -0
  208. package/tests/cypress.config.ts +165 -0
  209. package/tests/jest/components/post-header.test.tsx +377 -0
  210. package/tests/jest/config/role-config.test.ts +529 -0
  211. package/tests/jest/jest.config.ts +81 -0
  212. package/tests/jest/langchain/COVERAGE.md +372 -0
  213. package/tests/jest/langchain/guardrails.test.ts +465 -0
  214. package/tests/jest/langchain/streaming.test.ts +367 -0
  215. package/tests/jest/langchain/token-tracker.test.ts +455 -0
  216. package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
  217. package/tests/jest/langchain/tracer.test.ts +823 -0
  218. package/tests/jest/user-roles/role-helpers.test.ts +432 -0
  219. package/tests/jest/validation/categories.test.ts +429 -0
  220. package/tests/jest/validation/posts.test.ts +546 -0
  221. package/tests/tsconfig.json +15 -0
@@ -0,0 +1,552 @@
1
+ # Editor Role - Permission Restrictions (Format: BDD/Gherkin - Bilingual)
2
+
3
+ > **Test File:** `editor-role.cy.ts`
4
+ > **Format:** Behavior-Driven Development (BDD) with Given/When/Then
5
+ > **Languages:** English / Spanish (side-by-side)
6
+ > **Total Tests:** 10
7
+
8
+ ---
9
+
10
+ ## Feature: Editor Role Permission Restrictions
11
+
12
+ <table>
13
+ <tr>
14
+ <th width="50%">English</th>
15
+ <th width="50%">Español</th>
16
+ </tr>
17
+ <tr>
18
+ <td>
19
+
20
+ As an **Editor** (custom role with hierarchy level 5)
21
+ I want to **have read-only access to customers**
22
+ So that **I can view data without accidentally modifying it**
23
+
24
+ **Security Focus:** Editor is a custom role more restrictive than Member.
25
+ - Can only list/read customers (no create/update/delete)
26
+ - Cannot access Sector7 (superadmin only)
27
+ - Cannot access Dev Zone (restricted zone)
28
+
29
+ </td>
30
+ <td>
31
+
32
+ Como **Editor** (rol personalizado con nivel de jerarquia 5)
33
+ Quiero **tener acceso de solo lectura a clientes**
34
+ Para que **pueda ver datos sin modificarlos accidentalmente**
35
+
36
+ **Enfoque de Seguridad:** Editor es un rol personalizado mas restrictivo que Member.
37
+ - Solo puede listar/ver clientes (sin crear/editar/eliminar)
38
+ - No puede acceder a Sector7 (solo superadmin)
39
+ - No puede acceder a Dev Zone (zona restringida)
40
+
41
+ </td>
42
+ </tr>
43
+ </table>
44
+
45
+ ### Background
46
+
47
+ <table>
48
+ <tr>
49
+ <th width="50%">English</th>
50
+ <th width="50%">Español</th>
51
+ </tr>
52
+ <tr>
53
+ <td>
54
+
55
+ ```gherkin
56
+ Given I am logged in as Editor (diego.ramirez@nextspark.dev)
57
+ And the API intercepts are set up
58
+ And the application is running on Everpoint Labs team
59
+ ```
60
+
61
+ </td>
62
+ <td>
63
+
64
+ ```gherkin
65
+ Given estoy logueado como Editor (diego.ramirez@nextspark.dev)
66
+ And los intercepts de API estan configurados
67
+ And la aplicacion esta corriendo en el equipo Everpoint Labs
68
+ ```
69
+
70
+ </td>
71
+ </tr>
72
+ </table>
73
+
74
+ ---
75
+
76
+ ## UI Restrictions - Buttons Hidden `@smoke`
77
+
78
+ ### EDIT_ROLE_001: Editor can view customers list `@smoke`
79
+
80
+ <table>
81
+ <tr>
82
+ <th width="50%">English</th>
83
+ <th width="50%">Español</th>
84
+ </tr>
85
+ <tr>
86
+ <td>
87
+
88
+ ```gherkin
89
+ Scenario: Editor can view customers list
90
+
91
+ Given I am logged in as an Editor
92
+ When I navigate to the Customers list page
93
+ And the customer list loads successfully
94
+ Then the customers table should be visible
95
+ And I should see customer data
96
+ ```
97
+
98
+ **Verification:** Basic access to read data is allowed.
99
+
100
+ </td>
101
+ <td>
102
+
103
+ ```gherkin
104
+ Scenario: Editor puede ver lista de clientes
105
+
106
+ Given estoy logueado como Editor
107
+ When navego a la pagina de lista de Clientes
108
+ And la lista de clientes carga exitosamente
109
+ Then la tabla de clientes deberia estar visible
110
+ And deberia ver datos de clientes
111
+ ```
112
+
113
+ **Verificacion:** El acceso basico para leer datos esta permitido.
114
+
115
+ </td>
116
+ </tr>
117
+ </table>
118
+
119
+ ---
120
+
121
+ ### EDIT_ROLE_002: Create Customer button not visible for Editor `@smoke`
122
+
123
+ <table>
124
+ <tr>
125
+ <th width="50%">English</th>
126
+ <th width="50%">Español</th>
127
+ </tr>
128
+ <tr>
129
+ <td>
130
+
131
+ ```gherkin
132
+ Scenario: Create button is hidden for Editor role
133
+
134
+ Given I am logged in as an Editor
135
+ When I navigate to the Customers list page
136
+ And the customer list loads successfully
137
+ Then the "Add" button should NOT exist
138
+ And there should be no way to access the create form
139
+ ```
140
+
141
+ **Security Verification:** Editor has no `customers.create` permission.
142
+
143
+ </td>
144
+ <td>
145
+
146
+ ```gherkin
147
+ Scenario: Boton crear esta oculto para rol Editor
148
+
149
+ Given estoy logueado como Editor
150
+ When navego a la pagina de lista de Clientes
151
+ And la lista de clientes carga exitosamente
152
+ Then el boton "Agregar" NO deberia existir
153
+ And no deberia haber forma de acceder al formulario de creacion
154
+ ```
155
+
156
+ **Verificacion de Seguridad:** Editor no tiene permiso `customers.create`.
157
+
158
+ </td>
159
+ </tr>
160
+ </table>
161
+
162
+ ---
163
+
164
+ ### EDIT_ROLE_003: Edit/Delete buttons not visible for Editor
165
+
166
+ <table>
167
+ <tr>
168
+ <th width="50%">English</th>
169
+ <th width="50%">Español</th>
170
+ </tr>
171
+ <tr>
172
+ <td>
173
+
174
+ ```gherkin
175
+ Scenario: Edit and Delete buttons are hidden in list view
176
+
177
+ Given I am logged in as an Editor
178
+ When I navigate to the Customers list page
179
+ And the customer list loads successfully
180
+ And there are customers in the list
181
+ Then edit action buttons should NOT exist in table rows
182
+ And delete action buttons should NOT exist in table rows
183
+ ```
184
+
185
+ **Note:** Editor only has `customers.list` and `customers.read` permissions.
186
+
187
+ </td>
188
+ <td>
189
+
190
+ ```gherkin
191
+ Scenario: Botones editar y eliminar estan ocultos en vista de lista
192
+
193
+ Given estoy logueado como Editor
194
+ When navego a la pagina de lista de Clientes
195
+ And la lista de clientes carga exitosamente
196
+ And hay clientes en la lista
197
+ Then los botones de accion editar NO deberian existir en las filas
198
+ And los botones de accion eliminar NO deberian existir en las filas
199
+ ```
200
+
201
+ **Nota:** Editor solo tiene permisos `customers.list` y `customers.read`.
202
+
203
+ </td>
204
+ </tr>
205
+ </table>
206
+
207
+ ---
208
+
209
+ ### EDIT_ROLE_004: Editor has no row actions menu
210
+
211
+ <table>
212
+ <tr>
213
+ <th width="50%">English</th>
214
+ <th width="50%">Español</th>
215
+ </tr>
216
+ <tr>
217
+ <td>
218
+
219
+ ```gherkin
220
+ Scenario: Row actions menu hidden for Editor (no edit/delete permissions)
221
+
222
+ Given I am logged in as an Editor
223
+ When I navigate to the Customers list page
224
+ And the customer list loads successfully
225
+ And there are customers in the list
226
+ Then the row actions menu should NOT exist
227
+ Because Editor has no canUpdate or canDelete permissions
228
+ ```
229
+
230
+ **Note:** EntityList component only renders the actions menu if user has edit or delete permissions.
231
+
232
+ </td>
233
+ <td>
234
+
235
+ ```gherkin
236
+ Scenario: Menu de acciones de fila oculto para Editor (sin permisos edit/delete)
237
+
238
+ Given estoy logueado como Editor
239
+ When navego a la pagina de lista de Clientes
240
+ And la lista de clientes carga exitosamente
241
+ And hay clientes en la lista
242
+ Then el menu de acciones de fila NO deberia existir
243
+ Because Editor no tiene permisos canUpdate o canDelete
244
+ ```
245
+
246
+ **Nota:** El componente EntityList solo renderiza el menu de acciones si el usuario tiene permisos de editar o eliminar.
247
+
248
+ </td>
249
+ </tr>
250
+ </table>
251
+
252
+ ---
253
+
254
+ ## URL Access Restrictions - Permission Denied
255
+
256
+ ### EDIT_ROLE_005: Direct URL to /customers/create shows Permission Denied
257
+
258
+ <table>
259
+ <tr>
260
+ <th width="50%">English</th>
261
+ <th width="50%">Español</th>
262
+ </tr>
263
+ <tr>
264
+ <td>
265
+
266
+ ```gherkin
267
+ Scenario: Direct URL access to create is blocked
268
+
269
+ Given I am logged in as an Editor
270
+ When I navigate directly to /dashboard/customers/create
271
+ Then I should see a "Permission Denied" component
272
+ Or I should be redirected to a permission-denied page
273
+ ```
274
+
275
+ **Verification:** Either `[data-cy="permission-denied"]` is visible or URL contains "permission-denied".
276
+
277
+ </td>
278
+ <td>
279
+
280
+ ```gherkin
281
+ Scenario: Acceso directo por URL a crear esta bloqueado
282
+
283
+ Given estoy logueado como Editor
284
+ When navego directamente a /dashboard/customers/create
285
+ Then deberia ver un componente de "Permiso Denegado"
286
+ Or deberia ser redirigido a una pagina de permiso-denegado
287
+ ```
288
+
289
+ **Verificacion:** O bien `[data-cy="permission-denied"]` es visible o la URL contiene "permission-denied".
290
+
291
+ </td>
292
+ </tr>
293
+ </table>
294
+
295
+ ---
296
+
297
+ ### EDIT_ROLE_006: Direct URL to /customers/[id]/edit shows Permission Denied
298
+
299
+ <table>
300
+ <tr>
301
+ <th width="50%">English</th>
302
+ <th width="50%">Español</th>
303
+ </tr>
304
+ <tr>
305
+ <td>
306
+
307
+ ```gherkin
308
+ Scenario: Direct URL access to edit is blocked
309
+
310
+ Given I am logged in as an Editor
311
+ And there is at least one customer in the list
312
+ When I extract a customer ID from the list
313
+ And I navigate directly to /dashboard/customers/{id}/edit
314
+ Then I should see a "Permission Denied" component
315
+ Or I should be redirected away from /edit
316
+ ```
317
+
318
+ </td>
319
+ <td>
320
+
321
+ ```gherkin
322
+ Scenario: Acceso directo por URL a editar esta bloqueado
323
+
324
+ Given estoy logueado como Editor
325
+ And existe al menos un cliente en la lista
326
+ When extraigo un ID de cliente de la lista
327
+ And navego directamente a /dashboard/customers/{id}/edit
328
+ Then deberia ver un componente de "Permiso Denegado"
329
+ Or deberia ser redirigido fuera de /edit
330
+ ```
331
+
332
+ </td>
333
+ </tr>
334
+ </table>
335
+
336
+ ---
337
+
338
+ ## Restricted Zones - Access Denied
339
+
340
+ ### EDIT_ROLE_007: Editor cannot access Sector7
341
+
342
+ <table>
343
+ <tr>
344
+ <th width="50%">English</th>
345
+ <th width="50%">Español</th>
346
+ </tr>
347
+ <tr>
348
+ <td>
349
+
350
+ ```gherkin
351
+ Scenario: Sector7 access is blocked for Editor
352
+
353
+ Given I am logged in as an Editor
354
+ When I navigate directly to /sector7
355
+ Then I should be redirected to /dashboard
356
+ And the URL should include "error=access_denied"
357
+ ```
358
+
359
+ **Severity:** Blocker - Sector7 is superadmin-only area.
360
+
361
+ </td>
362
+ <td>
363
+
364
+ ```gherkin
365
+ Scenario: Acceso a Sector7 esta bloqueado para Editor
366
+
367
+ Given estoy logueado como Editor
368
+ When navego directamente a /sector7
369
+ Then deberia ser redirigido a /dashboard
370
+ And la URL deberia incluir "error=access_denied"
371
+ ```
372
+
373
+ **Severidad:** Bloqueante - Sector7 es area solo para superadmin.
374
+
375
+ </td>
376
+ </tr>
377
+ </table>
378
+
379
+ ---
380
+
381
+ ### EDIT_ROLE_008: Editor cannot access Dev Zone
382
+
383
+ <table>
384
+ <tr>
385
+ <th width="50%">English</th>
386
+ <th width="50%">Español</th>
387
+ </tr>
388
+ <tr>
389
+ <td>
390
+
391
+ ```gherkin
392
+ Scenario: Dev Zone access is blocked for Editor
393
+
394
+ Given I am logged in as an Editor
395
+ When I navigate directly to /dev
396
+ Then I should be redirected to /dashboard
397
+ And the URL should include "error=access_denied"
398
+ ```
399
+
400
+ **Severity:** Blocker - Dev Zone is a restricted development area.
401
+
402
+ </td>
403
+ <td>
404
+
405
+ ```gherkin
406
+ Scenario: Acceso a Dev Zone esta bloqueado para Editor
407
+
408
+ Given estoy logueado como Editor
409
+ When navego directamente a /dev
410
+ Then deberia ser redirigido a /dashboard
411
+ And la URL deberia incluir "error=access_denied"
412
+ ```
413
+
414
+ **Severidad:** Bloqueante - Dev Zone es un area de desarrollo restringida.
415
+
416
+ </td>
417
+ </tr>
418
+ </table>
419
+
420
+ ---
421
+
422
+ ### EDIT_ROLE_009: Editor UI does not show Sector7 button
423
+
424
+ <table>
425
+ <tr>
426
+ <th width="50%">English</th>
427
+ <th width="50%">Español</th>
428
+ </tr>
429
+ <tr>
430
+ <td>
431
+
432
+ ```gherkin
433
+ Scenario: Sector7 button is hidden from Editor UI
434
+
435
+ Given I am logged in as an Editor
436
+ When I navigate to /dashboard
437
+ Then the Sector7 button should NOT exist
438
+ And the admin toolbar should NOT exist
439
+ ```
440
+
441
+ </td>
442
+ <td>
443
+
444
+ ```gherkin
445
+ Scenario: Boton Sector7 esta oculto de la UI de Editor
446
+
447
+ Given estoy logueado como Editor
448
+ When navego a /dashboard
449
+ Then el boton Sector7 NO deberia existir
450
+ And la barra de herramientas de admin NO deberia existir
451
+ ```
452
+
453
+ </td>
454
+ </tr>
455
+ </table>
456
+
457
+ ---
458
+
459
+ ### EDIT_ROLE_010: Editor UI does not show Dev Zone button
460
+
461
+ <table>
462
+ <tr>
463
+ <th width="50%">English</th>
464
+ <th width="50%">Español</th>
465
+ </tr>
466
+ <tr>
467
+ <td>
468
+
469
+ ```gherkin
470
+ Scenario: Dev Zone button is hidden from Editor UI
471
+
472
+ Given I am logged in as an Editor
473
+ When I navigate to /dashboard
474
+ Then the Dev Zone button should NOT exist
475
+ ```
476
+
477
+ </td>
478
+ <td>
479
+
480
+ ```gherkin
481
+ Scenario: Boton Dev Zone esta oculto de la UI de Editor
482
+
483
+ Given estoy logueado como Editor
484
+ When navego a /dashboard
485
+ Then el boton Dev Zone NO deberia existir
486
+ ```
487
+
488
+ </td>
489
+ </tr>
490
+ </table>
491
+
492
+ ---
493
+
494
+ ## Permission Matrix / Matriz de Permisos
495
+
496
+ | Entity / Entidad | Operation / Operación | Editor | Member | Owner | Admin |
497
+ |------------------|----------------------|:------:|:------:|:-----:|:-----:|
498
+ | **Customers** | CREATE | **No** | **No** | Yes | Yes |
499
+ | **Customers** | READ | Yes | Yes | Yes | Yes |
500
+ | **Customers** | LIST | Yes | Yes | Yes | Yes |
501
+ | **Customers** | UPDATE | **No** | **No** | Yes | Yes |
502
+ | **Customers** | DELETE | **No** | **No** | Yes | Yes |
503
+ | **Sector7** | ACCESS | **No** | **No** | **No** | **No** |
504
+ | **Dev Zone** | ACCESS | **No** | **No** | **No** | **No** |
505
+
506
+ **Note:** Sector7 and Dev Zone require superadmin access, not regular roles.
507
+
508
+ ---
509
+
510
+ ## UI Elements / Elementos UI
511
+
512
+ ### Permission Components
513
+
514
+ | Element | Selector | Description / Descripción |
515
+ |---------|----------|---------------------------|
516
+ | Permission Denied | `[data-cy="permission-denied"]` | Permission denied component |
517
+ | Add Button | `[data-cy="customers-add"]` | Create button (should not exist) |
518
+ | Row Action View | `[data-cy="row-action-view"]` | View option in row menu |
519
+ | Row Action Edit | `[data-cy="row-action-edit"]` | Edit option (should not exist) |
520
+ | Row Action Delete | `[data-cy="row-action-delete"]` | Delete option (should not exist) |
521
+ | Sector7 Button | `[data-cy="sector7-button"]` | Sector7 access button |
522
+ | Dev Zone Button | `[data-cy="dev-zone-button"]` | Dev Zone access button |
523
+ | Admin Toolbar | `[data-cy="admin-toolbar"]` | Admin-only toolbar |
524
+
525
+ ---
526
+
527
+ ## Role Hierarchy / Jerarquia de Roles
528
+
529
+ | Role / Rol | Level / Nivel | Description / Descripción |
530
+ |------------|:-------------:|---------------------------|
531
+ | Owner | 100 | Full access, protected role |
532
+ | Admin | 50 | Administrative access |
533
+ | Member | 10 | Standard team member |
534
+ | **Editor** | **5** | **Custom read-only role** |
535
+ | Viewer | 1 | View-only access |
536
+
537
+ ---
538
+
539
+ ## Summary / Resumen
540
+
541
+ | Test ID | Block | Description / Descripción | Tags |
542
+ |---------|-------|---------------------------|------|
543
+ | EDIT_ROLE_001 | UI Restrictions | Editor can view list | `@smoke` |
544
+ | EDIT_ROLE_002 | UI Restrictions | Create button hidden | `@smoke` |
545
+ | EDIT_ROLE_003 | UI Restrictions | Edit/Delete buttons hidden | |
546
+ | EDIT_ROLE_004 | UI Restrictions | Row menu only shows View | |
547
+ | EDIT_ROLE_005 | URL Access | /create blocked | |
548
+ | EDIT_ROLE_006 | URL Access | /edit blocked | |
549
+ | EDIT_ROLE_007 | Restricted Zones | Sector7 blocked | |
550
+ | EDIT_ROLE_008 | Restricted Zones | Dev Zone blocked | |
551
+ | EDIT_ROLE_009 | Restricted Zones | Sector7 button hidden | |
552
+ | EDIT_ROLE_010 | Restricted Zones | Dev Zone button hidden | |