@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,157 @@
1
+ /// <reference types="cypress" />
2
+
3
+ import * as allure from 'allure-cypress'
4
+ import { DevtoolsPOM } from '../../src/features/DevtoolsPOM'
5
+ import { loginAsDefaultDeveloper } from '../../src/session-helpers'
6
+
7
+ /**
8
+ * DevTools Navigation Tests
9
+ *
10
+ * Tests the navigation functionality within the /devtools area:
11
+ * - Sidebar navigation items work correctly
12
+ * - All nav links are clickable and navigate to correct pages
13
+ * - Exit links (Dashboard, Admin) work
14
+ * - URL changes reflect navigation
15
+ *
16
+ * Test User:
17
+ * - Developer: developer@nextspark.dev (via loginAsDefaultDeveloper)
18
+ */
19
+
20
+ describe('DevTools - Navigation', {
21
+ tags: ['@uat', '@feat-devtools', '@regression']
22
+ }, () => {
23
+ const devtools = DevtoolsPOM.create()
24
+
25
+ beforeEach(() => {
26
+ allure.epic('UAT')
27
+ allure.feature('DevTools')
28
+ allure.story('Navigation')
29
+
30
+ // Login as developer before each test
31
+ loginAsDefaultDeveloper()
32
+ })
33
+
34
+ describe('NAV-001: Sidebar navigation works', () => {
35
+ it('should display all sidebar navigation items', () => {
36
+ allure.severity('high')
37
+
38
+ // 1. Visit /devtools home
39
+ devtools.visitHome()
40
+
41
+ // 2. Verify all navigation items are visible
42
+ devtools.assertSidebarNavigationVisible()
43
+
44
+ // 3. Verify exit links are visible
45
+ devtools.assertExitLinksVisible()
46
+
47
+ cy.log(`✅ Sidebar navigation displayed correctly`)
48
+ })
49
+ })
50
+
51
+ describe('NAV-002: All nav links are clickable', () => {
52
+ it('should navigate to Style Gallery via sidebar', () => {
53
+ allure.severity('high')
54
+
55
+ // 1. Start at /devtools home
56
+ devtools.visitHome()
57
+
58
+ // 2. Click Style Gallery nav item
59
+ devtools.clickNavStyleGallery()
60
+
61
+ // 3. Verify navigation to /devtools/style
62
+ devtools.assertOnStyleGallery()
63
+ devtools.assertStylePageVisible()
64
+
65
+ cy.log(`✅ Style Gallery navigation works`)
66
+ })
67
+
68
+ it('should navigate to Test Cases via sidebar', () => {
69
+ allure.severity('high')
70
+
71
+ // 1. Start at /devtools home
72
+ devtools.visitHome()
73
+
74
+ // 2. Click Test Cases nav item
75
+ devtools.clickNavTestCases()
76
+
77
+ // 3. Verify navigation to /devtools/tests
78
+ devtools.assertOnTestCases()
79
+ devtools.assertTestsPageVisible()
80
+
81
+ cy.log(`✅ Test Cases navigation works`)
82
+ })
83
+
84
+ it('should navigate to Config Viewer via sidebar', () => {
85
+ allure.severity('high')
86
+
87
+ // 1. Start at /devtools home
88
+ devtools.visitHome()
89
+
90
+ // 2. Click Config nav item
91
+ devtools.clickNavConfig()
92
+
93
+ // 3. Verify navigation to /devtools/config
94
+ devtools.assertOnConfig()
95
+ devtools.assertConfigPageVisible()
96
+
97
+ cy.log(`✅ Config Viewer navigation works`)
98
+ })
99
+
100
+ it('should navigate back to Home via sidebar', () => {
101
+ allure.severity('high')
102
+
103
+ // 1. Start at /devtools/style
104
+ devtools.visitStyleGallery()
105
+
106
+ // 2. Click Home nav item
107
+ devtools.clickNavHome()
108
+
109
+ // 3. Verify navigation to /devtools
110
+ devtools.assertOnDevtoolsHome()
111
+ devtools.assertHomePageVisible()
112
+
113
+ cy.log(`✅ Home navigation works`)
114
+ })
115
+ })
116
+
117
+ describe('NAV-003: Back to Dashboard link works', () => {
118
+ it('should navigate to Dashboard when clicking exit link', () => {
119
+ allure.severity('high')
120
+
121
+ // 1. Start at /devtools home
122
+ devtools.visitHome()
123
+
124
+ // 2. Click "Exit to Dashboard" link
125
+ devtools.clickExitToDashboard()
126
+
127
+ // 3. Verify navigation to /dashboard
128
+ cy.url().should('include', '/dashboard')
129
+ cy.url().should('not.include', '/devtools')
130
+ cy.get('[data-cy="dashboard-container"]').should('be.visible')
131
+
132
+ cy.log(`✅ Exit to Dashboard works`)
133
+ })
134
+ })
135
+
136
+ describe('NAV-004: Go to Admin link works', () => {
137
+ it('should navigate to Admin when clicking exit link', () => {
138
+ allure.severity('high')
139
+
140
+ // 1. Start at /devtools home
141
+ devtools.visitHome()
142
+
143
+ // 2. Click "Go to Admin" link
144
+ devtools.clickGoToAdmin()
145
+
146
+ // 3. Verify navigation to /admin
147
+ devtools.assertOnAdmin()
148
+ cy.get('[data-cy="admin-container"]').should('be.visible')
149
+
150
+ cy.log(`✅ Go to Admin works`)
151
+ })
152
+ })
153
+
154
+ after(() => {
155
+ cy.log('✅ DevTools navigation tests completed')
156
+ })
157
+ })
@@ -0,0 +1,303 @@
1
+ ---
2
+ feature: DevTools Page Content
3
+ priority: high
4
+ tags: [dev-area, pages, content]
5
+ grepTags: [uat, feat-dev-area, regression]
6
+ coverage: 6
7
+ ---
8
+
9
+ # DevTools Page Content
10
+
11
+ > Tests the content and functionality of each /devtools page including Home quick links, Style Gallery components, Test Cases viewer, and Config viewer tabs.
12
+
13
+ ## @test PAGE-001: Home page renders quick links
14
+
15
+ ### Metadata
16
+ - **Priority:** High
17
+ - **Type:** Smoke
18
+ - **Tags:** home, quick-links
19
+ - **Grep:** `@smoke`
20
+
21
+ ```gherkin:en
22
+ Scenario: Display all quick link cards on home page
23
+
24
+ Given I am logged in as Developer (developer@nextspark.dev)
25
+ When I visit /devtools home
26
+ Then the home page container should be visible
27
+ And all quick links should be visible (Style, Tests, Config)
28
+
29
+ When I click Style Gallery quick link
30
+ Then I should be on /devtools/style
31
+
32
+ When I go back to /devtools home
33
+ And I click Test Cases quick link
34
+ Then I should be on /devtools/tests
35
+
36
+ When I go back to /devtools home
37
+ And I click Config Viewer quick link
38
+ Then I should be on /devtools/config
39
+ ```
40
+
41
+ ```gherkin:es
42
+ Scenario: Mostrar todas las tarjetas de enlaces rapidos en home
43
+
44
+ Given estoy logueado como Developer (developer@nextspark.dev)
45
+ When visito /devtools home
46
+ Then el contenedor de home page deberia estar visible
47
+ And todos los enlaces rapidos deberian estar visibles (Style, Tests, Config)
48
+
49
+ When hago clic en el enlace rapido Style Gallery
50
+ Then deberia estar en /devtools/style
51
+
52
+ When vuelvo a /devtools home
53
+ And hago clic en el enlace rapido Test Cases
54
+ Then deberia estar en /devtools/tests
55
+
56
+ When vuelvo a /devtools home
57
+ And hago clic en el enlace rapido Config Viewer
58
+ Then deberia estar en /devtools/config
59
+ ```
60
+
61
+ ### Expected Results
62
+ - Home page container visible
63
+ - All 3 quick link cards displayed
64
+ - Each quick link navigates correctly
65
+ - All target pages load successfully
66
+
67
+ ---
68
+
69
+ ## @test PAGE-002: Style Gallery loads components
70
+
71
+ ### Metadata
72
+ - **Priority:** High
73
+ - **Type:** Smoke
74
+ - **Tags:** style-gallery, components, tabs
75
+
76
+ ```gherkin:en
77
+ Scenario: Display all Style Gallery sections
78
+
79
+ Given I am logged in as Developer (developer@nextspark.dev)
80
+ When I visit /devtools/style
81
+ Then the style page should be visible
82
+
83
+ And I verify all tab sections by clicking through them:
84
+ | Tab | Content Section |
85
+ | Components | Component Gallery |
86
+ | Field Types | Field Types Gallery |
87
+ | Theme | Theme Preview |
88
+ ```
89
+
90
+ ```gherkin:es
91
+ Scenario: Mostrar todas las secciones de Style Gallery
92
+
93
+ Given estoy logueado como Developer (developer@nextspark.dev)
94
+ When visito /devtools/style
95
+ Then la pagina de estilos deberia estar visible
96
+
97
+ And verifico todas las secciones de tabs haciendo clic en cada una:
98
+ | Tab | Seccion de Contenido |
99
+ | Components | Component Gallery |
100
+ | Field Types | Field Types Gallery |
101
+ | Theme | Theme Preview |
102
+ ```
103
+
104
+ ### Expected Results
105
+ - Style page container visible
106
+ - Components tab visible by default
107
+ - Field Types tab content loads on click
108
+ - Theme tab content loads on click
109
+
110
+ ---
111
+
112
+ ## @test PAGE-003a: Test Cases viewer shows file tree
113
+
114
+ ### Metadata
115
+ - **Priority:** High
116
+ - **Type:** Smoke
117
+ - **Tags:** test-cases, file-tree
118
+
119
+ ```gherkin:en
120
+ Scenario: Display test cases viewer with file tree
121
+
122
+ Given I am logged in as Developer (developer@nextspark.dev)
123
+ When I visit /devtools/tests
124
+ Then the tests page should be visible
125
+ And the viewer container should be visible
126
+ And either file tree or empty state should be displayed
127
+ ```
128
+
129
+ ```gherkin:es
130
+ Scenario: Mostrar visor de test cases con arbol de archivos
131
+
132
+ Given estoy logueado como Developer (developer@nextspark.dev)
133
+ When visito /devtools/tests
134
+ Then la pagina de tests deberia estar visible
135
+ And el contenedor del visor deberia estar visible
136
+ And deberia mostrarse el arbol de archivos o estado vacio
137
+ ```
138
+
139
+ ### Expected Results
140
+ - Tests page container visible
141
+ - Viewer component rendered
142
+ - File tree shows .bdd.md files (or empty state)
143
+
144
+ ---
145
+
146
+ ## @test PAGE-003b: Test Cases viewer shows markdown content
147
+
148
+ ### Metadata
149
+ - **Priority:** Medium
150
+ - **Type:** Regression
151
+ - **Tags:** test-cases, markdown, file-select
152
+
153
+ ```gherkin:en
154
+ Scenario: Show markdown content when selecting a file
155
+
156
+ Given I am on /devtools/tests
157
+ When I check if file tree has files
158
+ And files exist
159
+ And I click on the first file
160
+ Then the content area should be visible
161
+ And markdown content should be rendered
162
+ ```
163
+
164
+ ```gherkin:es
165
+ Scenario: Mostrar contenido markdown al seleccionar un archivo
166
+
167
+ Given estoy en /devtools/tests
168
+ When verifico si el arbol de archivos tiene archivos
169
+ And existen archivos
170
+ And hago clic en el primer archivo
171
+ Then el area de contenido deberia estar visible
172
+ And el contenido markdown deberia estar renderizado
173
+ ```
174
+
175
+ ### Expected Results
176
+ - File selection works
177
+ - Markdown content loads
178
+ - Content is properly formatted
179
+
180
+ ---
181
+
182
+ ## @test PAGE-004a: Config viewer shows tabs
183
+
184
+ ### Metadata
185
+ - **Priority:** High
186
+ - **Type:** Smoke
187
+ - **Tags:** config, tabs
188
+
189
+ ```gherkin:en
190
+ Scenario: Display config viewer with tabs
191
+
192
+ Given I am logged in as Developer (developer@nextspark.dev)
193
+ When I visit /devtools/config
194
+ Then the config page should be visible
195
+ And config tabs should be visible (Theme, Entities)
196
+
197
+ When I click Theme tab
198
+ Then Theme content should be visible
199
+
200
+ When I click Entities tab
201
+ Then Entities content should be visible
202
+ ```
203
+
204
+ ```gherkin:es
205
+ Scenario: Mostrar visor de config con tabs
206
+
207
+ Given estoy logueado como Developer (developer@nextspark.dev)
208
+ When visito /devtools/config
209
+ Then la pagina de config deberia estar visible
210
+ And los tabs de config deberian estar visibles (Theme, Entities)
211
+
212
+ When hago clic en el tab Theme
213
+ Then el contenido de Theme deberia estar visible
214
+
215
+ When hago clic en el tab Entities
216
+ Then el contenido de Entities deberia estar visible
217
+ ```
218
+
219
+ ### Expected Results
220
+ - Config page container visible
221
+ - Theme and Entities tabs visible
222
+ - Tab switching works correctly
223
+ - Each tab shows correct content
224
+
225
+ ---
226
+
227
+ ## @test PAGE-004b: Config viewer shows copy buttons
228
+
229
+ ### Metadata
230
+ - **Priority:** Medium
231
+ - **Type:** Regression
232
+ - **Tags:** config, copy-buttons
233
+
234
+ ```gherkin:en
235
+ Scenario: Display copy buttons in config viewer
236
+
237
+ Given I am on /devtools/config
238
+ When I click Theme tab
239
+ Then copy button for theme config should be visible
240
+
241
+ When I click Entities tab
242
+ Then copy button for entities config should be visible
243
+ ```
244
+
245
+ ```gherkin:es
246
+ Scenario: Mostrar botones de copia en el visor de config
247
+
248
+ Given estoy en /devtools/config
249
+ When hago clic en el tab Theme
250
+ Then el boton de copia para config de theme deberia estar visible
251
+
252
+ When hago clic en el tab Entities
253
+ Then el boton de copia para config de entities deberia estar visible
254
+ ```
255
+
256
+ ### Expected Results
257
+ - Copy buttons present in both tabs
258
+ - Copy functionality available for developers
259
+
260
+ ---
261
+
262
+ ## UI Elements
263
+
264
+ | Element | Selector | Description |
265
+ |---------|----------|-------------|
266
+ | Home Page | `[data-cy="dev-home-page"]` | Dev home page container |
267
+ | Home Style Link | `[data-cy="dev-home-style-link"]` | Quick link to Style Gallery |
268
+ | Home Tests Link | `[data-cy="dev-home-tests-link"]` | Quick link to Test Cases |
269
+ | Home Config Link | `[data-cy="dev-home-config-link"]` | Quick link to Config Viewer |
270
+ | Style Page | `[data-cy="dev-style-page"]` | Style Gallery page container |
271
+ | Style Tab Components | `[data-cy="dev-style-tab-components"]` | Components tab trigger |
272
+ | Style Tab Field Types | `[data-cy="dev-style-tab-field-types"]` | Field Types tab trigger |
273
+ | Style Tab Theme | `[data-cy="dev-style-tab-theme"]` | Theme tab trigger |
274
+ | Style Component Gallery | `[data-cy="dev-style-component-gallery"]` | Components tab content |
275
+ | Style Field Types | `[data-cy="dev-style-field-types"]` | Field Types tab content |
276
+ | Style Theme Preview | `[data-cy="dev-style-theme-preview"]` | Theme tab content |
277
+ | Tests Page | `[data-cy="dev-tests-page"]` | Test Cases page container |
278
+ | Tests Viewer | `[data-cy="dev-tests-viewer"]` | Test viewer container |
279
+ | Tests Tree | `[data-cy="dev-tests-tree"]` | File tree component |
280
+ | Tests Empty State | `[data-cy="dev-tests-empty-state"]` | Empty state when no files |
281
+ | Tests Content | `[data-cy="dev-tests-content"]` | Content display area |
282
+ | Tests Markdown | `[data-cy="dev-tests-markdown-content"]` | Rendered markdown content |
283
+ | Config Page | `[data-cy="dev-config-page"]` | Config Viewer page container |
284
+ | Config Viewer | `[data-cy="dev-config-viewer"]` | Config viewer container |
285
+ | Config Tab Theme | `[data-cy="dev-config-tab-theme"]` | Theme tab trigger |
286
+ | Config Tab Entities | `[data-cy="dev-config-tab-entities"]` | Entities tab trigger |
287
+ | Config Theme Content | `[data-cy="dev-config-theme-content"]` | Theme config content |
288
+ | Config Entities Content | `[data-cy="dev-config-entities-content"]` | Entities config content |
289
+ | Config Copy Theme | `[data-cy="dev-config-copy-theme"]` | Copy theme config button |
290
+ | Config Copy Entities | `[data-cy="dev-config-copy-entities"]` | Copy entities config button |
291
+
292
+ ---
293
+
294
+ ## Summary
295
+
296
+ | Test ID | Block | Description | Tags |
297
+ |---------|-------|-------------|------|
298
+ | PAGE-001 | Home Page | Quick links display and work | `@smoke` |
299
+ | PAGE-002 | Style Gallery | All tab sections load | |
300
+ | PAGE-003a | Test Cases | File tree viewer works | |
301
+ | PAGE-003b | Test Cases | Markdown content renders | |
302
+ | PAGE-004a | Config Viewer | Tabs display and switch | |
303
+ | PAGE-004b | Config Viewer | Copy buttons available | |
@@ -0,0 +1,184 @@
1
+ /// <reference types="cypress" />
2
+
3
+ import * as allure from 'allure-cypress'
4
+ import { DevtoolsPOM } from '../../src/features/DevtoolsPOM'
5
+ import { loginAsDefaultDeveloper } from '../../src/session-helpers'
6
+
7
+ /**
8
+ * DevTools Page Content Tests
9
+ *
10
+ * Tests the content and functionality of each /devtools page:
11
+ * - Home page renders quick links
12
+ * - Style Gallery loads all components
13
+ * - Test Cases viewer shows file tree
14
+ * - Config viewer shows tabs and content
15
+ *
16
+ * Test User:
17
+ * - Developer: developer@nextspark.dev (via loginAsDefaultDeveloper)
18
+ */
19
+
20
+ describe('DevTools - Page Content', {
21
+ tags: ['@uat', '@feat-devtools', '@regression']
22
+ }, () => {
23
+ const devtools = DevtoolsPOM.create()
24
+
25
+ beforeEach(() => {
26
+ allure.epic('UAT')
27
+ allure.feature('DevTools')
28
+ allure.story('Page Content')
29
+
30
+ // Login as developer before each test
31
+ loginAsDefaultDeveloper()
32
+ })
33
+
34
+ describe('PAGE-001: Home page renders quick links', () => {
35
+ it('should display all quick link cards on home page', () => {
36
+ allure.severity('high')
37
+
38
+ // 1. Visit /devtools home
39
+ devtools.visitHome()
40
+
41
+ // 2. Verify page container is visible
42
+ devtools.assertHomePageVisible()
43
+
44
+ // 3. Verify all quick links are visible
45
+ devtools.assertHomeQuickLinksVisible()
46
+
47
+ // 4. Verify quick links are clickable and navigate correctly
48
+ cy.log('Testing Style Gallery quick link...')
49
+ devtools.clickHomeStyleLink()
50
+ devtools.assertOnStyleGallery()
51
+
52
+ cy.log('Testing Test Cases quick link...')
53
+ devtools.visitHome()
54
+ devtools.clickHomeTestsLink()
55
+ devtools.assertOnTestCases()
56
+
57
+ cy.log('Testing Config Viewer quick link...')
58
+ devtools.visitHome()
59
+ devtools.clickHomeConfigLink()
60
+ devtools.assertOnConfig()
61
+
62
+ cy.log(`✅ Home page quick links work correctly`)
63
+ })
64
+ })
65
+
66
+ describe('PAGE-002: Style Gallery loads components', () => {
67
+ it('should display all Style Gallery sections', () => {
68
+ allure.severity('high')
69
+
70
+ // 1. Visit /devtools/style
71
+ devtools.visitStyleGallery()
72
+
73
+ // 2. Verify page is visible
74
+ devtools.assertStylePageVisible()
75
+
76
+ // 3. Verify all tab sections by clicking through them
77
+ // (assertStyleSectionsVisible clicks each tab and verifies content)
78
+ devtools.assertStyleSectionsVisible()
79
+
80
+ cy.log(`✅ Style Gallery sections loaded correctly`)
81
+ })
82
+ })
83
+
84
+ describe('PAGE-003: Test Cases viewer shows file tree', () => {
85
+ it('should display test cases viewer with file tree', () => {
86
+ allure.severity('high')
87
+
88
+ // 1. Visit /devtools/tests
89
+ devtools.visitTestCases()
90
+
91
+ // 2. Verify page is visible
92
+ devtools.assertTestsPageVisible()
93
+
94
+ // 3. Verify viewer container is visible
95
+ devtools.assertTestsViewerVisible()
96
+
97
+ // 4. Verify file tree is present (or empty state if no files)
98
+ cy.get('body').then(($body) => {
99
+ if ($body.find(devtools.selectors.testsTree).length > 0) {
100
+ // File tree exists
101
+ cy.get(devtools.selectors.testsTree).should('be.visible')
102
+ cy.log('✅ File tree displayed')
103
+ } else if ($body.find(devtools.selectors.testsEmptyState).length > 0) {
104
+ // Empty state (no test files)
105
+ cy.get(devtools.selectors.testsEmptyState).should('be.visible')
106
+ cy.log('✅ Empty state displayed (no test files found)')
107
+ }
108
+ })
109
+
110
+ cy.log(`✅ Test Cases viewer loaded correctly`)
111
+ })
112
+
113
+ it('should show markdown content when selecting a file', () => {
114
+ allure.severity('medium')
115
+
116
+ // 1. Visit /devtools/tests
117
+ devtools.visitTestCases()
118
+
119
+ // 2. Check if file tree has files
120
+ cy.get('body').then(($body) => {
121
+ if ($body.find('[data-cy^="dev-tests-file-"]').length > 0) {
122
+ // Files exist - click first file
123
+ cy.get('[data-cy^="dev-tests-file-"]').first().click()
124
+
125
+ // 3. Verify markdown content is displayed
126
+ cy.get(devtools.selectors.testsContent).should('be.visible')
127
+ cy.get(devtools.selectors.testsMarkdownContent).should('be.visible')
128
+
129
+ cy.log('✅ File content displayed when selected')
130
+ } else {
131
+ cy.log('⚠️ No test files found - skipping file selection test')
132
+ }
133
+ })
134
+ })
135
+ })
136
+
137
+ describe('PAGE-004: Config viewer shows tabs', () => {
138
+ it('should display config viewer with tabs', () => {
139
+ allure.severity('high')
140
+
141
+ // 1. Visit /devtools/config
142
+ devtools.visitConfig()
143
+
144
+ // 2. Verify page is visible
145
+ devtools.assertConfigPageVisible()
146
+
147
+ // 3. Verify tabs are visible
148
+ devtools.assertConfigTabsVisible()
149
+
150
+ // 4. Test Theme tab
151
+ cy.log('Testing Theme tab...')
152
+ devtools.clickConfigTabTheme()
153
+ cy.get(devtools.selectors.configThemeContent).should('be.visible')
154
+
155
+ // 5. Test Entities tab
156
+ cy.log('Testing Entities tab...')
157
+ devtools.clickConfigTabEntities()
158
+ cy.get(devtools.selectors.configEntitiesContent).should('be.visible')
159
+
160
+ cy.log(`✅ Config viewer tabs work correctly`)
161
+ })
162
+
163
+ it('should display copy buttons in config viewer', () => {
164
+ allure.severity('medium')
165
+
166
+ // 1. Visit /devtools/config
167
+ devtools.visitConfig()
168
+
169
+ // 2. Verify copy buttons exist for theme config
170
+ devtools.clickConfigTabTheme()
171
+ cy.get(devtools.selectors.configCopyTheme).should('be.visible')
172
+
173
+ // 3. Verify copy buttons exist for entities config
174
+ devtools.clickConfigTabEntities()
175
+ cy.get(devtools.selectors.configCopyEntities).should('be.visible')
176
+
177
+ cy.log(`✅ Copy buttons displayed correctly`)
178
+ })
179
+ })
180
+
181
+ after(() => {
182
+ cy.log('✅ DevTools page content tests completed')
183
+ })
184
+ })