@nextsparkjs/theme-default 0.1.0-beta.31 → 0.1.0-beta.35

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 (149) hide show
  1. package/lib/selectors.ts +5 -1
  2. package/package.json +2 -2
  3. package/tests/cypress/e2e/{_devtools → _utils/devtools}/access.cy.ts +3 -3
  4. package/tests/cypress/e2e/{_devtools → _utils/devtools}/navigation.cy.ts +3 -3
  5. package/tests/cypress/e2e/{_devtools → _utils/devtools}/pages.cy.ts +3 -3
  6. package/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
  7. package/tests/cypress/e2e/{_selectors → _utils/selectors}/auth.cy.ts +39 -35
  8. package/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
  9. package/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
  10. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
  11. package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
  12. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
  13. package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
  14. package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +111 -0
  15. package/tests/cypress/e2e/{_selectors → _utils/selectors}/dashboard-sidebar.cy.ts +35 -6
  16. package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +200 -0
  17. package/tests/cypress/e2e/{_selectors → _utils/selectors}/dashboard-topnav.cy.ts +30 -43
  18. package/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
  19. package/tests/cypress/e2e/{_selectors → _utils/selectors}/devtools.cy.ts +77 -14
  20. package/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
  21. package/tests/cypress/e2e/{_selectors → _utils/selectors}/global-search.cy.ts +15 -10
  22. package/tests/cypress/e2e/_utils/selectors/pages-editor.bdd.md +207 -0
  23. package/tests/cypress/e2e/{_selectors → _utils/selectors}/pages-editor.cy.ts +44 -12
  24. package/tests/cypress/e2e/_utils/selectors/posts-editor.bdd.md +184 -0
  25. package/tests/cypress/e2e/{_selectors → _utils/selectors}/posts-editor.cy.ts +107 -39
  26. package/tests/cypress/e2e/{_selectors → _utils/selectors}/public.cy.ts +1 -1
  27. package/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
  28. package/tests/cypress/e2e/{_selectors → _utils/selectors}/settings-api-keys.cy.ts +30 -25
  29. package/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
  30. package/tests/cypress/e2e/{_selectors → _utils/selectors}/settings-billing.cy.ts +10 -7
  31. package/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +138 -0
  32. package/tests/cypress/e2e/{_selectors → _utils/selectors}/settings-layout.cy.ts +12 -8
  33. package/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
  34. package/tests/cypress/e2e/{_selectors → _utils/selectors}/settings-password.cy.ts +10 -7
  35. package/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
  36. package/tests/cypress/e2e/{_selectors → _utils/selectors}/settings-profile.cy.ts +15 -18
  37. package/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
  38. package/tests/cypress/e2e/{_selectors → _utils/selectors}/settings-teams.cy.ts +36 -18
  39. package/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
  40. package/tests/cypress/e2e/{_selectors → _utils/selectors}/superadmin.cy.ts +23 -15
  41. package/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +353 -0
  42. package/tests/cypress/e2e/{_selectors → _utils/selectors}/tasks.cy.ts +11 -10
  43. package/tests/cypress/e2e/{_selectors → _utils/selectors}/taxonomies.cy.ts +1 -1
  44. package/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
  45. package/tests/cypress/e2e/{_selectors → _utils/selectors}/teams.cy.ts +90 -37
  46. package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/all-teams.cy.ts +4 -4
  47. package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/all-users.cy.ts +4 -4
  48. package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/dashboard.cy.ts +4 -4
  49. package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/subscriptions-overview.cy.ts +4 -4
  50. package/tests/cypress/e2e/api/{entities → _core/users}/users-security.cy.ts +2 -2
  51. package/tests/cypress/e2e/uat/{auth → _core/auth}/login-logout.cy.ts +2 -2
  52. package/tests/cypress/e2e/uat/{auth → _core/auth}/password-reset.cy.ts +1 -1
  53. package/tests/cypress/e2e/uat/{billing → _core/billing}/extended.cy.ts +2 -2
  54. package/tests/cypress/e2e/uat/{billing → _core/billing}/feature-gates.cy.ts +2 -2
  55. package/tests/cypress/e2e/uat/{billing → _core/billing}/page.cy.ts +2 -2
  56. package/tests/cypress/e2e/uat/{billing → _core/billing}/status.cy.ts +2 -2
  57. package/tests/cypress/e2e/uat/{billing → _core/billing}/team-switch.cy.ts +2 -2
  58. package/tests/cypress/e2e/uat/{billing → _core/billing}/usage.cy.ts +2 -2
  59. package/tests/cypress/e2e/uat/{devtools → _core/devtools}/api-tester.cy.ts +2 -2
  60. package/tests/cypress/e2e/uat/{scheduled-actions → _core/scheduled-actions}/devtools-ui.cy.ts +2 -2
  61. package/tests/cypress/e2e/uat/{teams → _core/teams}/roles-matrix.cy.ts +2 -2
  62. package/tests/cypress/e2e/uat/{teams → _core/teams}/switcher.cy.ts +2 -2
  63. package/tests/cypress/e2e/uat/{roles → features/roles}/editor-role.cy.ts +2 -2
  64. package/tests/cypress/e2e/uat/{roles → features/roles}/member-restrictions.cy.ts +3 -3
  65. package/tests/cypress/e2e/uat/{roles → features/roles}/owner-full-crud.cy.ts +2 -2
  66. package/tests/cypress/src/core/DashboardEntityPOM.ts +2 -2
  67. package/tests/cypress/src/features/DashboardPOM.ts +2 -2
  68. package/tests/cypress/src/features/DevtoolsPOM.ts +12 -1
  69. package/tests/cypress/src/session-helpers.ts +35 -17
  70. package/tests/cypress/support/e2e.ts +2 -1
  71. package/tests/cypress.config.ts +29 -10
  72. package/tests/tsconfig.json +13 -7
  73. package/tests/cypress/e2e/_selectors/billing.cy.ts +0 -89
  74. package/tests/cypress/e2e/_selectors/dashboard-mobile.cy.ts +0 -113
  75. package/tests/cypress/e2e/_selectors/dashboard-navigation.cy.ts +0 -89
  76. /package/tests/cypress/e2e/{_devtools → _utils/devtools}/access.bdd.md +0 -0
  77. /package/tests/cypress/e2e/{_devtools → _utils/devtools}/navigation.bdd.md +0 -0
  78. /package/tests/cypress/e2e/{_devtools → _utils/devtools}/pages.bdd.md +0 -0
  79. /package/tests/cypress/e2e/{_docs → _utils/docs}/README.md +0 -0
  80. /package/tests/cypress/e2e/{_docs → _utils/docs}/tutorials/sector7-superadmin-teams.narration.json +0 -0
  81. /package/tests/cypress/e2e/{_docs → _utils/docs}/tutorials/sector7-superadmin.cy.ts +0 -0
  82. /package/tests/cypress/e2e/{_docs → _utils/docs}/tutorials/teams-system.doc.cy.ts +0 -0
  83. /package/tests/cypress/e2e/{_docs → _utils/docs}/tutorials/teams-system.narration.json +0 -0
  84. /package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/all-teams.bdd.md +0 -0
  85. /package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/all-users.bdd.md +0 -0
  86. /package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/dashboard.bdd.md +0 -0
  87. /package/tests/cypress/e2e/{_superadmin → _utils/superadmin}/subscriptions-overview.bdd.md +0 -0
  88. /package/tests/cypress/e2e/api/{billing → _core/billing}/BillingAPIController.js +0 -0
  89. /package/tests/cypress/e2e/api/{billing → _core/billing}/check-action.cy.ts +0 -0
  90. /package/tests/cypress/e2e/api/{billing → _core/billing}/checkout.cy.ts +0 -0
  91. /package/tests/cypress/e2e/api/{billing → _core/billing}/lifecycle.cy.ts +0 -0
  92. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/README.md +0 -0
  93. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/business.cy.ts +0 -0
  94. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/downgrade.cy.ts +0 -0
  95. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/fixtures/billing-plans.json +0 -0
  96. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/free.cy.ts +0 -0
  97. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/pro.cy.ts +0 -0
  98. /package/tests/cypress/e2e/api/{billing → _core/billing}/plans/starter.cy.ts +0 -0
  99. /package/tests/cypress/e2e/api/{billing → _core/billing}/portal.cy.ts +0 -0
  100. /package/tests/cypress/e2e/api/{devtools → _core/devtools}/registries.bdd.md +0 -0
  101. /package/tests/cypress/e2e/api/{devtools → _core/devtools}/registries.cy.ts +0 -0
  102. /package/tests/cypress/e2e/api/{scheduled-actions → _core/scheduled-actions}/cron-endpoint.bdd.md +0 -0
  103. /package/tests/cypress/e2e/api/{scheduled-actions → _core/scheduled-actions}/cron-endpoint.cy.ts +0 -0
  104. /package/tests/cypress/e2e/api/{scheduled-actions → _core/scheduled-actions}/devtools-endpoint.bdd.md +0 -0
  105. /package/tests/cypress/e2e/api/{scheduled-actions → _core/scheduled-actions}/devtools-endpoint.cy.ts +0 -0
  106. /package/tests/cypress/e2e/api/{scheduled-actions → _core/scheduled-actions}/scheduling.bdd.md +0 -0
  107. /package/tests/cypress/e2e/api/{scheduled-actions → _core/scheduled-actions}/scheduling.cy.ts +0 -0
  108. /package/tests/cypress/e2e/api/{settings → _core/settings}/api-keys.crud.cy.ts +0 -0
  109. /package/tests/cypress/e2e/api/{entities → _core/users}/users-crud.cy.ts +0 -0
  110. /package/tests/cypress/e2e/api/{entities → _core/users}/users-metas.cy.ts +0 -0
  111. /package/tests/cypress/e2e/api/entities/{customers-crud.cy.ts → customers/customers-crud.cy.ts} +0 -0
  112. /package/tests/cypress/e2e/api/entities/{customers-metas.cy.ts → customers/customers-metas.cy.ts} +0 -0
  113. /package/tests/cypress/e2e/api/entities/{blocks-scope.cy.ts → pages/blocks-scope.cy.ts} +0 -0
  114. /package/tests/cypress/e2e/api/entities/{pages-crud.cy.ts → pages/pages-crud.cy.ts} +0 -0
  115. /package/tests/cypress/e2e/api/entities/{pages-status.cy.ts → pages/pages-status.cy.ts} +0 -0
  116. /package/tests/cypress/e2e/api/entities/{post-categories-crud.cy.ts → posts/post-categories-crud.cy.ts} +0 -0
  117. /package/tests/cypress/e2e/api/entities/{posts-crud.cy.ts → posts/posts-crud.cy.ts} +0 -0
  118. /package/tests/cypress/e2e/api/entities/{posts-status.cy.ts → posts/posts-status.cy.ts} +0 -0
  119. /package/tests/cypress/e2e/api/entities/{tasks-crud.cy.ts → tasks/tasks-crud.cy.ts} +0 -0
  120. /package/tests/cypress/e2e/api/entities/{tasks-metas.cy.ts → tasks/tasks-metas.cy.ts} +0 -0
  121. /package/tests/cypress/e2e/uat/{auth → _core/auth}/app-roles/developer-login.bdd.md +0 -0
  122. /package/tests/cypress/e2e/uat/{auth → _core/auth}/app-roles/developer-login.cy.ts +0 -0
  123. /package/tests/cypress/e2e/uat/{auth → _core/auth}/app-roles/superadmin-login.bdd.md +0 -0
  124. /package/tests/cypress/e2e/uat/{auth → _core/auth}/app-roles/superadmin-login.cy.ts +0 -0
  125. /package/tests/cypress/e2e/uat/{auth → _core/auth}/custom-roles/editor-login.bdd.md +0 -0
  126. /package/tests/cypress/e2e/uat/{auth → _core/auth}/custom-roles/editor-login.cy.ts +0 -0
  127. /package/tests/cypress/e2e/uat/{auth → _core/auth}/login-logout.bdd.md +0 -0
  128. /package/tests/cypress/e2e/uat/{auth → _core/auth}/password-reset.bdd.md +0 -0
  129. /package/tests/cypress/e2e/uat/{auth → _core/auth}/team-roles/admin-login.bdd.md +0 -0
  130. /package/tests/cypress/e2e/uat/{auth → _core/auth}/team-roles/admin-login.cy.ts +0 -0
  131. /package/tests/cypress/e2e/uat/{auth → _core/auth}/team-roles/member-login.bdd.md +0 -0
  132. /package/tests/cypress/e2e/uat/{auth → _core/auth}/team-roles/member-login.cy.ts +0 -0
  133. /package/tests/cypress/e2e/uat/{auth → _core/auth}/team-roles/owner-login.bdd.md +0 -0
  134. /package/tests/cypress/e2e/uat/{auth → _core/auth}/team-roles/owner-login.cy.ts +0 -0
  135. /package/tests/cypress/e2e/uat/{billing → _core/billing}/extended.bdd.md +0 -0
  136. /package/tests/cypress/e2e/uat/{billing → _core/billing}/feature-gates.bdd.md +0 -0
  137. /package/tests/cypress/e2e/uat/{billing → _core/billing}/page.bdd.md +0 -0
  138. /package/tests/cypress/e2e/uat/{billing → _core/billing}/status.bdd.md +0 -0
  139. /package/tests/cypress/e2e/uat/{billing → _core/billing}/team-switch.bdd.md +0 -0
  140. /package/tests/cypress/e2e/uat/{billing → _core/billing}/usage.bdd.md +0 -0
  141. /package/tests/cypress/e2e/uat/{blocks → _core/blocks}/hero.bdd.md +0 -0
  142. /package/tests/cypress/e2e/uat/{blocks → _core/blocks}/hero.cy.ts +0 -0
  143. /package/tests/cypress/e2e/uat/{scheduled-actions → _core/scheduled-actions}/devtools-ui.bdd.md +0 -0
  144. /package/tests/cypress/e2e/uat/{teams → _core/teams}/roles-matrix.bdd.md +0 -0
  145. /package/tests/cypress/e2e/uat/{teams → _core/teams}/switcher.bdd.md +0 -0
  146. /package/tests/cypress/e2e/uat/{teams → _core/teams}/team-switcher.md +0 -0
  147. /package/tests/cypress/e2e/uat/{roles → features/roles}/editor-role.bdd.md +0 -0
  148. /package/tests/cypress/e2e/uat/{roles → features/roles}/member-restrictions.bdd.md +0 -0
  149. /package/tests/cypress/e2e/uat/{roles → features/roles}/owner-full-crud.bdd.md +0 -0
