@nextsparkjs/theme-default 0.1.0-beta.2 → 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 (222) hide show
  1. package/package.json +8 -4
  2. package/templates/(public)/page.tsx +1 -1
  3. package/tests/cypress/e2e/_devtools/access.bdd.md +262 -0
  4. package/tests/cypress/e2e/_devtools/access.cy.ts +171 -0
  5. package/tests/cypress/e2e/_devtools/navigation.bdd.md +261 -0
  6. package/tests/cypress/e2e/_devtools/navigation.cy.ts +157 -0
  7. package/tests/cypress/e2e/_devtools/pages.bdd.md +303 -0
  8. package/tests/cypress/e2e/_devtools/pages.cy.ts +184 -0
  9. package/tests/cypress/e2e/_docs/README.md +215 -0
  10. package/tests/cypress/e2e/_docs/tutorials/sector7-superadmin-teams.narration.json +155 -0
  11. package/tests/cypress/e2e/_docs/tutorials/sector7-superadmin.cy.ts +390 -0
  12. package/tests/cypress/e2e/_docs/tutorials/teams-system.doc.cy.ts +349 -0
  13. package/tests/cypress/e2e/_docs/tutorials/teams-system.narration.json +165 -0
  14. package/tests/cypress/e2e/_selectors/auth.cy.ts +306 -0
  15. package/tests/cypress/e2e/_selectors/billing.cy.ts +89 -0
  16. package/tests/cypress/e2e/_selectors/dashboard-mobile.cy.ts +113 -0
  17. package/tests/cypress/e2e/_selectors/dashboard-navigation.cy.ts +89 -0
  18. package/tests/cypress/e2e/_selectors/dashboard-sidebar.cy.ts +60 -0
  19. package/tests/cypress/e2e/_selectors/dashboard-topnav.cy.ts +146 -0
  20. package/tests/cypress/e2e/_selectors/devtools.cy.ts +210 -0
  21. package/tests/cypress/e2e/_selectors/global-search.cy.ts +88 -0
  22. package/tests/cypress/e2e/_selectors/pages-editor.cy.ts +179 -0
  23. package/tests/cypress/e2e/_selectors/posts-editor.cy.ts +282 -0
  24. package/tests/cypress/e2e/_selectors/public.cy.ts +112 -0
  25. package/tests/cypress/e2e/_selectors/settings-api-keys.cy.ts +228 -0
  26. package/tests/cypress/e2e/_selectors/settings-billing.cy.ts +105 -0
  27. package/tests/cypress/e2e/_selectors/settings-layout.cy.ts +119 -0
  28. package/tests/cypress/e2e/_selectors/settings-password.cy.ts +71 -0
  29. package/tests/cypress/e2e/_selectors/settings-profile.cy.ts +82 -0
  30. package/tests/cypress/e2e/_selectors/settings-teams.cy.ts +68 -0
  31. package/tests/cypress/e2e/_selectors/superadmin.cy.ts +185 -0
  32. package/tests/cypress/e2e/_selectors/tasks.cy.ts +242 -0
  33. package/tests/cypress/e2e/_selectors/taxonomies.cy.ts +126 -0
  34. package/tests/cypress/e2e/_selectors/teams.cy.ts +142 -0
  35. package/tests/cypress/e2e/_superadmin/all-teams.bdd.md +261 -0
  36. package/tests/cypress/e2e/_superadmin/all-teams.cy.ts +177 -0
  37. package/tests/cypress/e2e/_superadmin/all-users.bdd.md +406 -0
  38. package/tests/cypress/e2e/_superadmin/all-users.cy.ts +294 -0
  39. package/tests/cypress/e2e/_superadmin/dashboard.bdd.md +235 -0
  40. package/tests/cypress/e2e/_superadmin/dashboard.cy.ts +149 -0
  41. package/tests/cypress/e2e/_superadmin/subscriptions-overview.bdd.md +290 -0
  42. package/tests/cypress/e2e/_superadmin/subscriptions-overview.cy.ts +194 -0
  43. package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
  44. package/tests/cypress/e2e/ai/chat-api.cy.ts +107 -0
  45. package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
  46. package/tests/cypress/e2e/api/billing/BillingAPIController.js +319 -0
  47. package/tests/cypress/e2e/api/billing/check-action.cy.ts +326 -0
  48. package/tests/cypress/e2e/api/billing/checkout.cy.ts +358 -0
  49. package/tests/cypress/e2e/api/billing/lifecycle.cy.ts +423 -0
  50. package/tests/cypress/e2e/api/billing/plans/README.md +345 -0
  51. package/tests/cypress/e2e/api/billing/plans/business.cy.ts +412 -0
  52. package/tests/cypress/e2e/api/billing/plans/downgrade.cy.ts +510 -0
  53. package/tests/cypress/e2e/api/billing/plans/fixtures/billing-plans.json +163 -0
  54. package/tests/cypress/e2e/api/billing/plans/free.cy.ts +500 -0
  55. package/tests/cypress/e2e/api/billing/plans/pro.cy.ts +497 -0
  56. package/tests/cypress/e2e/api/billing/plans/starter.cy.ts +342 -0
  57. package/tests/cypress/e2e/api/billing/portal.cy.ts +313 -0
  58. package/tests/cypress/e2e/api/devtools/registries.bdd.md +300 -0
  59. package/tests/cypress/e2e/api/devtools/registries.cy.ts +368 -0
  60. package/tests/cypress/e2e/api/entities/blocks-scope.cy.ts +396 -0
  61. package/tests/cypress/e2e/api/entities/customers-crud.cy.ts +648 -0
  62. package/tests/cypress/e2e/api/entities/customers-metas.cy.ts +839 -0
  63. package/tests/cypress/e2e/api/entities/pages-crud.cy.ts +425 -0
  64. package/tests/cypress/e2e/api/entities/pages-status.cy.ts +335 -0
  65. package/tests/cypress/e2e/api/entities/post-categories-crud.cy.ts +610 -0
  66. package/tests/cypress/e2e/api/entities/posts-crud.cy.ts +709 -0
  67. package/tests/cypress/e2e/api/entities/posts-status.cy.ts +396 -0
  68. package/tests/cypress/e2e/api/entities/tasks-crud.cy.ts +602 -0
  69. package/tests/cypress/e2e/api/entities/tasks-metas.cy.ts +878 -0
  70. package/tests/cypress/e2e/api/entities/users-crud.cy.ts +469 -0
  71. package/tests/cypress/e2e/api/entities/users-metas.cy.ts +913 -0
  72. package/tests/cypress/e2e/api/entities/users-security.cy.ts +375 -0
  73. package/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.bdd.md +375 -0
  74. package/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.cy.ts +346 -0
  75. package/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.bdd.md +451 -0
  76. package/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.cy.ts +447 -0
  77. package/tests/cypress/e2e/api/scheduled-actions/scheduling.bdd.md +649 -0
  78. package/tests/cypress/e2e/api/scheduled-actions/scheduling.cy.ts +333 -0
  79. package/tests/cypress/e2e/api/settings/api-keys.crud.cy.ts +923 -0
  80. package/tests/cypress/e2e/uat/auth/app-roles/developer-login.bdd.md +231 -0
  81. package/tests/cypress/e2e/uat/auth/app-roles/developer-login.cy.ts +144 -0
  82. package/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.bdd.md +118 -0
  83. package/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.cy.ts +84 -0
  84. package/tests/cypress/e2e/uat/auth/custom-roles/editor-login.bdd.md +288 -0
  85. package/tests/cypress/e2e/uat/auth/custom-roles/editor-login.cy.ts +188 -0
  86. package/tests/cypress/e2e/uat/auth/login-logout.bdd.md +160 -0
  87. package/tests/cypress/e2e/uat/auth/login-logout.cy.ts +116 -0
  88. package/tests/cypress/e2e/uat/auth/password-reset.bdd.md +289 -0
  89. package/tests/cypress/e2e/uat/auth/password-reset.cy.ts +200 -0
  90. package/tests/cypress/e2e/uat/auth/team-roles/admin-login.bdd.md +225 -0
  91. package/tests/cypress/e2e/uat/auth/team-roles/admin-login.cy.ts +148 -0
  92. package/tests/cypress/e2e/uat/auth/team-roles/member-login.bdd.md +251 -0
  93. package/tests/cypress/e2e/uat/auth/team-roles/member-login.cy.ts +163 -0
  94. package/tests/cypress/e2e/uat/auth/team-roles/owner-login.bdd.md +231 -0
  95. package/tests/cypress/e2e/uat/auth/team-roles/owner-login.cy.ts +141 -0
  96. package/tests/cypress/e2e/uat/billing/extended.bdd.md +273 -0
  97. package/tests/cypress/e2e/uat/billing/extended.cy.ts +209 -0
  98. package/tests/cypress/e2e/uat/billing/feature-gates.bdd.md +407 -0
  99. package/tests/cypress/e2e/uat/billing/feature-gates.cy.ts +307 -0
  100. package/tests/cypress/e2e/uat/billing/page.bdd.md +329 -0
  101. package/tests/cypress/e2e/uat/billing/page.cy.ts +250 -0
  102. package/tests/cypress/e2e/uat/billing/status.bdd.md +190 -0
  103. package/tests/cypress/e2e/uat/billing/status.cy.ts +145 -0
  104. package/tests/cypress/e2e/uat/billing/team-switch.bdd.md +156 -0
  105. package/tests/cypress/e2e/uat/billing/team-switch.cy.ts +122 -0
  106. package/tests/cypress/e2e/uat/billing/usage.bdd.md +218 -0
  107. package/tests/cypress/e2e/uat/billing/usage.cy.ts +176 -0
  108. package/tests/cypress/e2e/uat/blocks/hero.bdd.md +124 -0
  109. package/tests/cypress/e2e/uat/blocks/hero.cy.ts +56 -0
  110. package/tests/cypress/e2e/uat/devtools/api-tester.cy.ts +390 -0
  111. package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
  112. package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
  113. package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
  114. package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
  115. package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
  116. package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
  117. package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
  118. package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
  119. package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
  120. package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
  121. package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
  122. package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
  123. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
  124. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
  125. package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
  126. package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
  127. package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
  128. package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
  129. package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
  130. package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
  131. package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
  132. package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
  133. package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
  134. package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
  135. package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
  136. package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
  137. package/tests/cypress/e2e/uat/roles/editor-role.bdd.md +552 -0
  138. package/tests/cypress/e2e/uat/roles/editor-role.cy.ts +210 -0
  139. package/tests/cypress/e2e/uat/roles/member-restrictions.bdd.md +450 -0
  140. package/tests/cypress/e2e/uat/roles/member-restrictions.cy.ts +189 -0
  141. package/tests/cypress/e2e/uat/roles/owner-full-crud.bdd.md +530 -0
  142. package/tests/cypress/e2e/uat/roles/owner-full-crud.cy.ts +247 -0
  143. package/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.bdd.md +736 -0
  144. package/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.cy.ts +740 -0
  145. package/tests/cypress/e2e/uat/teams/roles-matrix.bdd.md +553 -0
  146. package/tests/cypress/e2e/uat/teams/roles-matrix.cy.ts +185 -0
  147. package/tests/cypress/e2e/uat/teams/switcher.bdd.md +1151 -0
  148. package/tests/cypress/e2e/uat/teams/switcher.cy.ts +497 -0
  149. package/tests/cypress/e2e/uat/teams/team-switcher.md +198 -0
  150. package/tests/cypress/fixtures/blocks.json +218 -0
  151. package/tests/cypress/fixtures/entities.json +78 -0
  152. package/tests/cypress/fixtures/page-builder.json +21 -0
  153. package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
  154. package/tests/cypress/src/components/CustomersPOM.ts +439 -0
  155. package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  156. package/tests/cypress/src/components/EntityForm.ts +375 -0
  157. package/tests/cypress/src/components/EntityList.ts +389 -0
  158. package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
  159. package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
  160. package/tests/cypress/src/components/PostsListPOM.ts +223 -0
  161. package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
  162. package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
  163. package/tests/cypress/src/components/TasksPOM.ts +272 -0
  164. package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  165. package/tests/cypress/src/components/index.ts +21 -0
  166. package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
  167. package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
  168. package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
  169. package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
  170. package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
  171. package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
  172. package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
  173. package/tests/cypress/src/controllers/index.js +25 -0
  174. package/tests/cypress/src/core/AuthPOM.ts +450 -0
  175. package/tests/cypress/src/core/BasePOM.ts +86 -0
  176. package/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
  177. package/tests/cypress/src/core/DashboardEntityPOM.ts +692 -0
  178. package/tests/cypress/src/core/index.ts +14 -0
  179. package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
  180. package/tests/cypress/src/entities/PagesPOM.ts +137 -0
  181. package/tests/cypress/src/entities/PostsPOM.ts +137 -0
  182. package/tests/cypress/src/entities/TasksPOM.ts +176 -0
  183. package/tests/cypress/src/entities/index.ts +14 -0
  184. package/tests/cypress/src/features/BillingPOM.ts +385 -0
  185. package/tests/cypress/src/features/DashboardPOM.ts +245 -0
  186. package/tests/cypress/src/features/DevtoolsPOM.ts +739 -0
  187. package/tests/cypress/src/features/PageBuilderPOM.ts +263 -0
  188. package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  189. package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  190. package/tests/cypress/src/features/SettingsPOM.ts +362 -0
  191. package/tests/cypress/src/features/SuperadminPOM.ts +331 -0
  192. package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  193. package/tests/cypress/src/features/index.ts +28 -0
  194. package/tests/cypress/src/helpers/ApiInterceptor.ts +177 -0
  195. package/tests/cypress/src/index.ts +101 -0
  196. package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
  197. package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
  198. package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
  199. package/tests/cypress/src/pages/dashboard/index.js +6 -0
  200. package/tests/cypress/src/pages/index.js +5 -0
  201. package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
  202. package/tests/cypress/src/pages/public/LandingPage.js +69 -0
  203. package/tests/cypress/src/pages/public/PricingPage.js +33 -0
  204. package/tests/cypress/src/pages/public/index.js +6 -0
  205. package/tests/cypress/src/selectors.ts +46 -0
  206. package/tests/cypress/src/session-helpers.ts +500 -0
  207. package/tests/cypress/support/doc-commands.ts +260 -0
  208. package/tests/cypress.config.ts +150 -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
  222. package/LICENSE +0 -21
