@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,736 @@
1
+ ---
2
+ feature: Scheduled Actions DevTools UI
3
+ priority: critical
4
+ tags: [uat, devtools, feat-scheduled-actions, regression]
5
+ grepTags: ["@uat", "@devtools", "@scheduled-actions"]
6
+ coverage: 24 tests
7
+ ---
8
+
9
+ # Scheduled Actions DevTools UI - UAT Tests
10
+
11
+ > UAT tests for the `/devtools/scheduled-actions` page. These tests verify the developer experience for monitoring scheduled actions including page load, status display, action details, error handling, filters, and pagination.
12
+
13
+ ## Access Requirements
14
+
15
+ | Requirement | Value |
16
+ |-------------|-------|
17
+ | Login Role | Developer or Superadmin |
18
+ | Page URL | `/devtools/scheduled-actions` |
19
+ | Test User | `developer@nextspark.dev` |
20
+
21
+ ---
22
+
23
+ ## @test SCHED-UAT-001: DevTools scheduled actions page is accessible
24
+
25
+ ### Metadata
26
+ - **Priority:** Critical
27
+ - **Type:** Smoke
28
+ - **Tags:** uat, scheduled-actions, page-load
29
+ - **AC:** AC-22
30
+
31
+ ```gherkin:en
32
+ Scenario: Developer can access DevTools scheduled actions page
33
+
34
+ Given I am logged in as a developer
35
+ When I visit /devtools/scheduled-actions
36
+ Then I should see the scheduled actions page
37
+ And the page should be fully loaded
38
+ ```
39
+
40
+ ```gherkin:es
41
+ Scenario: Developer puede acceder a la pagina DevTools de acciones programadas
42
+
43
+ Given estoy logueado como developer
44
+ When visito /devtools/scheduled-actions
45
+ Then deberia ver la pagina de acciones programadas
46
+ And la pagina deberia estar completamente cargada
47
+ ```
48
+
49
+ ---
50
+
51
+ ## @test SCHED-UAT-002: Page displays title and description
52
+
53
+ ### Metadata
54
+ - **Priority:** Normal
55
+ - **Type:** Smoke
56
+ - **Tags:** uat, scheduled-actions, page-load
57
+ - **AC:** AC-22
58
+
59
+ ```gherkin:en
60
+ Scenario: Page shows title and helpful description
61
+
62
+ Given I am on the scheduled actions page
63
+ Then I should see "Scheduled Actions" title
64
+ And I should see a description of the feature
65
+ ```
66
+
67
+ ```gherkin:es
68
+ Scenario: Pagina muestra titulo y descripcion util
69
+
70
+ Given estoy en la pagina de acciones programadas
71
+ Then deberia ver el titulo "Scheduled Actions"
72
+ And deberia ver una descripcion de la funcionalidad
73
+ ```
74
+
75
+ ---
76
+
77
+ ## @test SCHED-UAT-010: Table shows status badges for all states
78
+
79
+ ### Metadata
80
+ - **Priority:** Critical
81
+ - **Type:** Functional
82
+ - **Tags:** uat, scheduled-actions, status-display
83
+ - **AC:** AC-23
84
+
85
+ ```gherkin:en
86
+ Scenario: Status badges are visible for different action states
87
+
88
+ Given I am on the scheduled actions page
89
+ When the table loads
90
+ Then I should see status badges with different states
91
+ And badges should have distinct visual styles (colors)
92
+ ```
93
+
94
+ ```gherkin:es
95
+ Scenario: Badges de estado son visibles para diferentes estados de accion
96
+
97
+ Given estoy en la pagina de acciones programadas
98
+ When la tabla carga
99
+ Then deberia ver badges de estado con diferentes estados
100
+ And los badges deberian tener estilos visuales distintos (colores)
101
+ ```
102
+
103
+ ---
104
+
105
+ ## @test SCHED-UAT-011: Pending status badge is visible
106
+
107
+ ### Metadata
108
+ - **Priority:** Normal
109
+ - **Type:** Functional
110
+ - **Tags:** uat, scheduled-actions, status-pending
111
+ - **AC:** AC-23
112
+
113
+ ```gherkin:en
114
+ Scenario: Pending actions show pending badge
115
+
116
+ Given there are pending actions
117
+ Then I should see at least one "Pending" status badge
118
+ ```
119
+
120
+ ```gherkin:es
121
+ Scenario: Acciones pendientes muestran badge pending
122
+
123
+ Given hay acciones pendientes
124
+ Then deberia ver al menos un badge de estado "Pending"
125
+ ```
126
+
127
+ ---
128
+
129
+ ## @test SCHED-UAT-012: Completed status badge is visible when actions complete
130
+
131
+ ### Metadata
132
+ - **Priority:** Normal
133
+ - **Type:** Functional
134
+ - **Tags:** uat, scheduled-actions, status-completed
135
+ - **AC:** AC-23
136
+
137
+ ```gherkin:en
138
+ Scenario: Completed actions show completed badge
139
+
140
+ Given there are completed actions
141
+ Then I should see at least one "Completed" status badge
142
+ ```
143
+
144
+ ```gherkin:es
145
+ Scenario: Acciones completadas muestran badge completed
146
+
147
+ Given hay acciones completadas
148
+ Then deberia ver al menos un badge de estado "Completed"
149
+ ```
150
+
151
+ ---
152
+
153
+ ## @test SCHED-UAT-013: Failed status badge is visible for failed actions
154
+
155
+ ### Metadata
156
+ - **Priority:** Normal
157
+ - **Type:** Functional
158
+ - **Tags:** uat, scheduled-actions, status-failed
159
+ - **AC:** AC-23
160
+
161
+ ```gherkin:en
162
+ Scenario: Failed actions show failed badge with destructive styling
163
+
164
+ Given there are failed actions
165
+ Then I should see at least one "Failed" status badge
166
+ And the badge should have destructive (red) styling
167
+ ```
168
+
169
+ ```gherkin:es
170
+ Scenario: Acciones fallidas muestran badge failed con estilo destructivo
171
+
172
+ Given hay acciones fallidas
173
+ Then deberia ver al menos un badge de estado "Failed"
174
+ And el badge deberia tener estilo destructivo (rojo)
175
+ ```
176
+
177
+ ---
178
+
179
+ ## @test SCHED-UAT-020: Table shows all required columns
180
+
181
+ ### Metadata
182
+ - **Priority:** Critical
183
+ - **Type:** Functional
184
+ - **Tags:** uat, scheduled-actions, table-columns
185
+ - **AC:** AC-24
186
+
187
+ ```gherkin:en
188
+ Scenario: Table displays all required column headers
189
+
190
+ Given I am on the scheduled actions page
191
+ Then I should see column headers for:
192
+ - Type
193
+ - Status
194
+ - Scheduled At
195
+ - Team
196
+ - Payload
197
+ - Error
198
+ ```
199
+
200
+ ```gherkin:es
201
+ Scenario: Tabla muestra todos los encabezados de columna requeridos
202
+
203
+ Given estoy en la pagina de acciones programadas
204
+ Then deberia ver encabezados de columna para:
205
+ - Type
206
+ - Status
207
+ - Scheduled At
208
+ - Team
209
+ - Payload
210
+ - Error
211
+ ```
212
+
213
+ ---
214
+
215
+ ## @test SCHED-UAT-021: Action type is displayed in table
216
+
217
+ ### Metadata
218
+ - **Priority:** Normal
219
+ - **Type:** Functional
220
+ - **Tags:** uat, scheduled-actions, action-type
221
+ - **AC:** AC-24
222
+
223
+ ```gherkin:en
224
+ Scenario: Each action shows its type
225
+
226
+ Given there are actions in the table
227
+ Then each row should display the action type
228
+ And the type should be in monospace font for readability
229
+ ```
230
+
231
+ ```gherkin:es
232
+ Scenario: Cada accion muestra su tipo
233
+
234
+ Given hay acciones en la tabla
235
+ Then cada fila deberia mostrar el tipo de accion
236
+ And el tipo deberia estar en fuente monospace para legibilidad
237
+ ```
238
+
239
+ ---
240
+
241
+ ## @test SCHED-UAT-022: Scheduled time is formatted and displayed
242
+
243
+ ### Metadata
244
+ - **Priority:** Normal
245
+ - **Type:** Functional
246
+ - **Tags:** uat, scheduled-actions, scheduled-at
247
+ - **AC:** AC-24
248
+
249
+ ```gherkin:en
250
+ Scenario: Each action shows when it's scheduled to run
251
+
252
+ Given there are actions in the table
253
+ Then each row should display the scheduled time
254
+ And the time should be formatted in a readable way
255
+ ```
256
+
257
+ ```gherkin:es
258
+ Scenario: Cada accion muestra cuando esta programada para ejecutarse
259
+
260
+ Given hay acciones en la tabla
261
+ Then cada fila deberia mostrar el tiempo programado
262
+ And el tiempo deberia estar formateado de manera legible
263
+ ```
264
+
265
+ ---
266
+
267
+ ## @test SCHED-UAT-023: Team ID is displayed or shows "Global"
268
+
269
+ ### Metadata
270
+ - **Priority:** Normal
271
+ - **Type:** Functional
272
+ - **Tags:** uat, scheduled-actions, team-context
273
+ - **AC:** AC-24
274
+
275
+ ```gherkin:en
276
+ Scenario: Each action shows team context
277
+
278
+ Given there are actions in the table
279
+ Then each row should display the team ID
280
+ Or show "Global" for system-wide actions (no team context)
281
+ ```
282
+
283
+ ```gherkin:es
284
+ Scenario: Cada accion muestra el contexto de equipo
285
+
286
+ Given hay acciones en la tabla
287
+ Then cada fila deberia mostrar el ID del equipo
288
+ O mostrar "Global" para acciones del sistema (sin contexto de equipo)
289
+ ```
290
+
291
+ ---
292
+
293
+ ## @test SCHED-UAT-024: Payload preview is visible
294
+
295
+ ### Metadata
296
+ - **Priority:** Normal
297
+ - **Type:** Functional
298
+ - **Tags:** uat, scheduled-actions, payload
299
+ - **AC:** AC-24
300
+
301
+ ```gherkin:en
302
+ Scenario: Each action shows a payload preview
303
+
304
+ Given there are actions in the table
305
+ Then each row should show a preview of the payload
306
+ And clicking the row should expand to show full payload
307
+ ```
308
+
309
+ ```gherkin:es
310
+ Scenario: Cada accion muestra una vista previa del payload
311
+
312
+ Given hay acciones en la tabla
313
+ Then cada fila deberia mostrar una vista previa del payload
314
+ And hacer clic en la fila deberia expandir para mostrar payload completo
315
+ ```
316
+
317
+ ---
318
+
319
+ ## @test SCHED-UAT-030: Error column is visible in table
320
+
321
+ ### Metadata
322
+ - **Priority:** Critical
323
+ - **Type:** Functional
324
+ - **Tags:** uat, scheduled-actions, error-display
325
+ - **AC:** AC-25
326
+
327
+ ```gherkin:en
328
+ Scenario: Table has an error column
329
+
330
+ Given I am on the scheduled actions page
331
+ Then I should see an "Error" column header
332
+ ```
333
+
334
+ ```gherkin:es
335
+ Scenario: Tabla tiene una columna de error
336
+
337
+ Given estoy en la pagina de acciones programadas
338
+ Then deberia ver un encabezado de columna "Error"
339
+ ```
340
+
341
+ ---
342
+
343
+ ## @test SCHED-UAT-031: Failed actions display error message
344
+
345
+ ### Metadata
346
+ - **Priority:** Critical
347
+ - **Type:** Functional
348
+ - **Tags:** uat, scheduled-actions, error-message
349
+ - **AC:** AC-25
350
+
351
+ ```gherkin:en
352
+ Scenario: Failed actions show error details
353
+
354
+ Given there are failed actions in the table
355
+ Then each failed action should display its error message
356
+ And the error should be visible in the Error column
357
+ ```
358
+
359
+ ```gherkin:es
360
+ Scenario: Acciones fallidas muestran detalles del error
361
+
362
+ Given hay acciones fallidas en la tabla
363
+ Then cada accion fallida deberia mostrar su mensaje de error
364
+ And el error deberia ser visible en la columna Error
365
+ ```
366
+
367
+ ---
368
+
369
+ ## @test SCHED-UAT-032: Error message is expandable for full details
370
+
371
+ ### Metadata
372
+ - **Priority:** Normal
373
+ - **Type:** Functional
374
+ - **Tags:** uat, scheduled-actions, error-expansion
375
+ - **AC:** AC-25
376
+
377
+ ```gherkin:en
378
+ Scenario: User can expand row to see full error message
379
+
380
+ Given there is a failed action with an error message
381
+ When I click on the row
382
+ Then the row should expand
383
+ And I should see the full error message
384
+ ```
385
+
386
+ ```gherkin:es
387
+ Scenario: Usuario puede expandir fila para ver mensaje de error completo
388
+
389
+ Given hay una accion fallida con un mensaje de error
390
+ When hago clic en la fila
391
+ Then la fila deberia expandirse
392
+ And deberia ver el mensaje de error completo
393
+ ```
394
+
395
+ ---
396
+
397
+ ## @test SCHED-UAT-040: Status filter is visible and functional
398
+
399
+ ### Metadata
400
+ - **Priority:** Critical
401
+ - **Type:** Functional
402
+ - **Tags:** uat, scheduled-actions, filters
403
+ - **AC:** AC-26
404
+
405
+ ```gherkin:en
406
+ Scenario: User can filter by action status
407
+
408
+ Given I am on the scheduled actions page
409
+ Then I should see a status filter dropdown
410
+ And the dropdown should have options: All, Pending, Running, Completed, Failed
411
+ ```
412
+
413
+ ```gherkin:es
414
+ Scenario: Usuario puede filtrar por estado de accion
415
+
416
+ Given estoy en la pagina de acciones programadas
417
+ Then deberia ver un dropdown de filtro de estado
418
+ And el dropdown deberia tener opciones: All, Pending, Running, Completed, Failed
419
+ ```
420
+
421
+ ---
422
+
423
+ ## @test SCHED-UAT-041: Action type filter is visible and functional
424
+
425
+ ### Metadata
426
+ - **Priority:** Critical
427
+ - **Type:** Functional
428
+ - **Tags:** uat, scheduled-actions, filters
429
+ - **AC:** AC-26
430
+
431
+ ```gherkin:en
432
+ Scenario: User can filter by action type
433
+
434
+ Given I am on the scheduled actions page
435
+ Then I should see an action type filter dropdown
436
+ And the dropdown should have "All" plus registered action types
437
+ ```
438
+
439
+ ```gherkin:es
440
+ Scenario: Usuario puede filtrar por tipo de accion
441
+
442
+ Given estoy en la pagina de acciones programadas
443
+ Then deberia ver un dropdown de filtro de tipo de accion
444
+ And el dropdown deberia tener "All" mas los tipos de accion registrados
445
+ ```
446
+
447
+ ---
448
+
449
+ ## @test SCHED-UAT-042: Filtering by status updates the table
450
+
451
+ ### Metadata
452
+ - **Priority:** Critical
453
+ - **Type:** Functional
454
+ - **Tags:** uat, scheduled-actions, filter-status
455
+ - **AC:** AC-26
456
+
457
+ ```gherkin:en
458
+ Scenario: Filtering by status shows only matching actions
459
+
460
+ Given I am on the scheduled actions page
461
+ And there are actions with different statuses
462
+ When I select "Pending" from the status filter
463
+ Then the table should only show pending actions
464
+ ```
465
+
466
+ ```gherkin:es
467
+ Scenario: Filtrar por estado muestra solo acciones coincidentes
468
+
469
+ Given estoy en la pagina de acciones programadas
470
+ And hay acciones con diferentes estados
471
+ When selecciono "Pending" del filtro de estado
472
+ Then la tabla deberia mostrar solo acciones pending
473
+ ```
474
+
475
+ ---
476
+
477
+ ## @test SCHED-UAT-043: Filtering by action type updates the table
478
+
479
+ ### Metadata
480
+ - **Priority:** Critical
481
+ - **Type:** Functional
482
+ - **Tags:** uat, scheduled-actions, filter-type
483
+ - **AC:** AC-26
484
+
485
+ ```gherkin:en
486
+ Scenario: Filtering by action type shows only matching actions
487
+
488
+ Given I am on the scheduled actions page
489
+ And there are actions of different types
490
+ When I select a specific action type from the filter
491
+ Then the table should only show actions of that type
492
+ ```
493
+
494
+ ```gherkin:es
495
+ Scenario: Filtrar por tipo de accion muestra solo acciones coincidentes
496
+
497
+ Given estoy en la pagina de acciones programadas
498
+ And hay acciones de diferentes tipos
499
+ When selecciono un tipo de accion especifico del filtro
500
+ Then la tabla deberia mostrar solo acciones de ese tipo
501
+ ```
502
+
503
+ ---
504
+
505
+ ## @test SCHED-UAT-044: Reset button clears all filters
506
+
507
+ ### Metadata
508
+ - **Priority:** Normal
509
+ - **Type:** Functional
510
+ - **Tags:** uat, scheduled-actions, filter-reset
511
+ - **AC:** AC-26
512
+
513
+ ```gherkin:en
514
+ Scenario: User can reset filters to show all actions
515
+
516
+ Given I have applied filters (status or action type)
517
+ When I click the reset button
518
+ Then all filters should be cleared
519
+ And the table should show all actions again
520
+ ```
521
+
522
+ ```gherkin:es
523
+ Scenario: Usuario puede resetear filtros para mostrar todas las acciones
524
+
525
+ Given he aplicado filtros (estado o tipo de accion)
526
+ When hago clic en el boton reset
527
+ Then todos los filtros deberian limpiarse
528
+ And la tabla deberia mostrar todas las acciones de nuevo
529
+ ```
530
+
531
+ ---
532
+
533
+ ## @test SCHED-UAT-045: Multiple filters can be combined
534
+
535
+ ### Metadata
536
+ - **Priority:** Normal
537
+ - **Type:** Functional
538
+ - **Tags:** uat, scheduled-actions, filter-combined
539
+ - **AC:** AC-26
540
+
541
+ ```gherkin:en
542
+ Scenario: User can combine status and action type filters
543
+
544
+ Given I am on the scheduled actions page
545
+ When I select a status filter
546
+ And I select an action type filter (if available)
547
+ Then the table should show actions matching both filters
548
+ ```
549
+
550
+ ```gherkin:es
551
+ Scenario: Usuario puede combinar filtros de estado y tipo de accion
552
+
553
+ Given estoy en la pagina de acciones programadas
554
+ When selecciono un filtro de estado
555
+ And selecciono un filtro de tipo de accion (si esta disponible)
556
+ Then la tabla deberia mostrar acciones que coincidan con ambos filtros
557
+ ```
558
+
559
+ ---
560
+
561
+ ## @test SCHED-UAT-050: Empty state is shown when no actions exist
562
+
563
+ ### Metadata
564
+ - **Priority:** Normal
565
+ - **Type:** Functional
566
+ - **Tags:** uat, scheduled-actions, empty-state
567
+
568
+ ```gherkin:en
569
+ Scenario: Empty state message when no actions
570
+
571
+ Given there are no scheduled actions in the database
572
+ When I visit the page
573
+ Then I should see an empty state message
574
+ And the message should explain there are no scheduled actions
575
+ ```
576
+
577
+ ```gherkin:es
578
+ Scenario: Mensaje de estado vacio cuando no hay acciones
579
+
580
+ Given no hay acciones programadas en la base de datos
581
+ When visito la pagina
582
+ Then deberia ver un mensaje de estado vacio
583
+ And el mensaje deberia explicar que no hay acciones programadas
584
+ ```
585
+
586
+ ---
587
+
588
+ ## @test SCHED-UAT-060: Pagination controls are visible when needed
589
+
590
+ ### Metadata
591
+ - **Priority:** Normal
592
+ - **Type:** Functional
593
+ - **Tags:** uat, scheduled-actions, pagination
594
+
595
+ ```gherkin:en
596
+ Scenario: Pagination appears when there are many actions
597
+
598
+ Given there are more than 20 actions (default page size)
599
+ When I visit the page
600
+ Then I should see pagination controls
601
+ And I should see Previous and Next buttons
602
+ ```
603
+
604
+ ```gherkin:es
605
+ Scenario: Paginacion aparece cuando hay muchas acciones
606
+
607
+ Given hay mas de 20 acciones (tamano de pagina por defecto)
608
+ When visito la pagina
609
+ Then deberia ver controles de paginacion
610
+ And deberia ver botones Previous y Next
611
+ ```
612
+
613
+ ---
614
+
615
+ ## @test SCHED-UAT-061: Next button works when there are more pages
616
+
617
+ ### Metadata
618
+ - **Priority:** Normal
619
+ - **Type:** Functional
620
+ - **Tags:** uat, scheduled-actions, pagination-next
621
+
622
+ ```gherkin:en
623
+ Scenario: User can navigate to next page
624
+
625
+ Given there are multiple pages of actions
626
+ When I click the Next button
627
+ Then the table should load the next page
628
+ And different actions should be displayed
629
+ ```
630
+
631
+ ```gherkin:es
632
+ Scenario: Usuario puede navegar a la siguiente pagina
633
+
634
+ Given hay multiples paginas de acciones
635
+ When hago clic en el boton Next
636
+ Then la tabla deberia cargar la siguiente pagina
637
+ And diferentes acciones deberian mostrarse
638
+ ```
639
+
640
+ ---
641
+
642
+ ## @test SCHED-UAT-062: Previous button works when on later pages
643
+
644
+ ### Metadata
645
+ - **Priority:** Normal
646
+ - **Type:** Functional
647
+ - **Tags:** uat, scheduled-actions, pagination-prev
648
+
649
+ ```gherkin:en
650
+ Scenario: User can navigate to previous page
651
+
652
+ Given I am on page 2 or later
653
+ When I click the Previous button
654
+ Then the table should load the previous page
655
+ ```
656
+
657
+ ```gherkin:es
658
+ Scenario: Usuario puede navegar a la pagina anterior
659
+
660
+ Given estoy en pagina 2 o posterior
661
+ When hago clic en el boton Previous
662
+ Then la tabla deberia cargar la pagina anterior
663
+ ```
664
+
665
+ ---
666
+
667
+ ## Test Summary
668
+
669
+ | Test ID | Section | Description | Priority | AC |
670
+ |---------|---------|-------------|----------|-----|
671
+ | SCHED-UAT-001 | Page Load | Page accessible | Critical | AC-22 |
672
+ | SCHED-UAT-002 | Page Load | Title and description | Normal | AC-22 |
673
+ | SCHED-UAT-010 | Status Display | Status badges visible | Critical | AC-23 |
674
+ | SCHED-UAT-011 | Status Display | Pending badge | Normal | AC-23 |
675
+ | SCHED-UAT-012 | Status Display | Completed badge | Normal | AC-23 |
676
+ | SCHED-UAT-013 | Status Display | Failed badge | Normal | AC-23 |
677
+ | SCHED-UAT-020 | Action Details | All columns visible | Critical | AC-24 |
678
+ | SCHED-UAT-021 | Action Details | Action type displayed | Normal | AC-24 |
679
+ | SCHED-UAT-022 | Action Details | Scheduled time | Normal | AC-24 |
680
+ | SCHED-UAT-023 | Action Details | Team ID or Global | Normal | AC-24 |
681
+ | SCHED-UAT-024 | Action Details | Payload preview | Normal | AC-24 |
682
+ | SCHED-UAT-030 | Error Display | Error column visible | Critical | AC-25 |
683
+ | SCHED-UAT-031 | Error Display | Error message shown | Critical | AC-25 |
684
+ | SCHED-UAT-032 | Error Display | Expandable error | Normal | AC-25 |
685
+ | SCHED-UAT-040 | Filters | Status filter | Critical | AC-26 |
686
+ | SCHED-UAT-041 | Filters | Action type filter | Critical | AC-26 |
687
+ | SCHED-UAT-042 | Filters | Status filter works | Critical | AC-26 |
688
+ | SCHED-UAT-043 | Filters | Type filter works | Critical | AC-26 |
689
+ | SCHED-UAT-044 | Filters | Reset button | Normal | AC-26 |
690
+ | SCHED-UAT-045 | Filters | Combined filters | Normal | AC-26 |
691
+ | SCHED-UAT-050 | Empty State | Empty state message | Normal | - |
692
+ | SCHED-UAT-060 | Pagination | Controls visible | Normal | - |
693
+ | SCHED-UAT-061 | Pagination | Next button | Normal | - |
694
+ | SCHED-UAT-062 | Pagination | Previous button | Normal | - |
695
+
696
+ ---
697
+
698
+ ## Visual Flow
699
+
700
+ ```
701
+ [Login as Developer] → [Visit /devtools/scheduled-actions]
702
+
703
+
704
+ ┌────────────────┐
705
+ │ Page Load │
706
+ │ Title + Desc │
707
+ └───────┬────────┘
708
+
709
+
710
+ ┌──────────────────────────────┐
711
+ │ Data Table │
712
+ │ ┌──────┬──────┬────────────┐ │
713
+ │ │ Type │Status│ScheduledAt │ │
714
+ │ ├──────┼──────┼────────────┤ │
715
+ │ │ ... │ 🟡 │ 2025-12-30 │ │
716
+ │ │ ... │ 🟢 │ 2025-12-29 │ │
717
+ │ │ ... │ 🔴 │ 2025-12-28 │ │
718
+ │ └──────┴──────┴────────────┘ │
719
+ └──────────────────────────────┘
720
+
721
+ ┌──────────────┼──────────────┐
722
+ ▼ ▼ ▼
723
+ ┌──────────┐ ┌──────────┐ ┌──────────┐
724
+ │ Filters │ │ Empty │ │Pagination│
725
+ │Status/Type│ │ State │ │ Prev/Next│
726
+ └──────────┘ └──────────┘ └──────────┘
727
+ ```
728
+
729
+ ## Status Badge Colors
730
+
731
+ | Status | Color | Badge Variant |
732
+ |--------|-------|---------------|
733
+ | Pending | Yellow | `warning` |
734
+ | Running | Blue | `info` |
735
+ | Completed | Green | `success` |
736
+ | Failed | Red | `destructive` |