@@ -0,0 +1,200 @@
1
+ ---
2
+ feature: Dashboard Topnav UI Selectors Validation
3
+ priority: high
4
+ tags: [selectors, topnav, dashboard, ui-validation]
5
+ grepTags: [ui-selectors, topnav, SEL_TNAV_001, SEL_TNAV_002, SEL_TNAV_003, SEL_TNAV_004, SEL_TNAV_006]
6
+ coverage: 5
7
+ ---
8
+
9
+ # Dashboard Topnav UI Selectors Validation
10
+
11
+ > Validates that dashboard topnav component selectors exist in the DOM. This is a lightweight test that ONLY checks selector presence, not functionality. Uses `loginAsDefaultDeveloper()` which has access to superadmin and devtools links.
12
+
13
+ **NOTE:** Public navbar tests (logo, signin, signup) are in `public.cy.ts`.
14
+
15
+ ## @test SEL_TNAV_001: Topnav Structure
16
+
17
+ ### Metadata
18
+ - **Priority:** High
19
+ - **Type:** Selector Validation
20
+ - **Tags:** topnav, structure, desktop
21
+ - **Grep:** `@ui-selectors` `@SEL_TNAV_001`
22
+ - **Status:** Active - 3 tests
23
+
24
+ ```gherkin:en
25
+ Scenario: Dashboard topnav has complete structure
26
+
27
+ Given I am logged in as a developer user
28
+ And I navigate to the dashboard
29
+ Then I should find the topnav header
30
+ And I should find the topnav actions container
31
+ And I should find the topnav search section
32
+ ```
33
+
34
+ ```gherkin:es
35
+ Scenario: Topnav del dashboard tiene estructura completa
36
+
37
+ Given estoy logueado como usuario developer
38
+ And navego al dashboard
39
+ Then deberia encontrar el header del topnav
40
+ And deberia encontrar el contenedor de acciones del topnav
41
+ And deberia encontrar la seccion de busqueda del topnav
42
+ ```
43
+
44
+ ### Expected Results
45
+ - `topnav-header` selector exists
46
+ - `topnav-actions` selector exists
47
+ - `topnav-search-section` selector exists
48
+
49
+ ---
50
+
51
+ ## @test SEL_TNAV_002: Topnav Actions
52
+
53
+ ### Metadata
54
+ - **Priority:** High
55
+ - **Type:** Selector Validation
56
+ - **Tags:** topnav, actions, buttons
57
+ - **Grep:** `@ui-selectors` `@SEL_TNAV_002`
58
+ - **Status:** Active - 4 passing
59
+
60
+ ```gherkin:en
61
+ Scenario: Dashboard topnav has all action buttons
62
+
63
+ Given I am logged in as a valid user
64
+ And I navigate to the dashboard
65
+ Then I should find the sidebar toggle button
66
+ And I should find the notifications button
67
+ And I should find the help button
68
+ And I should find the theme toggle button
69
+ ```
70
+
71
+ ```gherkin:es
72
+ Scenario: Topnav del dashboard tiene todos los botones de accion
73
+
74
+ Given estoy logueado como usuario valido
75
+ And navego al dashboard
76
+ Then deberia encontrar el boton de toggle del sidebar
77
+ And deberia encontrar el boton de notificaciones
78
+ And deberia encontrar el boton de ayuda
79
+ And deberia encontrar el boton de cambio de tema
80
+ ```
81
+
82
+ ### Expected Results
83
+ - `topnav-sidebar-toggle` selector exists
84
+ - `topnav-notifications` selector exists
85
+ - `topnav-help` selector exists
86
+ - `topnav-theme-toggle` selector exists
87
+
88
+ ---
89
+
90
+ ## @test SEL_TNAV_003: Topnav Admin Links
91
+
92
+ ### Metadata
93
+ - **Priority:** Medium
94
+ - **Type:** Selector Validation
95
+ - **Tags:** topnav, admin, superadmin, devtools
96
+ - **Grep:** `@ui-selectors` `@SEL_TNAV_003`
97
+ - **Status:** Active - 2 tests
98
+
99
+ ```gherkin:en
100
+ Scenario: Topnav shows admin links for developer users
101
+
102
+ Given I am logged in as a developer user
103
+ And superadminAccess.showToDevelopers is enabled (default: true)
104
+ And devtoolsAccess is enabled (default: true)
105
+ And I navigate to the dashboard
106
+ Then I should find the superadmin link
107
+ And I should find the devtools link
108
+ ```
109
+
110
+ ```gherkin:es
111
+ Scenario: Topnav muestra links de admin para usuarios developer
112
+
113
+ Given estoy logueado como usuario developer
114
+ And superadminAccess.showToDevelopers esta habilitado (default: true)
115
+ And devtoolsAccess esta habilitado (default: true)
116
+ And navego al dashboard
117
+ Then deberia encontrar el link de superadmin
118
+ And deberia encontrar el link de devtools
119
+ ```
120
+
121
+ ### Expected Results
122
+ - `topnav-superadmin` selector exists (developer sees with showToDevelopers: true)
123
+ - `topnav-devtools` selector exists (developer has access)
124
+
125
+ ---
126
+
127
+ ## @test SEL_TNAV_004: User Menu
128
+
129
+ ### Metadata
130
+ - **Priority:** High
131
+ - **Type:** Selector Validation
132
+ - **Tags:** topnav, user-menu, dropdown
133
+ - **Grep:** `@ui-selectors` `@SEL_TNAV_004`
134
+ - **Status:** Active - 5 passing
135
+
136
+ ```gherkin:en
137
+ Scenario: User menu opens and shows all items
138
+
139
+ Given I am logged in as a valid user
140
+ And I navigate to the dashboard
141
+ Then I should find the user menu trigger
142
+ When I click on the user menu trigger
143
+ Then I should see the user menu dropdown
144
+ And I should find the profile menu item
145
+ And I should find the settings menu item
146
+ And I should find the signOut action
147
+ ```
148
+
149
+ ```gherkin:es
150
+ Scenario: Menu de usuario se abre y muestra todos los items
151
+
152
+ Given estoy logueado como usuario valido
153
+ And navego al dashboard
154
+ Then deberia encontrar el trigger del menu de usuario
155
+ When hago click en el trigger del menu de usuario
156
+ Then deberia ver el dropdown del menu de usuario
157
+ And deberia encontrar el item de menu de perfil
158
+ And deberia encontrar el item de menu de configuracion
159
+ And deberia encontrar la accion de cerrar sesion
160
+ ```
161
+
162
+ ### Expected Results
163
+ - `topnav-user-menu-trigger` selector exists
164
+ - `topnav-user-menu` visible when opened
165
+ - `topnav-menu-item-user` selector exists
166
+ - `topnav-menu-item-settings` selector exists
167
+ - `topnav-menu-action-signOut` selector exists
168
+
169
+ ---
170
+
171
+ ## @test SEL_TNAV_006: Loading State
172
+
173
+ ### Metadata
174
+ - **Priority:** Low
175
+ - **Type:** Selector Validation
176
+ - **Tags:** topnav, loading, skeleton
177
+ - **Grep:** `@ui-selectors` `@SEL_TNAV_006`
178
+ - **Status:** 1 Skipped - transient state cannot be reliably tested
179
+
180
+ ```gherkin:en
181
+ Scenario: Topnav shows loading state during auth
182
+
183
+ Given the authentication state is loading
184
+ And I navigate to the dashboard
185
+ Then I should find the user loading state indicator
186
+ ```
187
+
188
+ ```gherkin:es
189
+ Scenario: Topnav muestra estado de carga durante autenticacion
190
+
191
+ Given el estado de autenticacion esta cargando
192
+ And navego al dashboard
193
+ Then deberia encontrar el indicador de estado de carga del usuario
194
+ ```
195
+
196
+ ### Expected Results
197
+ - `topnav-user-loading` - only visible during auth loading
198
+
199
+ ### Notes
200
+ This transient state is difficult to test in normal flow.
@@ -14,35 +14,37 @@
14
14
  * - Assert elements exist in DOM (no form submissions)
