@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.
- package/package.json +1 -1
- package/tests/cypress/e2e/_devtools/access.bdd.md +262 -0
- package/tests/cypress/e2e/_devtools/access.cy.ts +171 -0
- package/tests/cypress/e2e/_devtools/navigation.bdd.md +261 -0
- package/tests/cypress/e2e/_devtools/navigation.cy.ts +157 -0
- package/tests/cypress/e2e/_devtools/pages.bdd.md +303 -0
- package/tests/cypress/e2e/_devtools/pages.cy.ts +184 -0
- package/tests/cypress/e2e/_docs/README.md +215 -0
- package/tests/cypress/e2e/_docs/tutorials/sector7-superadmin-teams.narration.json +155 -0
- package/tests/cypress/e2e/_docs/tutorials/sector7-superadmin.cy.ts +390 -0
- package/tests/cypress/e2e/_docs/tutorials/teams-system.doc.cy.ts +349 -0
- package/tests/cypress/e2e/_docs/tutorials/teams-system.narration.json +165 -0
- package/tests/cypress/e2e/_selectors/auth.cy.ts +306 -0
- package/tests/cypress/e2e/_selectors/billing.cy.ts +89 -0
- package/tests/cypress/e2e/_selectors/dashboard-mobile.cy.ts +113 -0
- package/tests/cypress/e2e/_selectors/dashboard-navigation.cy.ts +89 -0
- package/tests/cypress/e2e/_selectors/dashboard-sidebar.cy.ts +60 -0
- package/tests/cypress/e2e/_selectors/dashboard-topnav.cy.ts +146 -0
- package/tests/cypress/e2e/_selectors/devtools.cy.ts +210 -0
- package/tests/cypress/e2e/_selectors/global-search.cy.ts +88 -0
- package/tests/cypress/e2e/_selectors/pages-editor.cy.ts +179 -0
- package/tests/cypress/e2e/_selectors/posts-editor.cy.ts +282 -0
- package/tests/cypress/e2e/_selectors/public.cy.ts +112 -0
- package/tests/cypress/e2e/_selectors/settings-api-keys.cy.ts +228 -0
- package/tests/cypress/e2e/_selectors/settings-billing.cy.ts +105 -0
- package/tests/cypress/e2e/_selectors/settings-layout.cy.ts +119 -0
- package/tests/cypress/e2e/_selectors/settings-password.cy.ts +71 -0
- package/tests/cypress/e2e/_selectors/settings-profile.cy.ts +82 -0
- package/tests/cypress/e2e/_selectors/settings-teams.cy.ts +68 -0
- package/tests/cypress/e2e/_selectors/superadmin.cy.ts +185 -0
- package/tests/cypress/e2e/_selectors/tasks.cy.ts +242 -0
- package/tests/cypress/e2e/_selectors/taxonomies.cy.ts +126 -0
- package/tests/cypress/e2e/_selectors/teams.cy.ts +142 -0
- package/tests/cypress/e2e/_superadmin/all-teams.bdd.md +261 -0
- package/tests/cypress/e2e/_superadmin/all-teams.cy.ts +177 -0
- package/tests/cypress/e2e/_superadmin/all-users.bdd.md +406 -0
- package/tests/cypress/e2e/_superadmin/all-users.cy.ts +294 -0
- package/tests/cypress/e2e/_superadmin/dashboard.bdd.md +235 -0
- package/tests/cypress/e2e/_superadmin/dashboard.cy.ts +149 -0
- package/tests/cypress/e2e/_superadmin/subscriptions-overview.bdd.md +290 -0
- package/tests/cypress/e2e/_superadmin/subscriptions-overview.cy.ts +194 -0
- package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
- package/tests/cypress/e2e/ai/chat-api.cy.ts +107 -0
- package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
- package/tests/cypress/e2e/api/billing/BillingAPIController.js +319 -0
- package/tests/cypress/e2e/api/billing/check-action.cy.ts +326 -0
- package/tests/cypress/e2e/api/billing/checkout.cy.ts +358 -0
- package/tests/cypress/e2e/api/billing/lifecycle.cy.ts +423 -0
- package/tests/cypress/e2e/api/billing/plans/README.md +345 -0
- package/tests/cypress/e2e/api/billing/plans/business.cy.ts +412 -0
- package/tests/cypress/e2e/api/billing/plans/downgrade.cy.ts +510 -0
- package/tests/cypress/e2e/api/billing/plans/fixtures/billing-plans.json +163 -0
- package/tests/cypress/e2e/api/billing/plans/free.cy.ts +500 -0
- package/tests/cypress/e2e/api/billing/plans/pro.cy.ts +497 -0
- package/tests/cypress/e2e/api/billing/plans/starter.cy.ts +342 -0
- package/tests/cypress/e2e/api/billing/portal.cy.ts +313 -0
- package/tests/cypress/e2e/api/devtools/registries.bdd.md +300 -0
- package/tests/cypress/e2e/api/devtools/registries.cy.ts +368 -0
- package/tests/cypress/e2e/api/entities/blocks-scope.cy.ts +396 -0
- package/tests/cypress/e2e/api/entities/customers-crud.cy.ts +648 -0
- package/tests/cypress/e2e/api/entities/customers-metas.cy.ts +839 -0
- package/tests/cypress/e2e/api/entities/pages-crud.cy.ts +425 -0
- package/tests/cypress/e2e/api/entities/pages-status.cy.ts +335 -0
- package/tests/cypress/e2e/api/entities/post-categories-crud.cy.ts +610 -0
- package/tests/cypress/e2e/api/entities/posts-crud.cy.ts +709 -0
- package/tests/cypress/e2e/api/entities/posts-status.cy.ts +396 -0
- package/tests/cypress/e2e/api/entities/tasks-crud.cy.ts +602 -0
- package/tests/cypress/e2e/api/entities/tasks-metas.cy.ts +878 -0
- package/tests/cypress/e2e/api/entities/users-crud.cy.ts +469 -0
- package/tests/cypress/e2e/api/entities/users-metas.cy.ts +913 -0
- package/tests/cypress/e2e/api/entities/users-security.cy.ts +375 -0
- package/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.bdd.md +375 -0
- package/tests/cypress/e2e/api/scheduled-actions/cron-endpoint.cy.ts +346 -0
- package/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.bdd.md +451 -0
- package/tests/cypress/e2e/api/scheduled-actions/devtools-endpoint.cy.ts +447 -0
- package/tests/cypress/e2e/api/scheduled-actions/scheduling.bdd.md +649 -0
- package/tests/cypress/e2e/api/scheduled-actions/scheduling.cy.ts +333 -0
- package/tests/cypress/e2e/api/settings/api-keys.crud.cy.ts +923 -0
- package/tests/cypress/e2e/uat/auth/app-roles/developer-login.bdd.md +231 -0
- package/tests/cypress/e2e/uat/auth/app-roles/developer-login.cy.ts +144 -0
- package/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.bdd.md +118 -0
- package/tests/cypress/e2e/uat/auth/app-roles/superadmin-login.cy.ts +84 -0
- package/tests/cypress/e2e/uat/auth/custom-roles/editor-login.bdd.md +288 -0
- package/tests/cypress/e2e/uat/auth/custom-roles/editor-login.cy.ts +188 -0
- package/tests/cypress/e2e/uat/auth/login-logout.bdd.md +160 -0
- package/tests/cypress/e2e/uat/auth/login-logout.cy.ts +116 -0
- package/tests/cypress/e2e/uat/auth/password-reset.bdd.md +289 -0
- package/tests/cypress/e2e/uat/auth/password-reset.cy.ts +200 -0
- package/tests/cypress/e2e/uat/auth/team-roles/admin-login.bdd.md +225 -0
- package/tests/cypress/e2e/uat/auth/team-roles/admin-login.cy.ts +148 -0
- package/tests/cypress/e2e/uat/auth/team-roles/member-login.bdd.md +251 -0
- package/tests/cypress/e2e/uat/auth/team-roles/member-login.cy.ts +163 -0
- package/tests/cypress/e2e/uat/auth/team-roles/owner-login.bdd.md +231 -0
- package/tests/cypress/e2e/uat/auth/team-roles/owner-login.cy.ts +141 -0
- package/tests/cypress/e2e/uat/billing/extended.bdd.md +273 -0
- package/tests/cypress/e2e/uat/billing/extended.cy.ts +209 -0
- package/tests/cypress/e2e/uat/billing/feature-gates.bdd.md +407 -0
- package/tests/cypress/e2e/uat/billing/feature-gates.cy.ts +307 -0
- package/tests/cypress/e2e/uat/billing/page.bdd.md +329 -0
- package/tests/cypress/e2e/uat/billing/page.cy.ts +250 -0
- package/tests/cypress/e2e/uat/billing/status.bdd.md +190 -0
- package/tests/cypress/e2e/uat/billing/status.cy.ts +145 -0
- package/tests/cypress/e2e/uat/billing/team-switch.bdd.md +156 -0
- package/tests/cypress/e2e/uat/billing/team-switch.cy.ts +122 -0
- package/tests/cypress/e2e/uat/billing/usage.bdd.md +218 -0
- package/tests/cypress/e2e/uat/billing/usage.cy.ts +176 -0
- package/tests/cypress/e2e/uat/blocks/hero.bdd.md +124 -0
- package/tests/cypress/e2e/uat/blocks/hero.cy.ts +56 -0
- package/tests/cypress/e2e/uat/devtools/api-tester.cy.ts +390 -0
- package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
- package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
- package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
- package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
- package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
- package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
- package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
- package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
- package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
- package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
- package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
- package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
- package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
- package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
- package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
- package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
- package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
- package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
- package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
- package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
- package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
- package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
- package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
- package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
- package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
- package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
- package/tests/cypress/e2e/uat/roles/editor-role.bdd.md +552 -0
- package/tests/cypress/e2e/uat/roles/editor-role.cy.ts +210 -0
- package/tests/cypress/e2e/uat/roles/member-restrictions.bdd.md +450 -0
- package/tests/cypress/e2e/uat/roles/member-restrictions.cy.ts +189 -0
- package/tests/cypress/e2e/uat/roles/owner-full-crud.bdd.md +530 -0
- package/tests/cypress/e2e/uat/roles/owner-full-crud.cy.ts +247 -0
- package/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.bdd.md +736 -0
- package/tests/cypress/e2e/uat/scheduled-actions/devtools-ui.cy.ts +740 -0
- package/tests/cypress/e2e/uat/teams/roles-matrix.bdd.md +553 -0
- package/tests/cypress/e2e/uat/teams/roles-matrix.cy.ts +185 -0
- package/tests/cypress/e2e/uat/teams/switcher.bdd.md +1151 -0
- package/tests/cypress/e2e/uat/teams/switcher.cy.ts +497 -0
- package/tests/cypress/e2e/uat/teams/team-switcher.md +198 -0
- package/tests/cypress/fixtures/blocks.json +218 -0
- package/tests/cypress/fixtures/entities.json +78 -0
- package/tests/cypress/fixtures/page-builder.json +21 -0
- package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
- package/tests/cypress/src/components/CustomersPOM.ts +439 -0
- package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
- package/tests/cypress/src/components/EntityForm.ts +375 -0
- package/tests/cypress/src/components/EntityList.ts +389 -0
- package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
- package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
- package/tests/cypress/src/components/PostsListPOM.ts +223 -0
- package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
- package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
- package/tests/cypress/src/components/TasksPOM.ts +272 -0
- package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
- package/tests/cypress/src/components/index.ts +21 -0
- package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
- package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
- package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
- package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
- package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
- package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
- package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
- package/tests/cypress/src/controllers/index.js +25 -0
- package/tests/cypress/src/core/AuthPOM.ts +450 -0
- package/tests/cypress/src/core/BasePOM.ts +86 -0
- package/tests/cypress/src/core/BlockEditorBasePOM.ts +576 -0
- package/tests/cypress/src/core/DashboardEntityPOM.ts +692 -0
- package/tests/cypress/src/core/index.ts +14 -0
- package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
- package/tests/cypress/src/entities/PagesPOM.ts +137 -0
- package/tests/cypress/src/entities/PostsPOM.ts +137 -0
- package/tests/cypress/src/entities/TasksPOM.ts +176 -0
- package/tests/cypress/src/entities/index.ts +14 -0
- package/tests/cypress/src/features/BillingPOM.ts +385 -0
- package/tests/cypress/src/features/DashboardPOM.ts +245 -0
- package/tests/cypress/src/features/DevtoolsPOM.ts +739 -0
- package/tests/cypress/src/features/PageBuilderPOM.ts +263 -0
- package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
- package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
- package/tests/cypress/src/features/SettingsPOM.ts +362 -0
- package/tests/cypress/src/features/SuperadminPOM.ts +331 -0
- package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
- package/tests/cypress/src/features/index.ts +28 -0
- package/tests/cypress/src/helpers/ApiInterceptor.ts +177 -0
- package/tests/cypress/src/index.ts +101 -0
- package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
- package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
- package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
- package/tests/cypress/src/pages/dashboard/index.js +6 -0
- package/tests/cypress/src/pages/index.js +5 -0
- package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
- package/tests/cypress/src/pages/public/LandingPage.js +69 -0
- package/tests/cypress/src/pages/public/PricingPage.js +33 -0
- package/tests/cypress/src/pages/public/index.js +6 -0
- package/tests/cypress/src/selectors.ts +46 -0
- package/tests/cypress/src/session-helpers.ts +500 -0
- package/tests/cypress/support/doc-commands.ts +260 -0
- package/tests/cypress.config.ts +150 -0
- package/tests/jest/components/post-header.test.tsx +377 -0
- package/tests/jest/config/role-config.test.ts +529 -0
- package/tests/jest/jest.config.ts +81 -0
- package/tests/jest/langchain/COVERAGE.md +372 -0
- package/tests/jest/langchain/guardrails.test.ts +465 -0
- package/tests/jest/langchain/streaming.test.ts +367 -0
- package/tests/jest/langchain/token-tracker.test.ts +455 -0
- package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
- package/tests/jest/langchain/tracer.test.ts +823 -0
- package/tests/jest/user-roles/role-helpers.test.ts +432 -0
- package/tests/jest/validation/categories.test.ts +429 -0
- package/tests/jest/validation/posts.test.ts +546 -0
- 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
|
+
})
|