@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,390 @@
1
+ /// <reference types="cypress" />
2
+
3
+ /**
4
+ * Sector 7 - SuperAdmin Teams View - Documentation Video
5
+ *
6
+ * This test generates a documentation video showing how a superadmin
7
+ * can access Sector 7 and view all teams in the system.
8
+ *
9
+ * Run: NEXT_PUBLIC_ACTIVE_THEME=default pnpm cy:run --spec "sector7-superadmin-teams.doc.cy.ts"
10
+ *
11
+ * Output:
12
+ * - Video: cypress/videos/docs/tutorials/superadmin-superadmin-teams.doc.cy.ts.mp4
13
+ * - Narrations: cypress/docs-output/narrations/superadmin-superadmin-teams.doc-narrations.json
14
+ *
15
+ * @tags @doc, @tutorial, @sector7, @superadmin
16
+ */
17
+
18
+ // Import slow-down plugin
19
+ import { slowCypressDown } from 'cypress-slow-down'
20
+ import 'cypress-slow-down/commands'
21
+
22
+ // Import POMs
23
+ import { LoginForm } from '../../../../../../../../test/cypress/src/classes/components/auth/LoginForm.js'
24
+ import { TopNavbar } from '../../../../../../../../test/cypress/src/classes/components/navigation/TopNavbar.js'
25
+ import { SuperadminNavigation } from '../../../../../../../../test/cypress/src/classes/superadmin/SuperadminNavigation.js'
26
+ import { TeamsTable } from '../../../../../../../../test/cypress/src/classes/superadmin/TeamsTable.js'
27
+ import { Session } from '../../../../../../../../test/cypress/src/classes/shared'
28
+
29
+ // ============================================
30
+ // Configuration
31
+ // ============================================
32
+
33
+ const CONFIG = {
34
+ // Speed control (ms between commands) - FAST for ~1:30 video
35
+ commandDelay: 200,
36
+
37
+ // Narration timing (ms) - Optimized for short video
38
+ narration: {
39
+ short: 1000, // ~8 words
40
+ medium: 1500, // ~12-15 words
41
+ long: 2000, // ~20 words
42
+ chapter: 1000, // Chapter title display
43
+ pause: 400, // Pause for emphasis
44
+ },
45
+
46
+ // SuperAdmin credentials (from sample data)
47
+ superadmin: {
48
+ email: 'superadmin@nextspark.dev',
49
+ password: 'Pandora1234',
50
+ },
51
+ }
52
+
53
+ // ============================================
54
+ // Narration Helpers
55
+ // ============================================
56
+
57
+ interface NarrationEntry {
58
+ timestamp: number
59
+ step: number
60
+ text: string
61
+ chapter?: string
62
+ duration: number
63
+ }
64
+
65
+ let narrations: NarrationEntry[] = []
66
+ let stepCounter = 0
67
+
68
+ /**
69
+ * Log narration and wait for reading time
70
+ */
71
+ function narrate(text: string, durationMs: number = CONFIG.narration.medium) {
72
+ stepCounter++
73
+ const entry: NarrationEntry = {
74
+ timestamp: Date.now(),
75
+ step: stepCounter,
76
+ text,
77
+ duration: durationMs,
78
+ }
79
+ narrations.push(entry)
80
+
81
+ // Visual log (appears in video)
82
+ cy.log(`🎙️ **[${stepCounter}]** ${text}`)
83
+
84
+ // Wait for narration duration
85
+ cy.wait(durationMs, { log: false })
86
+ }
87
+
88
+ /**
89
+ * Add chapter marker
90
+ */
91
+ function chapter(title: string) {
92
+ stepCounter++
93
+ narrations.push({
94
+ timestamp: Date.now(),
95
+ step: stepCounter,
96
+ text: `=== ${title} ===`,
97
+ chapter: title,
98
+ duration: CONFIG.narration.chapter,
99
+ })
100
+
101
+ cy.log(`📖 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`)
102
+ cy.log(`📖 **${title.toUpperCase()}**`)
103
+ cy.log(`📖 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`)
104
+ cy.wait(CONFIG.narration.chapter, { log: false })
105
+ }
106
+
107
+ /**
108
+ * Pause for emphasis
109
+ */
110
+ function pause(ms: number = CONFIG.narration.pause) {
111
+ cy.wait(ms, { log: false })
112
+ }
113
+
114
+ /**
115
+ * Highlight element with visual indicator
116
+ */
117
+ function highlight(selector: string, duration: number = 1200) {
118
+ cy.get(selector).then($el => {
119
+ $el.css({
120
+ outline: '4px solid #ef4444',
121
+ outlineOffset: '4px',
122
+ boxShadow: '0 0 20px rgba(239, 68, 68, 0.5)',
123
+ transition: 'all 0.3s ease',
124
+ })
125
+ })
126
+
127
+ cy.wait(duration, { log: false })
128
+
129
+ cy.get(selector).then($el => {
130
+ $el.css({
131
+ outline: 'none',
132
+ outlineOffset: '0',
133
+ boxShadow: 'none',
134
+ })
135
+ })
136
+ }
137
+
138
+ // ============================================
139
+ // Documentation Test
140
+ // ============================================
141
+
142
+ describe('Tutorial: Sector 7 - SuperAdmin Teams View', {
143
+ tags: ['@doc', '@tutorial', '@sector7', '@superadmin'],
144
+ retries: 0, // No retries for documentation videos
145
+ }, () => {
146
+ const loginForm = new LoginForm()
147
+ const topNavbar = new TopNavbar()
148
+ const sector7Nav = new SuperadminNavigation()
149
+ const teamsTable = new TeamsTable()
150
+
151
+ before(() => {
152
+ // Enable slow mode for documentation
153
+ slowCypressDown(CONFIG.commandDelay)
154
+
155
+ cy.log('🎬 ═══════════════════════════════════════')
156
+ cy.log('🎬 **DOCUMENTATION VIDEO RECORDING**')
157
+ cy.log('🎬 Sector 7 - SuperAdmin Teams View')
158
+ cy.log('🎬 ═══════════════════════════════════════')
159
+ })
160
+
161
+ beforeEach(() => {
162
+ // Reset narrations before each test/retry
163
+ narrations = []
164
+ stepCounter = 0
165
+
166
+ // Setup real authentication test
167
+ Session.setupRealAuthenticationTest()
168
+ })
169
+
170
+ after(() => {
171
+ // Save narrations to file
172
+ const specName = 'sector7-superadmin-teams.doc'
173
+ cy.task('saveNarrations', { specName, narrations })
174
+
175
+ cy.log('🎬 ═══════════════════════════════════════')
176
+ cy.log('🎬 **RECORDING COMPLETE**')
177
+ cy.log('🎬 ═══════════════════════════════════════')
178
+ })
179
+
180
+ // ============================================
181
+ // Single test that captures the entire tutorial
182
+ // ============================================
183
+
184
+ it('demuestra cómo un superadmin accede a Sector 7 para ver todos los teams', () => {
185
+ // ─────────────────────────────────────────
186
+ // CHAPTER 1: Introducción
187
+ // ─────────────────────────────────────────
188
+ chapter('Introducción')
189
+
190
+ narrate(
191
+ 'Bienvenido a Sector 7, el área exclusiva para super administradores.',
192
+ CONFIG.narration.medium
193
+ )
194
+
195
+ narrate(
196
+ 'Hoy veremos cómo acceder y visualizar todos los equipos del sistema.',
197
+ CONFIG.narration.medium
198
+ )
199
+
200
+ // ─────────────────────────────────────────
201
+ // CHAPTER 2: Login como SuperAdmin
202
+ // ─────────────────────────────────────────
203
+ chapter('Login como SuperAdmin')
204
+
205
+ // Navigate to login
206
+ cy.visit('/login')
207
+ cy.wait(1500, { log: false })
208
+
209
+ narrate(
210
+ 'Iniciamos sesión con las credenciales de superadmin.',
211
+ CONFIG.narration.short
212
+ )
213
+
214
+ // Click to show email form, wait for form to appear
215
+ cy.get('[data-cy="login-show-email"]').should('be.visible').click()
216
+ cy.wait(500, { log: false })
217
+
218
+ // Wait for form inputs to be visible (separate chain to avoid detachment issues)
219
+ cy.get('[data-cy="login-email-input"]', { timeout: 10000 }).should('be.visible')
220
+ cy.get('[data-cy="login-password-input"]', { timeout: 10000 }).should('be.visible')
221
+ pause(500)
222
+
223
+ narrate(
224
+ 'Usamos el email del superadmin de prueba.',
225
+ CONFIG.narration.short
226
+ )
227
+
228
+ // Fill email (separate get to avoid detachment)
229
+ cy.get('[data-cy="login-email-input"]').clear().type(CONFIG.superadmin.email)
230
+ pause(300)
231
+
232
+ narrate(
233
+ 'Ingresamos la contraseña y enviamos.',
234
+ CONFIG.narration.short
235
+ )
236
+
237
+ // Fill password (separate get)
238
+ cy.get('[data-cy="login-password-input"]').clear().type(CONFIG.superadmin.password, { log: false })
239
+ pause(200)
240
+
241
+ // Submit (separate get)
242
+ cy.get('[data-cy="login-submit"]').click()
243
+
244
+ // Wait for dashboard
245
+ cy.url().should('include', '/dashboard', { timeout: 15000 })
246
+ pause(500)
247
+
248
+ narrate(
249
+ 'Acceso concedido. Observa el icono de Sector 7 en la barra superior.',
250
+ CONFIG.narration.medium
251
+ )
252
+
253
+ // Highlight Sector 7 icon
254
+ highlight('[data-cy="topnav-superadmin"]', 1200)
255
+
256
+ // ─────────────────────────────────────────
257
+ // CHAPTER 3: Navegación a Sector 7
258
+ // ─────────────────────────────────────────
259
+ chapter('Navegación a Sector 7')
260
+
261
+ narrate(
262
+ 'Hacemos clic para ingresar al área restringida.',
263
+ CONFIG.narration.short
264
+ )
265
+
266
+ // Navigate to Sector 7
267
+ topNavbar.navigateToSuperadmin()
268
+
269
+ // Wait for Sector 7 page
270
+ cy.url().should('include', '/superadmin')
271
+ cy.contains('Super Administrator Control Panel').should('be.visible')
272
+ pause(500)
273
+
274
+ narrate(
275
+ 'Este es el panel de control del super administrador.',
276
+ CONFIG.narration.medium
277
+ )
278
+
279
+ pause(300)
280
+
281
+ narrate(
282
+ 'En el menú lateral vemos las opciones disponibles.',
283
+ CONFIG.narration.short
284
+ )
285
+
286
+ // Highlight Teams nav option
287
+ highlight('[data-cy="superadmin-nav-teams"]', 1000)
288
+
289
+ // ─────────────────────────────────────────
290
+ // CHAPTER 4: Visualización de Teams
291
+ // ─────────────────────────────────────────
292
+ chapter('Visualización de Teams')
293
+
294
+ narrate(
295
+ 'Navegamos a la sección de Equipos.',
296
+ CONFIG.narration.short
297
+ )
298
+
299
+ // Navigate to Teams
300
+ sector7Nav.navigateToTeams()
301
+
302
+ // Wait for teams page
303
+ cy.url().should('include', '/superadmin/teams')
304
+ cy.contains('Team Management').should('be.visible')
305
+ pause(500)
306
+
307
+ narrate(
308
+ 'Aquí vemos todos los equipos del sistema con estadísticas.',
309
+ CONFIG.narration.medium
310
+ )
311
+
312
+ // Highlight stats card
313
+ cy.get('.text-2xl.font-bold').first().then($el => {
314
+ $el.css({
315
+ outline: '4px solid #22c55e',
316
+ outlineOffset: '4px',
317
+ boxShadow: '0 0 15px rgba(34, 197, 94, 0.4)',
318
+ })
319
+ })
320
+ pause(1000)
321
+ cy.get('.text-2xl.font-bold').first().then($el => {
322
+ $el.css({ outline: 'none', boxShadow: 'none' })
323
+ })
324
+
325
+ narrate(
326
+ 'La pestaña Work Teams muestra equipos colaborativos.',
327
+ CONFIG.narration.medium
328
+ )
329
+
330
+ // Highlight Work Teams tab (use button with role="tab")
331
+ cy.contains('button[role="tab"]', 'Work Teams').then($el => {
332
+ $el.css({
333
+ outline: '3px solid #3b82f6',
334
+ outlineOffset: '2px',
335
+ })
336
+ })
337
+ pause(800)
338
+ cy.contains('button[role="tab"]', 'Work Teams').then($el => {
339
+ $el.css({ outline: 'none' })
340
+ })
341
+
342
+ // Wait for table to load
343
+ cy.get('table').should('be.visible')
344
+ pause(500)
345
+
346
+ narrate(
347
+ 'También podemos ver los equipos personales de cada usuario.',
348
+ CONFIG.narration.medium
349
+ )
350
+
351
+ // Switch to Personal tab
352
+ cy.contains('button[role="tab"]', 'Personal').click()
353
+ pause(800)
354
+
355
+ // Wait for table to update
356
+ cy.get('table').should('be.visible')
357
+ pause(500)
358
+
359
+ narrate(
360
+ 'El buscador permite filtrar equipos por nombre o email del propietario.',
361
+ CONFIG.narration.medium
362
+ )
363
+
364
+ // Highlight search input
365
+ highlight('[data-cy="teams-search-input"]', 1000)
366
+
367
+ // ─────────────────────────────────────────
368
+ // CHAPTER 5: Conclusión
369
+ // ─────────────────────────────────────────
370
+ chapter('Conclusión')
371
+
372
+ narrate(
373
+ 'Así funciona Sector 7: acceso exclusivo a la gestión global del sistema.',
374
+ CONFIG.narration.medium
375
+ )
376
+
377
+ pause(500)
378
+
379
+ narrate(
380
+ 'Gracias por ver este tutorial.',
381
+ CONFIG.narration.short
382
+ )
383
+
384
+ cy.log('🎬 ═══════════════════════════════════════')
385
+ cy.log('🎬 **¡Gracias por ver este tutorial!**')
386
+ cy.log('🎬 ═══════════════════════════════════════')
387
+
388
+ pause(800)
389
+ })
390
+ })