@nextsparkjs/theme-default 0.1.0-beta.17 → 0.1.0-beta.171

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 (332) hide show
  1. package/api/ai/chat/stream/route.ts +4 -1
  2. package/api/ai/orchestrator/route.ts +10 -3
  3. package/api/ai/single-agent/route.ts +10 -3
  4. package/api/ai/usage/route.ts +4 -1
  5. package/blocks/benefits/component.tsx +4 -4
  6. package/blocks/cta-section/component.tsx +4 -4
  7. package/blocks/faq-accordion/component.tsx +2 -2
  8. package/blocks/features-grid/component.tsx +5 -5
  9. package/blocks/hero/component.tsx +2 -2
  10. package/blocks/hero/fields.ts +1 -1
  11. package/blocks/hero-with-form/component.tsx +7 -7
  12. package/blocks/hero-with-form/fields.ts +1 -1
  13. package/blocks/jumbotron/component.tsx +7 -7
  14. package/blocks/jumbotron/fields.ts +1 -1
  15. package/blocks/logo-cloud/component.tsx +6 -6
  16. package/blocks/logo-cloud/fields.ts +1 -1
  17. package/blocks/post-content/component.tsx +2 -2
  18. package/blocks/pricing-table/component.tsx +5 -5
  19. package/blocks/split-content/component.tsx +5 -5
  20. package/blocks/split-content/fields.ts +1 -1
  21. package/blocks/stats-counter/component.tsx +9 -9
  22. package/blocks/testimonials/component.tsx +4 -4
  23. package/blocks/testimonials/fields.ts +1 -1
  24. package/blocks/text-content/component.tsx +12 -10
  25. package/blocks/timeline/component.tsx +12 -12
  26. package/blocks/video-hero/component.tsx +7 -7
  27. package/blocks/video-hero/fields.ts +1 -1
  28. package/components/ai-chat/ChatPanel.tsx +7 -7
  29. package/components/ai-chat/Message.tsx +2 -2
  30. package/components/ai-chat/MessageInput.tsx +3 -3
  31. package/components/ai-chat/MessageList.tsx +3 -3
  32. package/components/ai-chat/TypingIndicator.tsx +2 -2
  33. package/config/app.config.ts +90 -62
  34. package/config/billing.config.ts +5 -10
  35. package/config/dashboard.config.ts +14 -0
  36. package/config/features.config.ts +10 -0
  37. package/config/permissions.config.ts +22 -23
  38. package/docs/{01-overview → public/01-overview}/01-introduction.md +5 -0
  39. package/docs/{01-overview → public/01-overview}/02-customization.md +5 -0
  40. package/docs/{02-features → public/02-features}/03-tasks-entity.md +5 -0
  41. package/docs/{03-ai → public/03-ai}/01-overview.md +5 -0
  42. package/docs/{03-ai → public/03-ai}/02-customization.md +5 -0
  43. package/docs/superadmin/01-setup/01-configuration.md +79 -0
  44. package/docs/superadmin/01-setup/02-deployment.md +82 -0
  45. package/docs/superadmin/02-management/01-users.md +83 -0
  46. package/docs/superadmin/03-integrations/01-langchain.md +139 -0
  47. package/emails/verify-email.ts +33 -0
  48. package/entities/customers/api/docs.md +107 -0
  49. package/entities/customers/api/presets.ts +80 -0
  50. package/entities/pages/api/docs.md +114 -0
  51. package/entities/pages/api/presets.ts +72 -0
  52. package/entities/posts/api/docs.md +120 -0
  53. package/entities/posts/api/presets.ts +74 -0
  54. package/entities/tasks/api/docs.md +126 -0
  55. package/entities/tasks/api/presets.ts +84 -0
  56. package/lib/selectors.ts +7 -4
  57. package/messages/de/admin.json +45 -0
  58. package/messages/en/admin.json +56 -0
  59. package/messages/en/navigation.json +2 -1
  60. package/messages/es/admin.json +56 -0
  61. package/messages/es/navigation.json +2 -1
  62. package/messages/fr/admin.json +45 -0
  63. package/messages/it/admin.json +45 -0
  64. package/messages/pt/admin.json +45 -0
  65. package/migrations/089_add_editor_team_role.sql +15 -23
  66. package/migrations/090_demo_users_teams.sql +11 -11
  67. package/migrations/091_greek_teams_billing.sql +15 -15
  68. package/migrations/093_pages_sample_data.sql +7 -7
  69. package/migrations/098_patterns_sample_data.sql +234 -0
  70. package/nextsparkjs-theme-default-0.1.0-beta.137.tgz +0 -0
  71. package/package.json +4 -3
  72. package/styles/globals.css +42 -0
  73. package/templates/(public)/page.tsx +1 -1
  74. package/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
  75. package/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
  76. package/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
  77. package/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
  78. package/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
  79. package/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
  80. package/tests/cypress/e2e/_utils/docs/README.md +215 -0
  81. package/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
  82. package/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
  83. package/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
  84. package/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
  85. package/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +615 -0
  86. package/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +783 -0
  87. package/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
  88. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
  89. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
  90. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
  91. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
  92. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
  93. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
  94. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
  95. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
  96. package/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
  97. package/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
  98. package/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
  99. package/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
  100. package/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
  101. package/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
  102. package/tests/cypress/e2e/_utils/selectors/public.cy.ts +112 -0
  103. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
  104. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
  105. package/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
  106. package/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
  107. package/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
  108. package/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
  109. package/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
  110. package/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
  111. package/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
  112. package/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
  113. package/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
  114. package/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
  115. package/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
  116. package/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
  117. package/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
  118. package/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
  119. package/tests/cypress/e2e/_utils/selectors/taxonomies.cy.ts +126 -0
  120. package/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
  121. package/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
  122. package/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
  123. package/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
  124. package/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
  125. package/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +294 -0
  126. package/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
  127. package/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +149 -0
  128. package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
  129. package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.cy.ts +194 -0
  130. package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
  131. package/tests/cypress/e2e/ai/chat-api.cy.ts +119 -0
  132. package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
  133. package/tests/cypress/e2e/api/_core/billing/BillingAPIController.js +319 -0
  134. package/tests/cypress/e2e/api/_core/billing/check-action.cy.ts +326 -0
  135. package/tests/cypress/e2e/api/_core/billing/checkout.cy.ts +358 -0
  136. package/tests/cypress/e2e/api/_core/billing/lifecycle.cy.ts +423 -0
  137. package/tests/cypress/e2e/api/_core/billing/plans/README.md +345 -0
  138. package/tests/cypress/e2e/api/_core/billing/plans/business.cy.ts +412 -0
  139. package/tests/cypress/e2e/api/_core/billing/plans/downgrade.cy.ts +510 -0
  140. package/tests/cypress/e2e/api/_core/billing/plans/fixtures/billing-plans.json +163 -0
  141. package/tests/cypress/e2e/api/_core/billing/plans/free.cy.ts +500 -0
  142. package/tests/cypress/e2e/api/_core/billing/plans/pro.cy.ts +497 -0
  143. package/tests/cypress/e2e/api/_core/billing/plans/starter.cy.ts +342 -0
  144. package/tests/cypress/e2e/api/_core/billing/portal.cy.ts +313 -0
  145. package/tests/cypress/e2e/api/_core/devtools/registries.bdd.md +300 -0
  146. package/tests/cypress/e2e/api/_core/devtools/registries.cy.ts +368 -0
  147. package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.bdd.md +375 -0
  148. package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.cy.ts +346 -0
  149. package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.bdd.md +451 -0
  150. package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.cy.ts +447 -0
  151. package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.bdd.md +649 -0
  152. package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.cy.ts +333 -0
  153. package/tests/cypress/e2e/api/_core/security/security-headers.cy.ts +601 -0
  154. package/tests/cypress/e2e/api/_core/settings/api-keys.crud.cy.ts +923 -0
  155. package/tests/cypress/e2e/api/_core/teams/teams-security.cy.ts +415 -0
  156. package/tests/cypress/e2e/api/_core/users/users-crud.cy.ts +469 -0
  157. package/tests/cypress/e2e/api/_core/users/users-metas.cy.ts +913 -0
  158. package/tests/cypress/e2e/api/_core/users/users-security.cy.ts +375 -0
  159. package/tests/cypress/e2e/api/entities/customers/customers-crud.cy.ts +648 -0
  160. package/tests/cypress/e2e/api/entities/customers/customers-metas.cy.ts +839 -0
  161. package/tests/cypress/e2e/api/entities/media/media-crud.cy.ts +600 -0
  162. package/tests/cypress/e2e/api/entities/media/media-role-permissions.cy.ts +617 -0
  163. package/tests/cypress/e2e/api/entities/media/media-team-isolation.cy.ts +464 -0
  164. package/tests/cypress/e2e/api/entities/pages/blocks-scope.cy.ts +396 -0
  165. package/tests/cypress/e2e/api/entities/pages/pages-crud.cy.ts +425 -0
  166. package/tests/cypress/e2e/api/entities/pages/pages-status.cy.ts +335 -0
  167. package/tests/cypress/e2e/api/entities/posts/post-categories-crud.cy.ts +610 -0
  168. package/tests/cypress/e2e/api/entities/posts/posts-crud.cy.ts +709 -0
  169. package/tests/cypress/e2e/api/entities/posts/posts-status.cy.ts +396 -0
  170. package/tests/cypress/e2e/api/entities/tasks/tasks-crud.cy.ts +602 -0
  171. package/tests/cypress/e2e/api/entities/tasks/tasks-metas.cy.ts +878 -0
  172. package/tests/cypress/e2e/patterns/patterns-in-pages.cy.ts +367 -0
  173. package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.bdd.md +231 -0
  174. package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.cy.ts +144 -0
  175. package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.bdd.md +118 -0
  176. package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.cy.ts +84 -0
  177. package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.bdd.md +288 -0
  178. package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.cy.ts +188 -0
  179. package/tests/cypress/e2e/uat/_core/auth/login-logout.bdd.md +160 -0
  180. package/tests/cypress/e2e/uat/_core/auth/login-logout.cy.ts +116 -0
  181. package/tests/cypress/e2e/uat/_core/auth/password-reset.bdd.md +289 -0
  182. package/tests/cypress/e2e/uat/_core/auth/password-reset.cy.ts +200 -0
  183. package/tests/cypress/e2e/uat/_core/auth/registration-control-invitation.cy.ts +176 -0
  184. package/tests/cypress/e2e/uat/_core/auth/registration-control-open.cy.ts +131 -0
  185. package/tests/cypress/e2e/uat/_core/auth/registration-control.cy.ts +140 -0
  186. package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.bdd.md +225 -0
  187. package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.cy.ts +148 -0
  188. package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.bdd.md +251 -0
  189. package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.cy.ts +163 -0
  190. package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.bdd.md +231 -0
  191. package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.cy.ts +141 -0
  192. package/tests/cypress/e2e/uat/_core/billing/extended.bdd.md +273 -0
  193. package/tests/cypress/e2e/uat/_core/billing/extended.cy.ts +209 -0
  194. package/tests/cypress/e2e/uat/_core/billing/feature-gates.bdd.md +407 -0
  195. package/tests/cypress/e2e/uat/_core/billing/feature-gates.cy.ts +307 -0
  196. package/tests/cypress/e2e/uat/_core/billing/page.bdd.md +329 -0
  197. package/tests/cypress/e2e/uat/_core/billing/page.cy.ts +250 -0
  198. package/tests/cypress/e2e/uat/_core/billing/status.bdd.md +190 -0
  199. package/tests/cypress/e2e/uat/_core/billing/status.cy.ts +145 -0
  200. package/tests/cypress/e2e/uat/_core/billing/team-switch.bdd.md +156 -0
  201. package/tests/cypress/e2e/uat/_core/billing/team-switch.cy.ts +122 -0
  202. package/tests/cypress/e2e/uat/_core/billing/usage.bdd.md +218 -0
  203. package/tests/cypress/e2e/uat/_core/billing/usage.cy.ts +176 -0
  204. package/tests/cypress/e2e/uat/_core/blocks/hero.bdd.md +124 -0
  205. package/tests/cypress/e2e/uat/_core/blocks/hero.cy.ts +56 -0
  206. package/tests/cypress/e2e/uat/_core/devtools/api-tester.cy.ts +390 -0
  207. package/tests/cypress/e2e/uat/_core/performance/suspense-loading.cy.ts +134 -0
  208. package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.bdd.md +736 -0
  209. package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.cy.ts +740 -0
  210. package/tests/cypress/e2e/uat/_core/teams/inline-edit.cy.ts +278 -0
  211. package/tests/cypress/e2e/uat/_core/teams/roles-matrix.bdd.md +553 -0
  212. package/tests/cypress/e2e/uat/_core/teams/roles-matrix.cy.ts +185 -0
  213. package/tests/cypress/e2e/uat/_core/teams/switcher.bdd.md +1151 -0
  214. package/tests/cypress/e2e/uat/_core/teams/switcher.cy.ts +497 -0
  215. package/tests/cypress/e2e/uat/_core/teams/team-switcher.md +198 -0
  216. package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
  217. package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
  218. package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
  219. package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
  220. package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
  221. package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
  222. package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
  223. package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
  224. package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
  225. package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
  226. package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
  227. package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
  228. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
  229. package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
  230. package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
  231. package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
  232. package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
  233. package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
  234. package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
  235. package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
  236. package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
  237. package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
  238. package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
  239. package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
  240. package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
  241. package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
  242. package/tests/cypress/e2e/uat/features/roles/editor-role.bdd.md +552 -0
  243. package/tests/cypress/e2e/uat/features/roles/editor-role.cy.ts +210 -0
  244. package/tests/cypress/e2e/uat/features/roles/member-restrictions.bdd.md +450 -0
  245. package/tests/cypress/e2e/uat/features/roles/member-restrictions.cy.ts +189 -0
  246. package/tests/cypress/e2e/uat/features/roles/owner-full-crud.bdd.md +530 -0
  247. package/tests/cypress/e2e/uat/features/roles/owner-full-crud.cy.ts +247 -0
  248. package/tests/cypress/fixtures/blocks.json +218 -0
  249. package/tests/cypress/fixtures/entities.json +87 -0
  250. package/tests/cypress/fixtures/page-builder.json +21 -0
  251. package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
  252. package/tests/cypress/src/components/CustomersPOM.ts +439 -0
  253. package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
  254. package/tests/cypress/src/components/EntityForm.ts +375 -0
  255. package/tests/cypress/src/components/EntityList.ts +389 -0
  256. package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
  257. package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
  258. package/tests/cypress/src/components/PostsListPOM.ts +223 -0
  259. package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
  260. package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
  261. package/tests/cypress/src/components/TasksPOM.ts +272 -0
  262. package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
  263. package/tests/cypress/src/components/index.ts +21 -0
  264. package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
  265. package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
  266. package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
  267. package/tests/cypress/src/controllers/MediaAPIController.js +231 -0
  268. package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
  269. package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
  270. package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
  271. package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
  272. package/tests/cypress/src/controllers/index.js +25 -0
  273. package/tests/cypress/src/core/AuthPOM.ts +450 -0
  274. package/tests/cypress/src/core/BasePOM.ts +33 -0
  275. package/tests/cypress/src/core/BlockEditorBasePOM.ts +874 -0
  276. package/tests/cypress/src/core/DashboardEntityPOM.ts +41 -0
  277. package/tests/cypress/src/core/index.ts +14 -0
  278. package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
  279. package/tests/cypress/src/entities/PagesPOM.ts +137 -0
  280. package/tests/cypress/src/entities/PatternsPOM.ts +329 -0
  281. package/tests/cypress/src/entities/PostsPOM.ts +137 -0
  282. package/tests/cypress/src/entities/TasksPOM.ts +246 -0
  283. package/tests/cypress/src/entities/index.ts +16 -0
  284. package/tests/cypress/src/features/BillingPOM.ts +385 -0
  285. package/tests/cypress/src/features/DashboardPOM.ts +271 -0
  286. package/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
  287. package/tests/cypress/src/features/PageBuilderPOM.ts +283 -0
  288. package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
  289. package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
  290. package/tests/cypress/src/features/SettingsPOM.ts +707 -0
  291. package/tests/cypress/src/features/SuperadminPOM.ts +851 -0
  292. package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
  293. package/tests/cypress/src/features/index.ts +28 -0
  294. package/tests/cypress/src/helpers/ApiInterceptor.ts +20 -0
  295. package/tests/cypress/src/index.ts +101 -0
  296. package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
  297. package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
  298. package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
  299. package/tests/cypress/src/pages/dashboard/index.js +6 -0
  300. package/tests/cypress/src/pages/index.js +5 -0
  301. package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
  302. package/tests/cypress/src/pages/public/LandingPage.js +69 -0
  303. package/tests/cypress/src/pages/public/PricingPage.js +33 -0
  304. package/tests/cypress/src/pages/public/index.js +6 -0
  305. package/tests/cypress/src/selectors.ts +46 -0
  306. package/tests/cypress/src/session-helpers.ts +518 -0
  307. package/tests/cypress/support/doc-commands.ts +260 -0
  308. package/tests/cypress/support/e2e.ts +90 -0
  309. package/tests/cypress.config.ts +178 -0
  310. package/tests/jest/__mocks__/@nextsparkjs/core/components/ui/badge.js +16 -0
  311. package/tests/jest/__mocks__/@nextsparkjs/core/lib/db.js +11 -0
  312. package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +160 -0
  313. package/tests/jest/__mocks__/@nextsparkjs/registries/theme-registry.ts +68 -0
  314. package/tests/jest/__mocks__/jose.js +22 -0
  315. package/tests/jest/__mocks__/next/image.js +15 -0
  316. package/tests/jest/__mocks__/next-server.js +56 -0
  317. package/tests/jest/components/post-header.test.tsx +377 -0
  318. package/tests/jest/jest.config.cjs +154 -0
  319. package/tests/jest/langchain/COVERAGE.md +372 -0
  320. package/tests/jest/langchain/guardrails.test.ts +465 -0
  321. package/tests/jest/langchain/streaming.test.ts +370 -0
  322. package/tests/jest/langchain/token-tracker.test.ts +455 -0
  323. package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
  324. package/tests/jest/langchain/tracer.test.ts +823 -0
  325. package/tests/jest/services/tasks.service.test.ts +707 -0
  326. package/tests/jest/setup.ts +170 -0
  327. package/tests/jest/tsconfig.jest.json +6 -0
  328. package/tests/jest/validation/categories.test.ts +429 -0
  329. package/tests/jest/validation/posts.test.ts +546 -0
  330. package/tests/tsconfig.json +21 -0
  331. /package/docs/{02-features → public/02-features}/01-components.md +0 -0
  332. /package/docs/{02-features → public/02-features}/02-styling.md +0 -0
