@nextsparkjs/theme-default 0.1.0-beta.30 → 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,353 @@
1
+ ---
2
+ feature: Tasks Entity UI Selectors Validation
3
+ priority: high
4
+ tags: [selectors, tasks, entities, ui-validation]
5
+ grepTags: [ui-selectors, tasks, SEL_TASK_001, SEL_TASK_002, SEL_TASK_003, SEL_TASK_004, SEL_TASK_005, SEL_TASK_006, SEL_TASK_007]
6
+ coverage: 7
7
+ ---
8
+
9
+ # Tasks Entity UI Selectors Validation
10
+
11
+ > Validates that Tasks entity component selectors exist in the DOM. This test validates the POM architecture with dynamic selectors works correctly for entity CRUD operations. Only checks selector presence, not full CRUD functionality.
12
+
13
+ **IMPORTANT:** Uses `TasksPOM` which extends `DashboardEntityPOM`. All dynamic selectors use entity slug `tasks`.
14
+
15
+ **Login:** Uses Carlos Mendoza (owner) via `loginAsDefaultOwner()` - requires team context for entity API calls.
16
+
17
+ ## @test SEL_TASK_001: List Page Selectors
18
+
19
+ ### Metadata
20
+ - **Priority:** High
21
+ - **Type:** Selector Validation
22
+ - **Tags:** tasks, list, table, pagination
23
+ - **Grep:** `@ui-selectors` `@SEL_TASK_001`
24
+ - **Status:** Active (10 passing, 0 skipped)
25
+
26
+ ```gherkin:en
27
+ Scenario: Tasks list page has all required selectors
28
+
29
+ Given I am logged in as owner (Carlos Mendoza)
30
+ And I navigate to /dashboard/tasks
31
+ When the list page loads
32
+ Then I should find the table container element
33
+ And I should find the add button
34
+ And I should find the search input
35
+ And I should find the search container
36
+ And I should find the select all checkbox
37
+ And I should find the pagination container
38
+ And I should find pagination controls (first, prev, next, last)
39
+ And I should find the page size selector
40
+ And I should find the page info
41
+ And I should find at least one row with dynamic selector
42
+ ```
43
+
44
+ ```gherkin:es
45
+ Scenario: Pagina de lista de tasks tiene todos los selectores requeridos
46
+
47
+ Given estoy logueado como owner (Carlos Mendoza)
48
+ And navego a /dashboard/tasks
49
+ When la pagina de lista carga
50
+ Then deberia encontrar el elemento contenedor de tabla
51
+ And deberia encontrar el boton de agregar
52
+ And deberia encontrar el input de busqueda
53
+ And deberia encontrar el contenedor de busqueda
54
+ And deberia encontrar el checkbox de seleccionar todo
55
+ And deberia encontrar el contenedor de paginacion
56
+ And deberia encontrar controles de paginacion (primero, anterior, siguiente, ultimo)
57
+ And deberia encontrar el selector de tamano de pagina
58
+ And deberia encontrar la info de pagina
59
+ And deberia encontrar al menos una fila con selector dinamico
60
+ ```
61
+
62
+ ### Expected Results
63
+ - `tasks-table-container` selector exists ✅
64
+ - `tasks-add` selector exists ✅
65
+ - `tasks-search` selector exists ✅
66
+ - `tasks-search-container` selector exists ✅
67
+ - `tasks-select-all` selector exists ✅
68
+ - `tasks-pagination` selector exists ✅
69
+ - `tasks-page-first/prev/next/last` selectors exist ✅
70
+ - `tasks-page-size` selector exists ✅
71
+ - `tasks-page-info` selector exists ✅
72
+ - `tasks-row-{id}` dynamic selectors exist ✅
73
+
74
+ ---
75
+
76
+ ## @test SEL_TASK_002: Filter Selectors
77
+
78
+ ### Metadata
79
+ - **Priority:** Medium
80
+ - **Type:** Selector Validation
81
+ - **Tags:** tasks, filters, status, priority
82
+ - **Grep:** `@ui-selectors` `@SEL_TASK_002`
83
+ - **Status:** Active (3 passing, 0 skipped)
84
+
85
+ ```gherkin:en
86
+ Scenario: Tasks list has filter selectors
87
+
88
+ Given I am logged in as owner (Carlos Mendoza)
89
+ And I navigate to /dashboard/tasks
90
+ When the list page loads
91
+ Then I should find the status filter trigger
92
+ And I should find the priority filter trigger
93
+ When I open the status filter
94
+ Then I should find the filter options content
95
+ ```
96
+
97
+ ```gherkin:es
98
+ Scenario: Lista de tasks tiene selectores de filtro
99
+
100
+ Given estoy logueado como owner (Carlos Mendoza)
101
+ And navego a /dashboard/tasks
102
+ When la pagina de lista carga
103
+ Then deberia encontrar el trigger del filtro de status
104
+ And deberia encontrar el trigger del filtro de prioridad
105
+ When abro el filtro de status
106
+ Then deberia encontrar el contenido de opciones del filtro
107
+ ```
108
+
109
+ ### Expected Results
110
+ - `tasks-filter-status-trigger` selector exists ✅
111
+ - `tasks-filter-priority-trigger` selector exists ✅
112
+ - `tasks-filter-status-content` selector visible when opened ✅
113
+
114
+ ---
115
+
116
+ ## @test SEL_TASK_003: Row Dynamic Selectors
117
+
118
+ ### Metadata
119
+ - **Priority:** High
120
+ - **Type:** Selector Validation
121
+ - **Tags:** tasks, rows, dynamic
122
+ - **Grep:** `@ui-selectors` `@SEL_TASK_003`
123
+ - **Status:** Active (1 passing, 0 skipped)
124
+
125
+ ```gherkin:en
126
+ Scenario: Tasks rows have dynamic selectors with ID
127
+
128
+ Given I am logged in as owner (Carlos Mendoza)
129
+ And I navigate to /dashboard/tasks
130
+ When the list page loads with at least one task
131
+ Then I should extract the row ID from data-cy attribute
132
+ And I should find the row element with dynamic selector
133
+ And I should find the row select checkbox with dynamic ID
134
+ And I should find the row menu with dynamic ID
135
+ ```
136
+
137
+ ```gherkin:es
138
+ Scenario: Filas de tasks tienen selectores dinamicos con ID
139
+
140
+ Given estoy logueado como owner (Carlos Mendoza)
141
+ And navego a /dashboard/tasks
142
+ When la pagina de lista carga con al menos una tarea
143
+ Then deberia extraer el ID de fila del atributo data-cy
144
+ And deberia encontrar el elemento de fila con selector dinamico
145
+ And deberia encontrar el checkbox de seleccion de fila con ID dinamico
146
+ And deberia encontrar el menu de fila con ID dinamico
147
+ ```
148
+
149
+ ### Expected Results
150
+ - `tasks-row-{id}` dynamic selector works ✅
151
+ - `tasks-row-select-{id}` dynamic selector works ✅
152
+ - `tasks-row-menu-{id}` dynamic selector works ✅
153
+
154
+ ---
155
+
156
+ ## @test SEL_TASK_004: Create Page Selectors
157
+
158
+ ### Metadata
159
+ - **Priority:** High
160
+ - **Type:** Selector Validation
161
+ - **Tags:** tasks, create, form, fields
162
+ - **Grep:** `@ui-selectors` `@SEL_TASK_004`
163
+ - **Status:** Active (8 passing, 0 skipped)
164
+
165
+ ```gherkin:en
166
+ Scenario: Tasks create page has form selectors
167
+
168
+ Given I am logged in as owner (Carlos Mendoza)
169
+ And I navigate to /dashboard/tasks/new
170
+ When the create form loads
171
+ Then I should find the form container
172
+ And I should find the submit button
173
+ And I should find the create header
174
+ And I should find the back button
175
+ And I should find the title field
176
+ And I should find the description field
177
+ And I should find the status field
178
+ And I should find the priority field
179
+ ```
180
+
181
+ ```gherkin:es
182
+ Scenario: Pagina de creacion de tasks tiene selectores de formulario
183
+
184
+ Given estoy logueado como owner (Carlos Mendoza)
185
+ And navego a /dashboard/tasks/new
186
+ When el formulario de creacion carga
187
+ Then deberia encontrar el contenedor del formulario
188
+ And deberia encontrar el boton de submit
189
+ And deberia encontrar el header de creacion
190
+ And deberia encontrar el boton de volver
191
+ And deberia encontrar el campo de titulo
192
+ And deberia encontrar el campo de descripcion
193
+ And deberia encontrar el campo de status
194
+ And deberia encontrar el campo de prioridad
195
+ ```
196
+
197
+ ### Expected Results
198
+ - `tasks-form` selector exists ✅
199
+ - `tasks-form-submit` selector exists ✅
200
+ - `tasks-create-header` selector exists ✅
201
+ - `tasks-back` selector exists ✅
202
+ - `tasks-field-title` selector exists ✅
203
+ - `tasks-field-description` selector exists ✅
204
+ - `tasks-field-status` selector exists ✅
205
+ - `tasks-field-priority` selector exists ✅
206
+
207
+ ---
208
+
209
+ ## @test SEL_TASK_005: Detail Page Selectors
210
+
211
+ ### Metadata
212
+ - **Priority:** High
213
+ - **Type:** Selector Validation
214
+ - **Tags:** tasks, detail, view, actions
215
+ - **Grep:** `@ui-selectors` `@SEL_TASK_005`
216
+ - **Status:** Active (1 passing, 0 skipped)
217
+
218
+ ```gherkin:en
219
+ Scenario: Tasks detail page has view selectors
220
+
221
+ Given I am logged in as owner (Carlos Mendoza)
222
+ And I navigate to /dashboard/tasks
223
+ When I get a task ID from the list
224
+ And I navigate to the task detail page
225
+ Then I should find the view header
226
+ And I should find the edit button
227
+ And I should find the delete button
228
+ And I should find the back button
229
+ ```
230
+
231
+ ```gherkin:es
232
+ Scenario: Pagina de detalle de tasks tiene selectores de vista
233
+
234
+ Given estoy logueado como owner (Carlos Mendoza)
235
+ And navego a /dashboard/tasks
236
+ When obtengo un ID de tarea de la lista
237
+ And navego a la pagina de detalle de la tarea
238
+ Then deberia encontrar el header de vista
239
+ And deberia encontrar el boton de editar
240
+ And deberia encontrar el boton de eliminar
241
+ And deberia encontrar el boton de volver
242
+ ```
243
+
244
+ ### Expected Results
245
+ - `tasks-view-header` selector exists ✅
246
+ - `tasks-edit-btn` selector exists ✅
247
+ - `tasks-delete-btn` selector exists ✅
248
+ - `tasks-back` selector exists ✅
249
+
250
+ ---
251
+
252
+ ## @test SEL_TASK_006: Bulk Actions Selectors
253
+
254
+ ### Metadata
255
+ - **Priority:** Medium
256
+ - **Type:** Selector Validation
257
+ - **Tags:** tasks, bulk, actions, selection
258
+ - **Grep:** `@ui-selectors` `@SEL_TASK_006`
259
+ - **Status:** Active (1 passing, 0 skipped)
260
+
261
+ ```gherkin:en
262
+ Scenario: Bulk action bar appears after selecting rows
263
+
264
+ Given I am logged in as owner (Carlos Mendoza)
265
+ And I navigate to /dashboard/tasks
266
+ When I select a row using the row checkbox
267
+ Then the bulk action bar should be visible
268
+ And I should find the bulk count indicator
269
+ And I should find the bulk delete button
270
+ And I should find the bulk clear button
271
+ ```
272
+
273
+ ```gherkin:es
274
+ Scenario: Barra de acciones masivas aparece despues de seleccionar filas
275
+
276
+ Given estoy logueado como owner (Carlos Mendoza)
277
+ And navego a /dashboard/tasks
278
+ When selecciono una fila usando el checkbox de fila
279
+ Then la barra de acciones masivas deberia ser visible
280
+ And deberia encontrar el indicador de conteo masivo
281
+ And deberia encontrar el boton de eliminar masivo
282
+ And deberia encontrar el boton de limpiar seleccion
283
+ ```
284
+
285
+ ### Expected Results
286
+ - `tasks-bulk-bar` visible when rows selected ✅
287
+ - `tasks-bulk-count` selector exists ✅
288
+ - `tasks-bulk-delete` selector exists ✅
289
+ - `tasks-bulk-clear` selector exists ✅
290
+
291
+ ### Notes
292
+ `bulkStatus` not tested - `enableChangeStatus` not enabled in EntityListWrapper.
293
+
294
+ ---
295
+
296
+ ## @test SEL_TASK_007: Delete Dialog Selectors
297
+
298
+ ### Metadata
299
+ - **Priority:** Medium
300
+ - **Type:** Selector Validation
301
+ - **Tags:** tasks, delete, dialog, confirmation
302
+ - **Grep:** `@ui-selectors` `@SEL_TASK_007`
303
+ - **Status:** Active (1 passing, 0 skipped)
304
+
305
+ ```gherkin:en
306
+ Scenario: Delete dialog has confirmation selectors
307
+
308
+ Given I am logged in as owner (Carlos Mendoza)
309
+ And I navigate to a task detail page
310
+ When I click the delete button
311
+ Then the delete dialog should be visible
312
+ And I should find the confirm delete button
313
+ And I should find the cancel button
314
+ When I click cancel
315
+ Then the dialog should close
316
+ ```
317
+
318
+ ```gherkin:es
319
+ Scenario: Dialogo de eliminacion tiene selectores de confirmacion
320
+
321
+ Given estoy logueado como owner (Carlos Mendoza)
322
+ And navego a una pagina de detalle de tarea
323
+ When hago click en el boton de eliminar
324
+ Then el dialogo de eliminacion deberia ser visible
325
+ And deberia encontrar el boton de confirmar eliminacion
326
+ And deberia encontrar el boton de cancelar
327
+ When hago click en cancelar
328
+ Then el dialogo deberia cerrarse
329
+ ```
330
+
331
+ ### Expected Results
332
+ - `tasks-delete-dialog` visible when delete clicked ✅
333
+ - `tasks-delete-confirm` selector exists ✅
334
+ - `tasks-delete-cancel` selector exists ✅
335
+
336
+ ---
337
+
338
+ ## Related Components
339
+
340
+ | Component | File | Selectors |
341
+ |-----------|------|-----------|
342
+ | EntityTable | `packages/core/src/components/entities/EntityTable.tsx` | table-container, search, add, pagination, rows |
343
+ | EntityForm | `packages/core/src/components/entities/EntityForm.tsx` | form, submit, fields |
344
+ | EntityDetail | `packages/core/src/components/entities/EntityDetail.tsx` | detail, header, actions |
345
+ | BulkActionsBar | `packages/core/src/components/entities/BulkActionsBar.tsx` | bulk-bar, count, delete, clear |
346
+ | DeleteDialog | `packages/core/src/components/entities/DeleteDialog.tsx` | dialog, confirm, cancel |
347
+
348
+ ## Related POMs
349
+
350
+ | POM | File | Usage |
351
+ |-----|------|-------|
352
+ | TasksPOM | `themes/default/tests/cypress/src/entities/TasksPOM.ts` | Entity-specific selectors and methods |
353
+ | DashboardEntityPOM | `themes/default/tests/cypress/src/core/DashboardEntityPOM.ts` | Base entity POM with dynamic selectors |
@@ -14,17 +14,18 @@
14
14
  * - Assert elements exist in DOM (no full CRUD operations)