15
15
  * - Fast execution (< 30 seconds per describe block)
16
16
  *
17
- * NOTE: Some selectors require specific states (user menu open, specific roles).
18
- * signin/signup selectors only visible when NOT logged in.
17
+ * Test IDs:
18
+ * - SEL_TNAV_001: Topnav Structure (3 selectors)
19
+ * - SEL_TNAV_002: Topnav Actions (4 selectors)
20
+ * - SEL_TNAV_003: Topnav Admin Links (2 selectors - developer has access)
21
+ * - SEL_TNAV_004: User Menu (5 selectors)
22
+ * - SEL_TNAV_006: Loading State (1 skipped - transient state)
23
+ *
24
+ * NOTE: Public navbar tests (logo, signin, signup) are in public.cy.ts
19
25
  */
20
26
 
21
- import { DashboardPOM } from '../../src/features/DashboardPOM'
22
- import { loginAsDefaultOwner } from '../../src/session-helpers'
27
+ import { DashboardPOM } from '../../../src/features/DashboardPOM'
28
+ import { loginAsDefaultDeveloper } from '../../../src/session-helpers'
23
29
 
24
- describe('Dashboard Topnav Selectors Validation', { tags: ['@ui-selectors'] }, () => {
30
+ describe('Dashboard Topnav Selectors Validation', { tags: ['@ui-selectors', '@topnav'] }, () => {
25
31
  const dashboard = DashboardPOM.create()
26
32
 
27
33
  beforeEach(() => {
28
- loginAsDefaultOwner()
34
+ loginAsDefaultDeveloper()
29
35
  cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
30
36
  cy.url().should('include', '/dashboard')
31
37
  })
32
38
 
33
39
  // ============================================
34
- // TOPNAV STRUCTURE (4 selectors)
40
+ // SEL_TNAV_001: TOPNAV STRUCTURE (3 selectors)
41
+ // NOTE: Logo test moved to public.cy.ts (only visible when not logged in)
35
42
  // ============================================
36
- describe('Topnav Structure', () => {
43
+ describe('SEL_TNAV_001: Topnav Structure', { tags: '@SEL_TNAV_001' }, () => {
37
44
  it('should find topnav header', () => {
38
45
  cy.get(dashboard.selectors.topnavHeader).should('exist')
39
46
  })
40
47
 
41
- // NOTE: Logo only visible when NOT logged in
42
- it.skip('should find topnav logo (only visible when not logged in)', () => {
43
- cy.get(dashboard.selectors.topnavLogo).should('exist')
44
- })
45
-
46
48
  it('should find topnav actions container', () => {
47
49
  cy.get(dashboard.selectors.topnavActions).should('exist')
48
50
  })
@@ -53,9 +55,9 @@ describe('Dashboard Topnav Selectors Validation', { tags: ['@ui-selectors'] }, (
53
55
  })
54
56
 
55
57
  // ============================================
56
- // TOPNAV ACTIONS (4 selectors)
58
+ // SEL_TNAV_002: TOPNAV ACTIONS (4 selectors)
57
59
  // ============================================
58
- describe('Topnav Actions', () => {
60
+ describe('SEL_TNAV_002: Topnav Actions', { tags: '@SEL_TNAV_002' }, () => {
59
61
  it('should find sidebar toggle button', () => {
60
62
  cy.get(dashboard.selectors.topnavSidebarToggle).should('exist')
61
63
  })
@@ -74,26 +76,25 @@ describe('Dashboard Topnav Selectors Validation', { tags: ['@ui-selectors'] }, (
74
76
  })
75
77
 
76
78
  // ============================================
77
- // TOPNAV ADMIN LINKS (2 selectors)
78
- // NOTE: Requires superadmin (sector7) or developer role (devzone)
79
- // Default owner does NOT have these roles
79
+ // SEL_TNAV_003: TOPNAV ADMIN LINKS (2 selectors)
80
+ // NOTE: Developer user has access (showToDevelopers: true by default)
80
81
  // ============================================
81
- describe('Topnav Admin Links', () => {
82
- it.skip('should find sector7 link (requires superadmin or developer with sector7 enabled)', () => {
83
- // Requires: sector7Config?.enabled && (isSuperAdmin || (isDeveloper && sector7Config?.showToDevelopers))
82
+ describe('SEL_TNAV_003: Topnav Admin Links', { tags: '@SEL_TNAV_003' }, () => {
83
+ it('should find superadmin link (developer sees with showToDevelopers)', () => {
84
+ // Config: superadminAccess.enabled && (isSuperAdmin || (isDeveloper && showToDevelopers))
84
85
  cy.get(dashboard.selectors.topnavSuperadmin).should('exist')
85
86
  })
86
87
 
87
- it.skip('should find devzone link (requires developer role)', () => {
88
- // Requires: devZoneConfig?.enabled && isDeveloper
89
- cy.get(dashboard.selectors.topnavDevzone).should('exist')
88
+ it('should find devtools link (developer role)', () => {
89
+ // Config: devtoolsAccess.enabled && isDeveloper
90
+ cy.get(dashboard.selectors.topnavDevtools).should('exist')
90
91
  })
91
92
  })
92
93
 
93
94
  // ============================================
94
- // USER MENU (4+ selectors)
95
+ // SEL_TNAV_004: USER MENU (4+ selectors)
95
96
  // ============================================
96
- describe('User Menu', () => {
97
+ describe('SEL_TNAV_004: User Menu', { tags: '@SEL_TNAV_004' }, () => {
97
98
  it('should find user menu trigger', () => {
98
99
  cy.get(dashboard.selectors.topnavUserMenuTrigger).should('exist')
99
100
  })
@@ -121,24 +122,10 @@ describe('Dashboard Topnav Selectors Validation', { tags: ['@ui-selectors'] }, (
121
122
  })
122
123
 
123
124
  // ============================================
124
- // PUBLIC NAVBAR SELECTORS (2 selectors)
125
- // NOTE: Only visible when NOT logged in - skip for logged-in tests
126
- // ============================================
127
- describe('Public Navbar Selectors', () => {
128
- it.skip('should find signin button (only visible when not logged in)', () => {
129
- cy.get(dashboard.selectors.topnavSignin).should('exist')
130
- })
131
-
132
- it.skip('should find signup button (only visible when not logged in)', () => {
133
- cy.get(dashboard.selectors.topnavSignup).should('exist')
134
- })
135
- })
136
-
137
- // ============================================
138
- // LOADING STATE SELECTOR (1 selector)
139
- // NOTE: Only visible during auth loading
125
+ // SEL_TNAV_006: LOADING STATE SELECTOR (1 selector)
126
+ // NOTE: Only visible during auth loading - transient state
140
127
  // ============================================
141
- describe('Loading State Selectors', () => {
128
+ describe('SEL_TNAV_006: Loading State', { tags: '@SEL_TNAV_006' }, () => {
142
129
  it.skip('should find user loading state (only visible during auth loading)', () => {
143
130
  cy.get(dashboard.selectors.topnavUserLoading).should('exist')
144
131
  })
@@ -0,0 +1,306 @@
1
+ ---
2
+ feature: DevTools UI Selectors Validation
3
+ priority: medium
4
+ tags: [selectors, devtools, developer, ui-validation]
5
+ grepTags: [ui-selectors, devtools, SEL_DEVT_001, SEL_DEVT_002, SEL_DEVT_003, SEL_DEVT_004, SEL_DEVT_005, SEL_DEVT_006]
6
+ coverage: 6
7
+ ---
8
+
9
+ # DevTools UI Selectors Validation
10
+
11
+ > Validates that DevTools (devzone) component selectors exist in the DOM. This is a lightweight test that ONLY checks selector presence, not functionality.
12
+
13
+ **IMPORTANT:** DevTools is only accessible to users with 'developer' app role. All tests use `loginAsDefaultDeveloper()`.
14
+
15
+ ## @test SEL_DEVT_001: Navigation Structure
16
+
17
+ ### Metadata
18
+ - **Priority:** High
19
+ - **Type:** Selector Validation
20
+ - **Tags:** devtools, navigation, sidebar
21
+ - **Grep:** `@ui-selectors` `@SEL_DEVT_001`
22
+ - **Status:** Active - 8 tests
23
+
24
+ ```gherkin:en
25
+ Scenario: DevTools navigation has complete structure
26
+
27
+ Given I am logged in as a developer user
28
+ And I navigate to /devtools
29
+ Then I should find the sidebar container
30
+ And I should find the sidebar collapse toggle
31
+ And I should find the nav home item
32
+ And I should find the nav style gallery item
33
+ And I should find the nav test cases item
34
+ And I should find the nav config item
35
+ And I should find the exit to dashboard link
36
+ And I should find the go to admin link
37
+ ```
38
+
39
+ ```gherkin:es
40
+ Scenario: Navegacion de DevTools tiene estructura completa
41
+
42
+ Given estoy logueado como usuario developer
43
+ And navego a /devtools
44
+ Then deberia encontrar el contenedor del sidebar
45
+ And deberia encontrar el toggle de colapso del sidebar
46
+ And deberia encontrar el item de navegacion home
47
+ And deberia encontrar el item de navegacion style gallery
48
+ And deberia encontrar el item de navegacion test cases
49
+ And deberia encontrar el item de navegacion config
50
+ And deberia encontrar el link de salir al dashboard
51
+ And deberia encontrar el link de ir a admin
52
+ ```
53
+
54
+ ### Expected Results
55
+ - `devtools-sidebar` selector exists
56
+ - `devtools-sidebar-collapse` selector exists
57
+ - `devtools-nav-home` selector exists
58
+ - `devtools-nav-style` selector exists
59
+ - `devtools-nav-tests` selector exists
60
+ - `devtools-nav-config` selector exists
61
+ - `devtools-exit-dashboard` selector exists
62
+ - `devtools-go-admin` selector exists
63
+
64
+ ---
65
+
66
+ ## @test SEL_DEVT_002: Home Page
67
+
68
+ ### Metadata
69
+ - **Priority:** Medium
70
+ - **Type:** Selector Validation
71
+ - **Tags:** devtools, home, quicklinks
72
+ - **Grep:** `@ui-selectors` `@SEL_DEVT_002`
73
+ - **Status:** Active - 4 tests
74
+
75
+ ```gherkin:en
76
+ Scenario: DevTools home page has quick links
77
+
78
+ Given I am logged in as a developer user
79
+ And I navigate to /devtools
80
+ Then I should find the home page container
81
+ And I should find the style gallery quick link
82
+ And I should find the tests quick link
83
+ And I should find the config quick link
84
+ ```
85
+
86
+ ```gherkin:es
87
+ Scenario: Pagina home de DevTools tiene links rapidos
88
+
89
+ Given estoy logueado como usuario developer
90
+ And navego a /devtools
91
+ Then deberia encontrar el contenedor de la pagina home
92
+ And deberia encontrar el link rapido a style gallery
93
+ And deberia encontrar el link rapido a tests
94
+ And deberia encontrar el link rapido a config
95
+ ```
96
+
97
+ ### Expected Results
98
+ - `devtools-home-page` selector exists
99
+ - `devtools-home-style-link` selector exists
100
+ - `devtools-home-tests-link` selector exists
101
+ - `devtools-home-config-link` selector exists
102
+
103
+ ---
104
+
105
+ ## @test SEL_DEVT_003: Style Gallery Page
106
+
107
+ ### Metadata
108
+ - **Priority:** Medium
109
+ - **Type:** Selector Validation
110
+ - **Tags:** devtools, style, gallery, tabs
111
+ - **Grep:** `@ui-selectors` `@SEL_DEVT_003`
112
+ - **Status:** Active - 8 tests
113
+
114
+ ```gherkin:en
115
+ Scenario: DevTools style gallery has all tabs and content
116
+
117
+ Given I am logged in as a developer user
118
+ And I navigate to /devtools/style
119
+ Then I should find the style page container
120
+ And I should find the components tab
121
+ And I should find the field types tab
122
+ And I should find the theme tab
123
+ And I should find the guidelines tab
124
+ And I should find the component gallery (default tab)
125
+ When I click the field types tab
126
+ Then I should find the field types content
127
+ When I click the theme tab
128
+ Then I should find the theme preview
129
+ ```
130
+
131
+ ```gherkin:es
132
+ Scenario: Style gallery de DevTools tiene todas las tabs y contenido
133
+
134
+ Given estoy logueado como usuario developer
135
+ And navego a /devtools/style
136
+ Then deberia encontrar el contenedor de la pagina style
137
+ And deberia encontrar la tab de components
138
+ And deberia encontrar la tab de field types
139
+ And deberia encontrar la tab de theme
140
+ And deberia encontrar la tab de guidelines
141
+ And deberia encontrar la galeria de componentes (tab por defecto)
142
+ When hago click en la tab de field types
143
+ Then deberia encontrar el contenido de field types
144
+ When hago click en la tab de theme
145
+ Then deberia encontrar el preview del tema
146
+ ```
147
+
148
+ ### Expected Results
149
+ - `devtools-style-page` selector exists
150
+ - `devtools-style-tab-components` selector exists
151
+ - `devtools-style-tab-fieldtypes` selector exists
152
+ - `devtools-style-tab-theme` selector exists
153
+ - `devtools-style-tab-guidelines` selector exists
154
+ - `devtools-style-component-gallery` selector exists
155
+ - `devtools-style-fieldtypes` selector exists (when tab clicked)
156
+ - `devtools-style-theme-preview` selector exists (when tab clicked)
157
+
158
+ ---
159
+
160
+ ## @test SEL_DEVT_004: Config Viewer Page
161
+
162
+ ### Metadata
163
+ - **Priority:** Medium
164
+ - **Type:** Selector Validation
165
+ - **Tags:** devtools, config, viewer, tabs
166
+ - **Grep:** `@ui-selectors` `@SEL_DEVT_004`
167
+ - **Status:** Active - 8 tests
168
+
169
+ ```gherkin:en
170
+ Scenario: DevTools config viewer has all tabs and actions
171
+
172
+ Given I am logged in as a developer user
173
+ And I navigate to /devtools/config
174
+ Then I should find the config page container
175
+ And I should find the config viewer container
176
+ And I should find the theme tab
177
+ And I should find the entities tab
178
+ And I should find the theme content (default tab)
179
+ And I should find the copy theme button
180
+ When I click the entities tab
181
+ Then I should find the entities content
182
+ And I should find the copy entities button
183
+ ```
184
+
185
+ ```gherkin:es
186
+ Scenario: Config viewer de DevTools tiene todas las tabs y acciones
187
+
188
+ Given estoy logueado como usuario developer
189
+ And navego a /devtools/config
190
+ Then deberia encontrar el contenedor de la pagina config
191
+ And deberia encontrar el contenedor del config viewer
192
+ And deberia encontrar la tab de theme
193
+ And deberia encontrar la tab de entities
194
+ And deberia encontrar el contenido de theme (tab por defecto)
195
+ And deberia encontrar el boton de copiar theme
196
+ When hago click en la tab de entities
197
+ Then deberia encontrar el contenido de entities
198
+ And deberia encontrar el boton de copiar entities
199
+ ```
200
+
201
+ ### Expected Results
202
+ - `devtools-config-page` selector exists
203
+ - `devtools-config-viewer` selector exists
204
+ - `devtools-config-tab-theme` selector exists
205
+ - `devtools-config-tab-entities` selector exists
206
+ - `devtools-config-theme-content` selector exists
207
+ - `devtools-config-copy-theme` selector exists
208
+ - `devtools-config-entities-content` selector exists (when tab clicked)
209
+ - `devtools-config-copy-entities` selector exists (when tab clicked)
210
+
211
+ ---
212
+
213
+ ## @test SEL_DEVT_005: Test Cases Page
214
+
215
+ ### Metadata
216
+ - **Priority:** Medium
217
+ - **Type:** Selector Validation
218
+ - **Tags:** devtools, tests, viewer
219
+ - **Grep:** `@ui-selectors` `@SEL_DEVT_005`
220
+ - **Status:** Active - 3 tests
221
+
222
+ ```gherkin:en
223
+ Scenario: DevTools test cases page has viewer components
224
+
225
+ Given I am logged in as a developer user
226
+ And I navigate to /devtools/tests
227
+ Then I should find the tests page container
228
+ And I should find the tests viewer container
229
+ And I should find the tests tree
230
+ ```
231
+
232
+ ```gherkin:es
233
+ Scenario: Pagina test cases de DevTools tiene componentes del viewer
234
+
235
+ Given estoy logueado como usuario developer
236
+ And navego a /devtools/tests
237
+ Then deberia encontrar el contenedor de la pagina tests
238
+ And deberia encontrar el contenedor del tests viewer
239
+ And deberia encontrar el arbol de tests
240
+ ```
241
+
242
+ ### Expected Results
243
+ - `devtools-tests-page` selector exists
244
+ - `devtools-tests-viewer` selector exists
245
+ - `devtools-tests-tree` selector exists
246
+
247
+ ### Notes
248
+ Conditional states (loading, empty, error) are not tested in selector validation.
249
+
250
+ ---
251
+
252
+ ## @test SEL_DEVT_006: Test Coverage Dashboard
253
+
254
+ ### Metadata
255
+ - **Priority:** Medium
256
+ - **Type:** Selector Validation
257
+ - **Tags:** devtools, tests, dashboard, coverage
258
+ - **Grep:** `@ui-selectors` `@SEL_DEVT_006`
259
+ - **Status:** Active - 9 tests
260
+
261
+ ```gherkin:en
262
+ Scenario: DevTools test coverage dashboard has all components
263
+
264
+ Given I am logged in as a developer user
265
+ And I navigate to /devtools/tests
266
+ Then I should find the dashboard container
267
+ And I should find the dashboard stats container
268
+ And I should find the features stat card
269
+ And I should find the flows stat card
270
+ And I should find the files stat card
271
+ And I should find the tags stat card
272
+ And I should find the coverage gaps container
273
+ When I select a test file from the tree
274
+ Then I should find the dashboard button in sidebar
275
+ When I click the dashboard button
276
+ Then I should see the dashboard again
277
+ ```
278
+
279
+ ```gherkin:es
280
+ Scenario: Dashboard de cobertura de DevTools tiene todos los componentes
281
+
282
+ Given estoy logueado como usuario developer
283
+ And navego a /devtools/tests
284
+ Then deberia encontrar el contenedor del dashboard
285
+ And deberia encontrar el contenedor de estadisticas
286
+ And deberia encontrar la tarjeta de estadisticas de features
287
+ And deberia encontrar la tarjeta de estadisticas de flows
288
+ And deberia encontrar la tarjeta de estadisticas de files
289
+ And deberia encontrar la tarjeta de estadisticas de tags
290
+ And deberia encontrar el contenedor de gaps de cobertura
291
+ When selecciono un archivo de test del arbol
292
+ Then deberia encontrar el boton de dashboard en el sidebar
293
+ When hago click en el boton de dashboard
294
+ Then deberia ver el dashboard nuevamente
295
+ ```
296
+
297
+ ### Expected Results
298
+ - `devtools-tests-dashboard` selector exists (when no file selected)
299
+ - `devtools-tests-dashboard-stats` selector exists
300
+ - `devtools-tests-dashboard-stat-features` selector exists
301
+ - `devtools-tests-dashboard-stat-flows` selector exists
302
+ - `devtools-tests-dashboard-stat-files` selector exists
303
+ - `devtools-tests-dashboard-stat-tags` selector exists
304
+ - `devtools-tests-dashboard-gaps` selector exists
305
+ - `devtools-tests-dashboard-button` selector exists (when file selected)
306
+ - Dashboard button returns to dashboard view