@@ -0,0 +1,218 @@
1
+ ---
2
+ feature: Billing Usage Limits
3
+ priority: high
4
+ tags: [billing, usage, limits, resources, plans]
5
+ grepTags: [uat, billing, usage]
6
+ coverage: 7
7
+ status: pending-permission-fix
8
+ ---
9
+
10
+ # Billing Page - Usage Limits
11
+
12
+ > Tests for usage limits display including Free plan limits, Pro plan higher limits, Enterprise unlimited display, usage percentage, and progress indicators. **Note:** Currently skipped due to permission check issues.
13
+
14
+ ## Background
15
+
16
+ ```gherkin:en
17
+ Given I am logged in as a team owner
18
+ And I have navigated to the Billing settings page
19
+ And usage information is available for my team
20
+ ```
21
+
22
+ ```gherkin:es
23
+ Given estoy logueado como owner del team
24
+ And he navegado a la pagina de configuracion de Billing
25
+ And la informacion de uso esta disponible para mi team
26
+ ```
27
+
28
+ ---
29
+
30
+ ## @test BILL-UAT-080: Free plan shows usage with limits
31
+
32
+ ### Metadata
33
+ - **Priority:** Critical
34
+ - **Type:** Regression
35
+ - **Tags:** free, usage, limits
36
+ - **Status:** SKIPPED (permission issue)
37
+
38
+ ```gherkin:en
39
+ Scenario: Free plan displays usage against limits
40
+
41
+ Given I am on a Free plan team
42
+ When I visit the billing page
43
+ Then I should see usage displayed (X / Y format)
44
+ ```
45
+
46
+ ```gherkin:es
47
+ Scenario: Plan Free muestra uso contra limites
48
+
49
+ Given estoy en un team con plan Free
50
+ When visito la pagina de billing
51
+ Then deberia ver el uso mostrado (formato X / Y)
52
+ ```
53
+
54
+ ### Expected Results
55
+ - Usage section is visible
56
+ - Usage shows current/limit format
57
+ - Free plan limits are displayed
58
+
59
+ ---
60
+
61
+ ## @test BILL-UAT-081: Usage shows current count
62
+
63
+ ### Metadata
64
+ - **Priority:** Normal
65
+ - **Type:** Regression
66
+ - **Tags:** usage, count, display
67
+ - **Status:** SKIPPED (permission issue)
68
+
69
+ ```gherkin:en
70
+ Scenario: Usage shows current resource count
71
+
72
+ Given I am on the billing page
73
+ Then I should see my current usage numbers
74
+ ```
75
+
76
+ ```gherkin:es
77
+ Scenario: Uso muestra conteo actual de recursos
78
+
79
+ Given estoy en la pagina de billing
80
+ Then deberia ver mis numeros de uso actuales
81
+ ```
82
+
83
+ ### Expected Results
84
+ - Usage numbers are displayed
85
+ - Format matches X / Y pattern
86
+ - Numbers reflect actual resource count
87
+
88
+ ---
89
+
90
+ ## @test BILL-UAT-082: Pro plan shows higher limits
91
+
92
+ ### Metadata
93
+ - **Priority:** Normal
94
+ - **Type:** Regression
95
+ - **Tags:** pro, usage, limits
96
+ - **Status:** SKIPPED (permission issue)
97
+
98
+ ```gherkin:en
99
+ Scenario: Pro plan has higher limits than Free
100
+
101
+ Given I am on a Pro plan team
102
+ When I visit the billing page
103
+ Then I should see higher usage limits
104
+ ```
105
+
106
+ ```gherkin:es
107
+ Scenario: Plan Pro tiene limites mas altos que Free
108
+
109
+ Given estoy en un team con plan Pro
110
+ When visito la pagina de billing
111
+ Then deberia ver limites de uso mas altos
112
+ ```
113
+
114
+ ### Expected Results
115
+ - Pro plan limits are displayed
116
+ - Limits are higher than Free tier
117
+ - Usage section is visible
118
+
119
+ ---
120
+
121
+ ## @test BILL-UAT-083: Enterprise plan shows Unlimited where applicable
122
+
123
+ ### Metadata
124
+ - **Priority:** Normal
125
+ - **Type:** Regression
126
+ - **Tags:** enterprise, unlimited, limits
127
+ - **Status:** SKIPPED (permission issue)
128
+
129
+ ```gherkin:en
130
+ Scenario: Enterprise plan shows unlimited resources
131
+
132
+ Given I am on an Enterprise plan team
133
+ When I visit the billing page
134
+ Then I should see "Unlimited" or very high limits
135
+ ```
136
+
137
+ ```gherkin:es
138
+ Scenario: Plan Enterprise muestra recursos ilimitados
139
+
140
+ Given estoy en un team con plan Enterprise
141
+ When visito la pagina de billing
142
+ Then deberia ver "Ilimitado" o limites muy altos
143
+ ```
144
+
145
+ ### Expected Results
146
+ - Enterprise plan is displayed
147
+ - Some resources show as unlimited
148
+ - Billing page is visible
149
+
150
+ ---
151
+
152
+ ## @test BILL-UAT-084: Usage display is visible on billing page
153
+
154
+ ### Metadata
155
+ - **Priority:** Normal
156
+ - **Type:** Regression
157
+ - **Tags:** usage, section, visibility
158
+ - **Status:** SKIPPED (permission issue)
159
+
160
+ ```gherkin:en
161
+ Scenario: Usage section exists on billing page
162
+
163
+ Given I am on the billing page
164
+ Then I should see a usage section
165
+ ```
166
+
167
+ ```gherkin:es
168
+ Scenario: Seccion de uso existe en pagina de billing
169
+
170
+ Given estoy en la pagina de billing
171
+ Then deberia ver una seccion de uso
172
+ ```
173
+
174
+ ### Expected Results
175
+ - Billing main section is visible
176
+ - Usage section exists
177
+ - Usage information is displayed
178
+
179
+ ---
180
+
181
+ ## @test BILL-UAT-085: Usage reflects actual resource count
182
+
183
+ ### Metadata
184
+ - **Priority:** Normal
185
+ - **Type:** Regression
186
+ - **Tags:** usage, validation, accuracy
187
+ - **Status:** SKIPPED (permission issue)
188
+
189
+ ```gherkin:en
190
+ Scenario: Usage numbers are reasonable
191
+
192
+ Given I am on the billing page
193
+ Then the usage numbers should be non-negative integers
194
+ And current usage should not exceed the limit
195
+ ```
196
+
197
+ ```gherkin:es
198
+ Scenario: Numeros de uso son razonables
199
+
200
+ Given estoy en la pagina de billing
201
+ Then los numeros de uso deberian ser enteros no negativos
202
+ And el uso actual no deberia exceder el limite
203
+ ```
204
+
205
+ ### Expected Results
206
+ - Usage numbers are non-negative
207
+ - Limit numbers are at least 1
208
+ - Current usage does not exceed limit
209
+
210
+ ---
211
+
212
+ ## Known Issues
213
+
214
+ **Permission Check Issue (2025-12-28):**
215
+ - Billing page redirects to /dashboard/settings for all users
216
+ - `usePermission('settings.billing')` hook may not resolve correctly
217
+ - TeamContext may not be properly hydrated during Cypress session restore
218
+ - Investigation needed in: usePermission, TeamContext, permissionRegistry
@@ -0,0 +1,176 @@
1
+ /// <reference types="cypress" />
2
+
3
+ import * as allure from 'allure-cypress'
4
+ import { BillingPOM } from '../../../src/features/BillingPOM'
5
+ import {
6
+ loginAsFreePlanUser,
7
+ loginAsProPlanUser,
8
+ loginAsEnterprisePlanUser
9
+ } from '../../../src/session-helpers'
10
+
11
+ /**
12
+ * Billing Usage Limits UAT Tests
13
+ *
14
+ * Tests for usage limits display:
15
+ * - Free plan limits (tasks, customers)
16
+ * - Pro plan higher limits
17
+ * - Enterprise unlimited display
18
+ * - Usage percentage and progress bars
19
+ *
20
+ * Session: 2025-12-20-subscriptions-system-v2
21
+ *
22
+ * KNOWN ISSUE (2025-12-28):
23
+ * These tests are skipped due to permission check issues.
24
+ * The billing page redirects to /dashboard/settings even for owners.
25
+ * Investigation needed:
26
+ * - usePermission hook in billing/page.tsx may not be correctly resolving
27
+ * - TeamContext may not be properly hydrated during Cypress session restore
28
+ * - Related: settings.billing permission is configured for owner role only
29
+ *
30
+ * TODO: Debug usePermission('settings.billing') flow in Cypress context
31
+ */
32
+
33
+ describe('Billing Page - Usage Limits', {
34
+ tags: ['@uat', '@billing', '@usage']
35
+ }, () => {
36
+ const billingPage = BillingPOM.create()
37
+
38
+ // ============================================================
39
+ // USAGE DISPLAY TESTS
40
+ // ============================================================
41
+ describe('Usage Limits Display', () => {
42
+ beforeEach(() => {
43
+ allure.epic('UAT')
44
+ allure.feature('Billing')
45
+ allure.story('Usage Limits')
46
+ })
47
+
48
+ it.skip('BILL-UAT-080: Free plan shows usage with limits (PENDING: permission issue)', () => {
49
+ allure.severity('critical')
50
+ allure.description(`
51
+ Scenario: Free plan displays usage against limits
52
+ Given I am on a Free plan team
53
+ When I visit the billing page
54
+ Then I should see usage displayed (X / Y format)
55
+
56
+ SKIPPED: Billing page redirects due to usePermission check failing
57
+ `)
58
+
59
+ loginAsFreePlanUser()
60
+ cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
61
+ cy.url().should('include', '/dashboard')
62
+ billingPage.visitBilling()
63
+ billingPage.assertUsageVisible()
64
+ })
65
+
66
+ it.skip('BILL-UAT-081: Usage shows current count (PENDING: permission issue)', () => {
67
+ allure.severity('normal')
68
+ allure.description(`
69
+ Scenario: Usage shows current resource count
70
+ Given I am on the billing page
71
+ Then I should see my current usage numbers
72
+
73
+ SKIPPED: Billing page redirects due to usePermission check failing
74
+ `)
75
+
76
+ loginAsFreePlanUser()
77
+ cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
78
+ cy.url().should('include', '/dashboard')
79
+ billingPage.visitBilling()
80
+ billingPage.getBillingMain().within(() => {
81
+ cy.contains(/\d+\s*\/\s*\d+/).should('exist')
82
+ })
83
+ })
84
+
85
+ it.skip('BILL-UAT-082: Pro plan shows higher limits (PENDING: permission issue)', () => {
86
+ allure.severity('normal')
87
+ allure.description(`
88
+ Scenario: Pro plan has higher limits than Free
89
+ Given I am on a Pro plan team
90
+ When I visit the billing page
91
+ Then I should see higher usage limits
92
+
93
+ SKIPPED: Billing page redirects due to usePermission check failing
94
+ `)
95
+
96
+ loginAsProPlanUser()
97
+ cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
98
+ cy.url().should('include', '/dashboard')
99
+ billingPage.visitBilling()
100
+ billingPage.assertUsageVisible()
101
+ })
102
+
103
+ it.skip('BILL-UAT-083: Enterprise plan shows Unlimited where applicable (PENDING: permission issue)', () => {
104
+ allure.severity('normal')
105
+ allure.description(`
106
+ Scenario: Enterprise plan shows unlimited resources
107
+ Given I am on an Enterprise plan team
108
+ When I visit the billing page
109
+ Then I should see "Unlimited" or very high limits
110
+
111
+ SKIPPED: Billing page redirects due to usePermission check failing
112
+ `)
113
+
114
+ loginAsEnterprisePlanUser()
115
+ cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
116
+ cy.url().should('include', '/dashboard')
117
+ billingPage.visitBilling()
118
+ billingPage.assertBillingPageVisible()
119
+ billingPage.getBillingMain().should('be.visible')
120
+ })
121
+
122
+ it.skip('BILL-UAT-084: Usage display is visible on billing page (PENDING: permission issue)', () => {
123
+ allure.severity('normal')
124
+ allure.description(`
125
+ Scenario: Usage section exists on billing page
126
+ Given I am on the billing page
127
+ Then I should see a usage section
128
+
129
+ SKIPPED: Billing page redirects due to usePermission check failing
130
+ `)
131
+
132
+ loginAsFreePlanUser()
133
+ cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
134
+ cy.url().should('include', '/dashboard')
135
+ billingPage.visitBilling()
136
+ billingPage.getBillingMain().should('be.visible')
137
+ billingPage.assertUsageVisible()
138
+ })
139
+
140
+ it.skip('BILL-UAT-085: Usage reflects actual resource count (PENDING: permission issue)', () => {
141
+ allure.severity('normal')
142
+ allure.description(`
143
+ Scenario: Usage numbers are reasonable
144
+ Given I am on the billing page
145
+ Then the usage numbers should be non-negative integers
146
+
147
+ SKIPPED: Billing page redirects due to usePermission check failing
148
+ `)
149
+
150
+ loginAsFreePlanUser()
151
+ cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
152
+ cy.url().should('include', '/dashboard')
153
+ billingPage.visitBilling()
154
+ billingPage.getBillingMain().within(() => {
155
+ cy.contains(/\d+\s*\/\s*\d+/).invoke('text').then((text) => {
156
+ const match = text.match(/(\d+)\s*\/\s*(\d+)/)
157
+ if (match) {
158
+ const current = parseInt(match[1])
159
+ const limit = parseInt(match[2])
160
+ expect(current).to.be.at.least(0)
161
+ expect(limit).to.be.at.least(1)
162
+ expect(current).to.be.at.most(limit)
163
+ }
164
+ })
165
+ })
166
+ })
167
+ })
168
+
169
+ // Document the skipped tests
170
+ it('documents billing usage tests pending due to permission check', () => {
171
+ cy.log('6 billing usage tests are pending due to usePermission hook issue')
172
+ cy.log('The billing page redirects to /dashboard/settings for all users')
173
+ cy.log('Investigation needed in: usePermission, TeamContext, permissionRegistry')
174
+ cy.wrap(true).should('be.true')
175
+ })
176
+ })
@@ -0,0 +1,124 @@
1
+ ---
2
+ feature: Hero Block Component
3
+ priority: high
4
+ tags: [blocks, hero, page-builder, rendering]
5
+ grepTags: [uat, b-hero, feat-page-builder, smoke]
6
+ coverage: 3
7
+ status: placeholder
8
+ ---
9
+
10
+ # Hero Block - UAT Tests
11
+
12
+ > Tests for the Hero block component in page builder. Validates rendering, field behavior, and visual appearance. **Note:** These tests are placeholders to establish the block testing pattern.
13
+
14
+ ## Background
15
+
16
+ ```gherkin:en
17
+ Given I am logged in as Owner (owner@nextspark.dev)
18
+ And I have access to the page builder
19
+ And pages with Hero blocks are available
20
+ ```
21
+
22
+ ```gherkin:es
23
+ Given estoy logueado como Owner (owner@nextspark.dev)
24
+ And tengo acceso al page builder
25
+ And hay paginas con bloques Hero disponibles
26
+ ```
27
+
28
+ ---
29
+
30
+ ## @test BLOCK-HERO-001: Hero block renders with default content
31
+
32
+ ### Metadata
33
+ - **Priority:** Critical
34
+ - **Type:** Smoke
35
+ - **Tags:** rendering, default, structure
36
+ - **Grep:** `@smoke`
37
+
38
+ ```gherkin:en
39
+ Scenario: Hero block renders with default content
40
+
41
+ Given I am on a page with a hero block
42
+ When the page loads
43
+ Then the hero block structure should render
44
+ And default values should display correctly
45
+ ```
46
+
47
+ ```gherkin:es
48
+ Scenario: Bloque Hero renderiza con contenido por defecto
49
+
50
+ Given estoy en una pagina con un bloque hero
51
+ When la pagina carga
52
+ Then la estructura del bloque hero deberia renderizar
53
+ And los valores por defecto deberian mostrarse correctamente
54
+ ```
55
+
56
+ ### Expected Results
57
+ - Hero block container renders
58
+ - Default structure is visible
59
+ - Block displays without errors
60
+
61
+ ---
62
+
63
+ ## @test BLOCK-HERO-002: Hero block displays title and subtitle
64
+
65
+ ### Metadata
66
+ - **Priority:** Normal
67
+ - **Type:** Regression
68
+ - **Tags:** title, subtitle, fields
69
+
70
+ ```gherkin:en
71
+ Scenario: Hero block displays title and subtitle
72
+
73
+ Given I am on a page with a hero block
74
+ When the block has title and subtitle configured
75
+ Then the title should be visible
76
+ And the subtitle should be visible
77
+ ```
78
+
79
+ ```gherkin:es
80
+ Scenario: Bloque Hero muestra titulo y subtitulo
81
+
82
+ Given estoy en una pagina con un bloque hero
83
+ When el bloque tiene titulo y subtitulo configurados
84
+ Then el titulo deberia estar visible
85
+ And el subtitulo deberia estar visible
86
+ ```
87
+
88
+ ### Expected Results
89
+ - Title field displays correctly
90
+ - Subtitle field displays correctly
91
+ - Typography and styling are applied
92
+
93
+ ---
94
+
95
+ ## @test BLOCK-HERO-003: Hero block CTA buttons are configurable
96
+
97
+ ### Metadata
98
+ - **Priority:** Normal
99
+ - **Type:** Regression
100
+ - **Tags:** cta, buttons, configuration
101
+
102
+ ```gherkin:en
103
+ Scenario: Hero block CTA buttons are configurable
104
+
105
+ Given I am editing a hero block
106
+ When I configure CTA button settings
107
+ Then the CTA buttons should reflect the configuration
108
+ And button text and links should be customizable
109
+ ```
110
+
111
+ ```gherkin:es
112
+ Scenario: Botones CTA del bloque Hero son configurables
113
+
114
+ Given estoy editando un bloque hero
115
+ When configuro los ajustes de botones CTA
116
+ Then los botones CTA deberian reflejar la configuracion
117
+ And el texto y enlaces de botones deberian ser personalizables
118
+ ```
119
+
120
+ ### Expected Results
121
+ - CTA buttons are configurable
122
+ - Button text can be customized
123
+ - Button links can be set
124
+ - Configuration changes are reflected in preview
@@ -0,0 +1,56 @@
1
+ /// <reference types="cypress" />
2
+
3
+ /**
4
+ * Hero Block - UAT Tests
5
+ *
6
+ * Tests for the Hero block component in page builder.
7
+ * Validates rendering, field behavior, and visual appearance.
8
+ *
9
+ * Tags: @uat, @b-hero, @feat-page-builder
10
+ */
11
+
12
+ import * as allure from 'allure-cypress'
13
+
14
+ describe('Hero Block', {
15
+ tags: ['@uat', '@b-hero', '@feat-page-builder', '@smoke']
16
+ }, () => {
17
+
18
+ beforeEach(() => {
19
+ allure.epic('UAT')
20
+ allure.feature('Page Builder')
21
+ allure.story('Hero Block')
22
+ })
23
+
24
+ describe('Block Rendering', () => {
25
+ it('BLOCK_HERO_001: Hero block renders with default content', () => {
26
+ allure.severity('critical')
27
+
28
+ // TODO: Implement actual test
29
+ // This is a placeholder to establish the block testing pattern
30
+ // 1. Navigate to a page with hero block
31
+ // 2. Verify block structure renders
32
+ // 3. Check default values display correctly
33
+
34
+ cy.log('Hero block rendering test - placeholder')
35
+ expect(true).to.be.true
36
+ })
37
+
38
+ it('BLOCK_HERO_002: Hero block displays title and subtitle', () => {
39
+ allure.severity('normal')
40
+
41
+ // TODO: Implement test for title/subtitle fields
42
+ cy.log('Hero block title/subtitle test - placeholder')
43
+ expect(true).to.be.true
44
+ })
45
+ })
46
+
47
+ describe('Block Fields', () => {
48
+ it('BLOCK_HERO_003: Hero block CTA buttons are configurable', () => {
49
+ allure.severity('normal')
50
+
51
+ // TODO: Test CTA button configuration
52
+ cy.log('Hero block CTA test - placeholder')
53
+ expect(true).to.be.true
54
+ })
55
+ })
56
+ })