15
15
  */
16
16
 
17
- import { TasksPOM } from '../../src/entities/TasksPOM'
18
- import { loginAsDefaultOwner } from '../../src/session-helpers'
17
+ import { TasksPOM } from '../../../src/entities/TasksPOM'
18
+ import { loginAsDefaultOwner } from '../../../src/session-helpers'
19
19
 
20
- describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () => {
20
+ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors', '@tasks'] }, () => {
21
21
  const tasks = TasksPOM.create()
22
22
 
23
23
  beforeEach(() => {
24
+ // Login as Carlos Mendoza (owner) - has proper team context via setupTeamContext()
24
25
  loginAsDefaultOwner()
25
26
  })
26
27
 
27
- describe('List Page Selectors', () => {
28
+ describe('SEL_TASK_001: List Page Selectors', { tags: '@SEL_TASK_001' }, () => {
28
29
  beforeEach(() => {
29
30
  tasks.visitList()
30
31
  tasks.waitForList()
@@ -78,7 +79,7 @@ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () =>
78
79
  })
79
80
  })
80
81
 
81
- describe('Filter Selectors', () => {
82
+ describe('SEL_TASK_002: Filter Selectors', { tags: '@SEL_TASK_002' }, () => {
82
83
  beforeEach(() => {
83
84
  tasks.visitList()
84
85
  tasks.waitForList()
@@ -98,7 +99,7 @@ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () =>
98
99
  })
99
100
  })
100
101
 
101
- describe('Row Dynamic Selectors', () => {
102
+ describe('SEL_TASK_003: Row Dynamic Selectors', { tags: '@SEL_TASK_003' }, () => {
102
103
  beforeEach(() => {
103
104
  tasks.visitList()
104
105
  tasks.waitForList()
@@ -122,7 +123,7 @@ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () =>
122
123
  })
123
124
  })
124
125
 
125
- describe('Create Page Selectors', () => {
126
+ describe('SEL_TASK_004: Create Page Selectors', { tags: '@SEL_TASK_004' }, () => {
126
127
  beforeEach(() => {
127
128
  tasks.visitCreate()
128
129
  tasks.waitForForm()
@@ -161,7 +162,7 @@ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () =>
161
162
  })
162
163
  })
163
164
 
164
- describe('Detail Page Selectors', () => {
165
+ describe('SEL_TASK_005: Detail Page Selectors', { tags: '@SEL_TASK_005' }, () => {
165
166
  it('should find detail page elements after navigating to a task', () => {
166
167
  // First get a task ID from the list
167
168
  tasks.visitList()
@@ -186,7 +187,7 @@ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () =>
186
187
  })
187
188
  })
188
189
 
189
- describe('Bulk Actions Selectors', () => {
190
+ describe('SEL_TASK_006: Bulk Actions Selectors', { tags: '@SEL_TASK_006' }, () => {
190
191
  beforeEach(() => {
191
192
  tasks.visitList()
192
193
  tasks.waitForList()
@@ -211,7 +212,7 @@ describe('Tasks Entity Selectors Validation', { tags: ['@ui-selectors'] }, () =>
211
212
  })
212
213
  })
213
214
 
214
- describe('Delete Dialog Selectors', () => {
215
+ describe('SEL_TASK_007: Delete Dialog Selectors', { tags: '@SEL_TASK_007' }, () => {
215
216
  it('should find delete dialog elements', () => {
216
217
  // Navigate to a task detail
217
218
  tasks.visitList()
@@ -16,7 +16,7 @@
16
16
  * NOTE: There IS an API at /api/v1/post-categories but no UI page.
17
17
  */
18
18
 
19
- import { CategoriesPOM } from '../../src/components/CategoriesPOM'
19
+ import { CategoriesPOM } from '../../../src/components/CategoriesPOM'
20
20
 
21
21
  describe('Taxonomies Selectors Validation', { tags: ['@ui-selectors'] }, () => {
22
22
  // ============================================