@@ -0,0 +1,234 @@
1
+ -- Migration: 098_patterns_sample_data.sql
2
+ -- Description: Sample patterns for testing pattern references and usage tracking
3
+ -- Date: 2025-01-17
4
+
5
+ -- =====================================================
6
+ -- PATTERNS SAMPLE DATA
7
+ -- =====================================================
8
+
9
+ -- Pattern 1: Newsletter CTA (Published)
10
+ INSERT INTO public.patterns (
11
+ id,
12
+ "userId",
13
+ "teamId",
14
+ title,
15
+ slug,
16
+ blocks,
17
+ status,
18
+ description,
19
+ "createdAt",
20
+ "updatedAt"
21
+ ) VALUES (
22
+ '00000000-0000-4000-b000-000000000001',
23
+ 'test-developer-001',
24
+ 'team-nextspark-001',
25
+ 'Newsletter CTA',
26
+ 'newsletter-cta',
27
+ '[
28
+ {
29
+ "id": "newsletter-cta-block",
30
+ "blockSlug": "cta-section",
31
+ "props": {
32
+ "title": "Stay Updated",
33
+ "content": "Subscribe to our newsletter for the latest updates, tips, and exclusive content delivered straight to your inbox.",
34
+ "backgroundColor": "primary",
35
+ "textColor": "white",
36
+ "primaryCta": {
37
+ "label": "Subscribe Now",
38
+ "url": "/newsletter",
39
+ "variant": "secondary"
40
+ },
41
+ "secondaryCta": {
42
+ "label": "Learn More",
43
+ "url": "/about",
44
+ "variant": "outline"
45
+ }
46
+ }
47
+ }
48
+ ]',
49
+ 'published',
50
+ 'Reusable newsletter call-to-action section for pages',
51
+ NOW() - INTERVAL '7 days',
52
+ NOW() - INTERVAL '2 days'
53
+ ) ON CONFLICT (id) DO UPDATE SET
54
+ title = EXCLUDED.title,
55
+ slug = EXCLUDED.slug,
56
+ blocks = EXCLUDED.blocks,
57
+ status = EXCLUDED.status,
58
+ description = EXCLUDED.description,
59
+ "updatedAt" = EXCLUDED."updatedAt";
60
+
61
+ -- Pattern 2: Footer Links (Published)
62
+ INSERT INTO public.patterns (
63
+ id,
64
+ "userId",
65
+ "teamId",
66
+ title,
67
+ slug,
68
+ blocks,
69
+ status,
70
+ description,
71
+ "createdAt",
72
+ "updatedAt"
73
+ ) VALUES (
74
+ '00000000-0000-4000-b000-000000000002',
75
+ 'test-developer-001',
76
+ 'team-nextspark-001',
77
+ 'Footer Links',
78
+ 'footer-links',
79
+ '[
80
+ {
81
+ "id": "footer-links-block",
82
+ "blockSlug": "text-content",
83
+ "props": {
84
+ "content": "## Quick Links\n\n- [Home](/)\n- [Features](/features)\n- [Pricing](/pricing)\n- [About](/about)\n- [Contact](/contact)\n\n## Resources\n\n- [Documentation](/getting-started)\n- [API Reference](/api)\n- [Support](/support)\n- [Blog](/blog)",
85
+ "textAlign": "left",
86
+ "maxWidth": "4xl",
87
+ "padding": "lg"
88
+ }
89
+ }
90
+ ]',
91
+ 'published',
92
+ 'Common footer links section for all pages',
93
+ NOW() - INTERVAL '14 days',
94
+ NOW() - INTERVAL '5 days'
95
+ ) ON CONFLICT (id) DO UPDATE SET
96
+ title = EXCLUDED.title,
97
+ slug = EXCLUDED.slug,
98
+ blocks = EXCLUDED.blocks,
99
+ status = EXCLUDED.status,
100
+ description = EXCLUDED.description,
101
+ "updatedAt" = EXCLUDED."updatedAt";
102
+
103
+ -- Pattern 3: Hero Header (Draft)
104
+ INSERT INTO public.patterns (
105
+ id,
106
+ "userId",
107
+ "teamId",
108
+ title,
109
+ slug,
110
+ blocks,
111
+ status,
112
+ description,
113
+ "createdAt",
114
+ "updatedAt"
115
+ ) VALUES (
116
+ '00000000-0000-4000-b000-000000000003',
117
+ 'test-developer-001',
118
+ 'team-nextspark-001',
119
+ 'Hero Header',
120
+ 'hero-header',
121
+ '[
122
+ {
123
+ "id": "hero-header-block",
124
+ "blockSlug": "hero",
125
+ "props": {
126
+ "title": "Welcome to NextSpark",
127
+ "content": "The complete SaaS boilerplate for modern web applications. Build faster, scale smarter.",
128
+ "textAlign": "center",
129
+ "size": "lg",
130
+ "cta": {
131
+ "text": "Get Started",
132
+ "link": "/signup",
133
+ "variant": "default"
134
+ },
135
+ "secondaryCta": {
136
+ "text": "View Demo",
137
+ "link": "/demo",
138
+ "variant": "outline"
139
+ }
140
+ }
141
+ }
142
+ ]',
143
+ 'draft',
144
+ 'Standard hero header for landing pages (work in progress)',
145
+ NOW() - INTERVAL '3 days',
146
+ NOW() - INTERVAL '1 day'
147
+ ) ON CONFLICT (id) DO UPDATE SET
148
+ title = EXCLUDED.title,
149
+ slug = EXCLUDED.slug,
150
+ blocks = EXCLUDED.blocks,
151
+ status = EXCLUDED.status,
152
+ description = EXCLUDED.description,
153
+ "updatedAt" = EXCLUDED."updatedAt";
154
+
155
+ -- =====================================================
156
+ -- PATTERN USAGES SAMPLE DATA
157
+ -- =====================================================
158
+
159
+ -- Usage 1: Newsletter CTA used in Home page
160
+ INSERT INTO public.pattern_usages (
161
+ id,
162
+ "patternId",
163
+ "entityType",
164
+ "entityId",
165
+ "teamId",
166
+ "createdAt"
167
+ ) VALUES (
168
+ '00000000-0000-4000-c000-000000000001',
169
+ '00000000-0000-4000-b000-000000000001',
170
+ 'pages',
171
+ '00000000-0000-4000-a000-000000000001',
172
+ 'team-nextspark-001',
173
+ NOW() - INTERVAL '5 days'
174
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
175
+
176
+ -- Usage 2: Newsletter CTA used in Features page
177
+ INSERT INTO public.pattern_usages (
178
+ id,
179
+ "patternId",
180
+ "entityType",
181
+ "entityId",
182
+ "teamId",
183
+ "createdAt"
184
+ ) VALUES (
185
+ '00000000-0000-4000-c000-000000000002',
186
+ '00000000-0000-4000-b000-000000000001',
187
+ 'pages',
188
+ '00000000-0000-4000-a000-000000000002',
189
+ 'team-nextspark-001',
190
+ NOW() - INTERVAL '4 days'
191
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
192
+
193
+ -- Usage 3: Footer Links used in Home page
194
+ INSERT INTO public.pattern_usages (
195
+ id,
196
+ "patternId",
197
+ "entityType",
198
+ "entityId",
199
+ "teamId",
200
+ "createdAt"
201
+ ) VALUES (
202
+ '00000000-0000-4000-c000-000000000003',
203
+ '00000000-0000-4000-b000-000000000002',
204
+ 'pages',
205
+ '00000000-0000-4000-a000-000000000001',
206
+ 'team-nextspark-001',
207
+ NOW() - INTERVAL '10 days'
208
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
209
+
210
+ -- Usage 4: Footer Links used in About page
211
+ INSERT INTO public.pattern_usages (
212
+ id,
213
+ "patternId",
214
+ "entityType",
215
+ "entityId",
216
+ "teamId",
217
+ "createdAt"
218
+ ) VALUES (
219
+ '00000000-0000-4000-c000-000000000004',
220
+ '00000000-0000-4000-b000-000000000002',
221
+ 'pages',
222
+ '00000000-0000-4000-a000-000000000004',
223
+ 'team-nextspark-001',
224
+ NOW() - INTERVAL '8 days'
225
+ ) ON CONFLICT ("patternId", "entityType", "entityId") DO NOTHING;
226
+
227
+ -- =====================================================
228
+ -- VERIFICATION QUERIES (for manual testing)
229
+ -- =====================================================
230
+ -- SELECT id, title, status FROM patterns WHERE id::text LIKE '00000000-0000-4000-b000-%';
231
+ -- Expected: 3 rows (newsletter, footer-links, hero-header)
232
+
233
+ -- SELECT id, "patternId", "entityType", "entityId" FROM pattern_usages WHERE id::text LIKE '00000000-0000-4000-c000-%';
234
+ -- Expected: 4 rows
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/theme-default",
3
- "version": "0.1.0-beta.17",
3
+ "version": "0.1.0-beta.171",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./config/theme.config.ts",
@@ -9,6 +9,8 @@
9
9
  ],
10
10
  "dependencies": {},
11
11
  "peerDependencies": {
12
+ "@nextsparkjs/core": "*",
13
+ "@nextsparkjs/testing": "*",
12
14
  "@tanstack/react-query": "^5.0.0",
13
15
  "lucide-react": "^0.539.0",
14
16
  "next": "^15.0.0",
@@ -16,8 +18,7 @@
16
18
  "react": "^19.0.0",
17
19
  "react-dom": "^19.0.0",
18
20
  "react-markdown": "^10.1.0",
19
- "zod": "^4.0.0",
20
- "@nextsparkjs/core": "0.1.0-beta.17"
21
+ "zod": "^4.0.0"
21
22
  },
22
23
  "nextspark": {
23
24
  "type": "theme",
@@ -3,8 +3,38 @@
3
3
  *
4
4
  * Pure neutral grays using OKLCH color space.
5
5
  * Based on shadcn/ui default configuration.
6
+ *
7
+ * ÚNICA FUENTE DE VERDAD para estilos del theme.
8
+ * Editar este archivo para customizar el design system.
6
9
  */
7
10
 
11
+ /* =============================================
12
+ IMPORTS
13
+ ============================================= */
14
+ @import "tailwindcss";
15
+
16
+ /* =============================================
17
+ TAILWIND v4 DARK MODE CONFIGURATION
18
+
19
+ Por defecto Tailwind v4 usa @media (prefers-color-scheme: dark)
20
+ para las variantes dark:. Esto causa problemas porque:
21
+ - next-themes usa la clase .dark en el HTML
22
+ - El sistema operativo puede tener dark mode aunque la app use light
23
+
24
+ Esta configuración hace que Tailwind use el selector de clase .dark
25
+ en lugar de la media query, sincronizándose con next-themes.
26
+ ============================================= */
27
+ @custom-variant dark (&:where(.dark, .dark *));
28
+
29
+ @plugin "@tailwindcss/container-queries";
30
+ @import "@nextsparkjs/core/styles/ui.css";
31
+ @import "@nextsparkjs/core/styles/utilities.css";
32
+ @import "@nextsparkjs/core/styles/docs.css";
33
+ @source "../../../**/*.{js,ts,jsx,tsx}";
34
+ /* Core package: monorepo (short path) + npm projects (long path) */
35
+ @source "../node_modules/@nextsparkjs/core/dist/**/*.js";
36
+ @source "../../../../node_modules/@nextsparkjs/core/dist/**/*.js";
37
+
8
38
  /* =============================================
9
39
  DEFAULT THEME - LIGHT MODE
10
40
  ============================================= */
@@ -177,3 +207,15 @@
177
207
  --shadow-xl: var(--shadow-xl);
178
208
  --shadow-2xl: var(--shadow-2xl);
179
209
  }
210
+
211
+ /* =============================================
212
+ BASE STYLES
213
+ ============================================= */
214
+ * {
215
+ border-color: var(--border);
216
+ }
217
+
218
+ body {
219
+ background-color: var(--background);
220
+ color: var(--foreground);
221
+ }
@@ -69,7 +69,7 @@ function Home() {
69
69
  <span className="text-sm font-medium">{t('auth.authenticated')}</span>
70
70
  </div>
71
71
  <p className="text-lg">
72
- {t('auth.welcomeBack', { email: user.email })}
72
+ {t('auth.welcomeBack', { email: user.email || '' })}
73
73
  </p>
74
74
  <Link href="/dashboard">
75
75
  <Button size="lg" className="gap-2">
@@ -0,0 +1,262 @@
1
+ ---
2
+ feature: DevTools Access Control
3
+ priority: critical
4
+ tags: [dev-area, access-control, security, roles]
5
+ grepTags: [uat, feat-dev-area, smoke, regression]
6
+ coverage: 7
7
+ ---
8
+
9
+ # DevTools Access Control
10
+
11
+ > Role-based access control tests for the /devtools area. Validates that Developer users can access all /devtools routes and /admin, while Superadmin and Member users are blocked.
12
+
13
+ ## @test ACCESS-001: Developer can access /devtools
14
+
15
+ ### Metadata
16
+ - **Priority:** Critical
17
+ - **Type:** Smoke
18
+ - **Tags:** developer, access, home
19
+ - **Grep:** `@smoke`
20
+
21
+ ```gherkin:en
22
+ Scenario: Developer can access /devtools home page
23
+
24
+ Given I am logged in as Developer (developer@nextspark.dev)
25
+ When I visit /devtools
26
+ Then I should be on /devtools home page
27
+ And the home page container should be visible
28
+ ```
29
+
30
+ ```gherkin:es
31
+ Scenario: Developer puede acceder a /devtools home page
32
+
33
+ Given estoy logueado como Developer (developer@nextspark.dev)
34
+ When visito /devtools
35
+ Then deberia estar en /devtools home page
36
+ And el contenedor de home page deberia estar visible
37
+ ```
38
+
39
+ ### Expected Results
40
+ - Developer successfully accesses /devtools
41
+ - Home page renders correctly
42
+ - No access denied errors
43
+
44
+ ---
45
+
46
+ ## @test ACCESS-002: Developer can access /devtools/style
47
+
48
+ ### Metadata
49
+ - **Priority:** Critical
50
+ - **Type:** Smoke
51
+ - **Tags:** developer, access, style-gallery
52
+ - **Grep:** `@smoke`
53
+
54
+ ```gherkin:en
55
+ Scenario: Developer can access Style Gallery
56
+
57
+ Given I am logged in as Developer (developer@nextspark.dev)
58
+ When I visit /devtools/style
59
+ Then the URL should include /devtools/style
60
+ And the style page should be visible
61
+ ```
62
+
63
+ ```gherkin:es
64
+ Scenario: Developer puede acceder a Style Gallery
65
+
66
+ Given estoy logueado como Developer (developer@nextspark.dev)
67
+ When visito /devtools/style
68
+ Then la URL deberia incluir /devtools/style
69
+ And la pagina de estilos deberia estar visible
70
+ ```
71
+
72
+ ### Expected Results
73
+ - Style Gallery page loads successfully
74
+ - All component sections available
75
+
76
+ ---
77
+
78
+ ## @test ACCESS-003: Developer can access /devtools/tests
79
+
80
+ ### Metadata
81
+ - **Priority:** Critical
82
+ - **Type:** Smoke
83
+ - **Tags:** developer, access, test-cases
84
+ - **Grep:** `@smoke`
85
+
86
+ ```gherkin:en
87
+ Scenario: Developer can access Test Cases viewer
88
+
89
+ Given I am logged in as Developer (developer@nextspark.dev)
90
+ When I visit /devtools/tests
91
+ Then the URL should include /devtools/tests
92
+ And the tests page should be visible
93
+ ```
94
+
95
+ ```gherkin:es
96
+ Scenario: Developer puede acceder al visor de Test Cases
97
+
98
+ Given estoy logueado como Developer (developer@nextspark.dev)
99
+ When visito /devtools/tests
100
+ Then la URL deberia incluir /devtools/tests
101
+ And la pagina de tests deberia estar visible
102
+ ```
103
+
104
+ ### Expected Results
105
+ - Test Cases viewer loads successfully
106
+ - File tree or empty state visible
107
+
108
+ ---
109
+
110
+ ## @test ACCESS-004: Developer can access /devtools/config
111
+
112
+ ### Metadata
113
+ - **Priority:** Critical
114
+ - **Type:** Smoke
115
+ - **Tags:** developer, access, config
116
+ - **Grep:** `@smoke`
117
+
118
+ ```gherkin:en
119
+ Scenario: Developer can access Config Viewer
120
+
121
+ Given I am logged in as Developer (developer@nextspark.dev)
122
+ When I visit /devtools/config
123
+ Then the URL should include /devtools/config
124
+ And the config page should be visible
125
+ ```
126
+
127
+ ```gherkin:es
128
+ Scenario: Developer puede acceder al Config Viewer
129
+
130
+ Given estoy logueado como Developer (developer@nextspark.dev)
131
+ When visito /devtools/config
132
+ Then la URL deberia incluir /devtools/config
133
+ And la pagina de config deberia estar visible
134
+ ```
135
+
136
+ ### Expected Results
137
+ - Config Viewer loads successfully
138
+ - Theme and Entities tabs available
139
+
140
+ ---
141
+
142
+ ## @test ACCESS-005: Developer can access /admin (inherited)
143
+
144
+ ### Metadata
145
+ - **Priority:** High
146
+ - **Type:** Regression
147
+ - **Tags:** developer, admin, inherited
148
+
149
+ ```gherkin:en
150
+ Scenario: Developer can access Admin area
151
+
152
+ Given I am logged in as Developer (developer@nextspark.dev)
153
+ When I visit /admin
154
+ Then the URL should include /admin
155
+ And the Admin container should be visible
156
+ ```
157
+
158
+ ```gherkin:es
159
+ Scenario: Developer puede acceder al area Admin
160
+
161
+ Given estoy logueado como Developer (developer@nextspark.dev)
162
+ When visito /admin
163
+ Then la URL deberia incluir /admin
164
+ And el contenedor de Admin deberia estar visible
165
+ ```
166
+
167
+ ### Expected Results
168
+ - Developer inherits superadmin privileges for Admin
169
+ - Admin control panel accessible
170
+ - No access denied redirect
171
+
172
+ ---
173
+
174
+ ## @test ACCESS-006: Superadmin is BLOCKED from /devtools
175
+
176
+ ### Metadata
177
+ - **Priority:** Critical
178
+ - **Type:** Smoke
179
+ - **Tags:** superadmin, blocked, security
180
+ - **Grep:** `@smoke`
181
+
182
+ ```gherkin:en
183
+ Scenario: Superadmin is redirected when attempting to access /devtools
184
+
185
+ Given I am logged in as Superadmin (superadmin@nextspark.dev)
186
+ When I attempt to visit /devtools
187
+ Then I should be redirected to /dashboard
188
+ And the URL should include error=access_denied
189
+ ```
190
+
191
+ ```gherkin:es
192
+ Scenario: Superadmin es redirigido al intentar acceder a /devtools
193
+
194
+ Given estoy logueado como Superadmin (superadmin@nextspark.dev)
195
+ When intento visitar /devtools
196
+ Then deberia ser redirigido a /dashboard
197
+ And la URL deberia incluir error=access_denied
198
+ ```
199
+
200
+ ### Expected Results
201
+ - Superadmin cannot access /devtools area
202
+ - Redirect to dashboard with error parameter
203
+ - Access control working correctly
204
+
205
+ ---
206
+
207
+ ## @test ACCESS-007: Member is BLOCKED from /devtools
208
+
209
+ ### Metadata
210
+ - **Priority:** Critical
211
+ - **Type:** Smoke
212
+ - **Tags:** member, blocked, security
213
+ - **Grep:** `@smoke`
214
+
215
+ ```gherkin:en
216
+ Scenario: Member is redirected when attempting to access /devtools
217
+
218
+ Given I am logged in as Member (emily.johnson@nextspark.dev)
219
+ When I attempt to visit /devtools
220
+ Then I should be redirected to /dashboard
221
+ And the URL should include error=access_denied
222
+ ```
223
+
224
+ ```gherkin:es
225
+ Scenario: Member es redirigido al intentar acceder a /devtools
226
+
227
+ Given estoy logueado como Member (emily.johnson@nextspark.dev)
228
+ When intento visitar /devtools
229
+ Then deberia ser redirigido a /dashboard
230
+ And la URL deberia incluir error=access_denied
231
+ ```
232
+
233
+ ### Expected Results
234
+ - Member cannot access /devtools area
235
+ - Redirect to dashboard with error parameter
236
+ - Access control working correctly
237
+
238
+ ---
239
+
240
+ ## UI Elements
241
+
242
+ | Element | Selector | Description |
243
+ |---------|----------|-------------|
244
+ | Home Page | `[data-cy="dev-home-page"]` | Dev area home page container |
245
+ | Style Page | `[data-cy="dev-style-page"]` | Style Gallery page container |
246
+ | Tests Page | `[data-cy="dev-tests-page"]` | Test Cases viewer container |
247
+ | Config Page | `[data-cy="dev-config-page"]` | Config Viewer page container |
248
+ | Admin Container | `[data-cy="admin-container"]` | Admin main container |
249
+
250
+ ---
251
+
252
+ ## Summary
253
+
254
+ | Test ID | Block | Description | Tags |
255
+ |---------|-------|-------------|------|
256
+ | ACCESS-001 | Developer Access | Developer can access /devtools home | `@smoke` |
257
+ | ACCESS-002 | Developer Access | Developer can access /devtools/style | `@smoke` |
258
+ | ACCESS-003 | Developer Access | Developer can access /devtools/tests | `@smoke` |
259
+ | ACCESS-004 | Developer Access | Developer can access /devtools/config | `@smoke` |
260
+ | ACCESS-005 | Inherited Access | Developer can access /admin | |
261
+ | ACCESS-006 | Blocked Access | Superadmin BLOCKED from /devtools | `@smoke` |
262
+ | ACCESS-007 | Blocked Access | Member BLOCKED from /devtools | `@smoke` |