@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,614 @@
|
|
|
1
|
+
# Public Post Display - UAT (Format: BDD/Gherkin - Bilingual)
|
|
2
|
+
|
|
3
|
+
> **Test File:** `posts-public.cy.ts`
|
|
4
|
+
> **Format:** Behavior-Driven Development (BDD) with Given/When/Then
|
|
5
|
+
> **Languages:** English / Spanish (side-by-side)
|
|
6
|
+
> **Total Tests:** 13 (10 active, 3 skipped)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Feature: Public Post Display
|
|
11
|
+
|
|
12
|
+
<table>
|
|
13
|
+
<tr>
|
|
14
|
+
<th width="50%">English</th>
|
|
15
|
+
<th width="50%">Español</th>
|
|
16
|
+
</tr>
|
|
17
|
+
<tr>
|
|
18
|
+
<td>
|
|
19
|
+
|
|
20
|
+
As a **public visitor**
|
|
21
|
+
I want to **view published blog posts**
|
|
22
|
+
So that **I can read the website content**
|
|
23
|
+
|
|
24
|
+
**Key Functionality:**
|
|
25
|
+
- Published posts render at /blog/[slug]
|
|
26
|
+
- Post header, excerpt, and blocks display
|
|
27
|
+
- Categories show with colors
|
|
28
|
+
- Unpublished posts return 404
|
|
29
|
+
|
|
30
|
+
</td>
|
|
31
|
+
<td>
|
|
32
|
+
|
|
33
|
+
Como **visitante publico**
|
|
34
|
+
Quiero **ver posts de blog publicados**
|
|
35
|
+
Para **leer el contenido del sitio web**
|
|
36
|
+
|
|
37
|
+
**Funcionalidad Clave:**
|
|
38
|
+
- Posts publicados renderizan en /blog/[slug]
|
|
39
|
+
- Encabezado, extracto y bloques del post se muestran
|
|
40
|
+
- Categorias se muestran con colores
|
|
41
|
+
- Posts no publicados retornan 404
|
|
42
|
+
|
|
43
|
+
</td>
|
|
44
|
+
</tr>
|
|
45
|
+
</table>
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Post Rendering
|
|
50
|
+
|
|
51
|
+
### POST-PUB-001: Should render a published post `@smoke`
|
|
52
|
+
|
|
53
|
+
<table>
|
|
54
|
+
<tr>
|
|
55
|
+
<th width="50%">English</th>
|
|
56
|
+
<th width="50%">Español</th>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td>
|
|
60
|
+
|
|
61
|
+
```gherkin
|
|
62
|
+
Scenario: Published post renders successfully
|
|
63
|
+
|
|
64
|
+
Given there is a published post "welcome-to-our-blog"
|
|
65
|
+
When I visit the post at /blog/welcome-to-our-blog
|
|
66
|
+
Then the post should load successfully
|
|
67
|
+
And the post container should be visible
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
</td>
|
|
71
|
+
<td>
|
|
72
|
+
|
|
73
|
+
```gherkin
|
|
74
|
+
Scenario: Post publicado renderiza exitosamente
|
|
75
|
+
|
|
76
|
+
Given existe un post publicado "welcome-to-our-blog"
|
|
77
|
+
When visito el post en /blog/welcome-to-our-blog
|
|
78
|
+
Then el post deberia cargar exitosamente
|
|
79
|
+
And el contenedor del post deberia estar visible
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
</table>
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### POST-PUB-002: Should display post header
|
|
89
|
+
|
|
90
|
+
<table>
|
|
91
|
+
<tr>
|
|
92
|
+
<th width="50%">English</th>
|
|
93
|
+
<th width="50%">Español</th>
|
|
94
|
+
</tr>
|
|
95
|
+
<tr>
|
|
96
|
+
<td>
|
|
97
|
+
|
|
98
|
+
```gherkin
|
|
99
|
+
Scenario: Post header displays correctly
|
|
100
|
+
|
|
101
|
+
Given I am on a published post page
|
|
102
|
+
When the post loads completely
|
|
103
|
+
Then the post header should be visible
|
|
104
|
+
And the title should contain "Welcome"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
</td>
|
|
108
|
+
<td>
|
|
109
|
+
|
|
110
|
+
```gherkin
|
|
111
|
+
Scenario: Encabezado del post se muestra correctamente
|
|
112
|
+
|
|
113
|
+
Given estoy en una pagina de post publicado
|
|
114
|
+
When el post carga completamente
|
|
115
|
+
Then el encabezado del post deberia estar visible
|
|
116
|
+
And el titulo deberia contener "Welcome"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
</td>
|
|
120
|
+
</tr>
|
|
121
|
+
</table>
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### POST-PUB-003: Should display post excerpt
|
|
126
|
+
|
|
127
|
+
<table>
|
|
128
|
+
<tr>
|
|
129
|
+
<th width="50%">English</th>
|
|
130
|
+
<th width="50%">Español</th>
|
|
131
|
+
</tr>
|
|
132
|
+
<tr>
|
|
133
|
+
<td>
|
|
134
|
+
|
|
135
|
+
```gherkin
|
|
136
|
+
Scenario: Post excerpt is visible
|
|
137
|
+
|
|
138
|
+
Given I am on a published post page
|
|
139
|
+
When the post loads completely
|
|
140
|
+
Then the post excerpt should be visible
|
|
141
|
+
And the excerpt should provide a summary
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
</td>
|
|
145
|
+
<td>
|
|
146
|
+
|
|
147
|
+
```gherkin
|
|
148
|
+
Scenario: Extracto del post es visible
|
|
149
|
+
|
|
150
|
+
Given estoy en una pagina de post publicado
|
|
151
|
+
When el post carga completamente
|
|
152
|
+
Then el extracto del post deberia estar visible
|
|
153
|
+
And el extracto deberia proveer un resumen
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
</td>
|
|
157
|
+
</tr>
|
|
158
|
+
</table>
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Block Rendering
|
|
163
|
+
|
|
164
|
+
### POST-PUB-004: Should render post blocks
|
|
165
|
+
|
|
166
|
+
<table>
|
|
167
|
+
<tr>
|
|
168
|
+
<th width="50%">English</th>
|
|
169
|
+
<th width="50%">Español</th>
|
|
170
|
+
</tr>
|
|
171
|
+
<tr>
|
|
172
|
+
<td>
|
|
173
|
+
|
|
174
|
+
```gherkin
|
|
175
|
+
Scenario: Post blocks render correctly
|
|
176
|
+
|
|
177
|
+
Given I am on a published post page
|
|
178
|
+
When the post loads completely
|
|
179
|
+
Then the post content area should be visible
|
|
180
|
+
And headings (h1, h2, h3) should exist within content
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
</td>
|
|
184
|
+
<td>
|
|
185
|
+
|
|
186
|
+
```gherkin
|
|
187
|
+
Scenario: Bloques del post renderizan correctamente
|
|
188
|
+
|
|
189
|
+
Given estoy en una pagina de post publicado
|
|
190
|
+
When el post carga completamente
|
|
191
|
+
Then el area de contenido del post deberia estar visible
|
|
192
|
+
And encabezados (h1, h2, h3) deberian existir dentro del contenido
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
</td>
|
|
196
|
+
</tr>
|
|
197
|
+
</table>
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
### POST-PUB-005: Should render hero block correctly
|
|
202
|
+
|
|
203
|
+
<table>
|
|
204
|
+
<tr>
|
|
205
|
+
<th width="50%">English</th>
|
|
206
|
+
<th width="50%">Español</th>
|
|
207
|
+
</tr>
|
|
208
|
+
<tr>
|
|
209
|
+
<td>
|
|
210
|
+
|
|
211
|
+
```gherkin
|
|
212
|
+
Scenario: Hero block renders with content
|
|
213
|
+
|
|
214
|
+
Given I am on a published post with a hero block
|
|
215
|
+
When the post loads completely
|
|
216
|
+
Then the content area should contain "Welcome" text
|
|
217
|
+
And the hero content should be properly formatted
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
</td>
|
|
221
|
+
<td>
|
|
222
|
+
|
|
223
|
+
```gherkin
|
|
224
|
+
Scenario: Bloque hero renderiza con contenido
|
|
225
|
+
|
|
226
|
+
Given estoy en un post publicado con bloque hero
|
|
227
|
+
When el post carga completamente
|
|
228
|
+
Then el area de contenido deberia contener texto "Welcome"
|
|
229
|
+
And el contenido hero deberia estar correctamente formateado
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
</td>
|
|
233
|
+
</tr>
|
|
234
|
+
</table>
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Category Display
|
|
239
|
+
|
|
240
|
+
### POST-PUB-006: Should display category badges
|
|
241
|
+
|
|
242
|
+
<table>
|
|
243
|
+
<tr>
|
|
244
|
+
<th width="50%">English</th>
|
|
245
|
+
<th width="50%">Español</th>
|
|
246
|
+
</tr>
|
|
247
|
+
<tr>
|
|
248
|
+
<td>
|
|
249
|
+
|
|
250
|
+
```gherkin
|
|
251
|
+
Scenario: Category badges are displayed
|
|
252
|
+
|
|
253
|
+
Given I am on a published post with categories
|
|
254
|
+
When the post loads completely
|
|
255
|
+
Then the "News" category badge should be visible
|
|
256
|
+
And category badges should be clickable or labeled
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
</td>
|
|
260
|
+
<td>
|
|
261
|
+
|
|
262
|
+
```gherkin
|
|
263
|
+
Scenario: Insignias de categoria se muestran
|
|
264
|
+
|
|
265
|
+
Given estoy en un post publicado con categorias
|
|
266
|
+
When el post carga completamente
|
|
267
|
+
Then la insignia de categoria "News" deberia estar visible
|
|
268
|
+
And las insignias de categoria deberian ser clickeables o etiquetadas
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
</td>
|
|
272
|
+
</tr>
|
|
273
|
+
</table>
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
### POST-PUB-007: Should display category badges with colors
|
|
278
|
+
|
|
279
|
+
<table>
|
|
280
|
+
<tr>
|
|
281
|
+
<th width="50%">English</th>
|
|
282
|
+
<th width="50%">Español</th>
|
|
283
|
+
</tr>
|
|
284
|
+
<tr>
|
|
285
|
+
<td>
|
|
286
|
+
|
|
287
|
+
```gherkin
|
|
288
|
+
Scenario: Category badges have color styling
|
|
289
|
+
|
|
290
|
+
Given I am on a published post with categories
|
|
291
|
+
When the post loads completely
|
|
292
|
+
Then category badges should have color styling
|
|
293
|
+
And badges should have background or text color defined
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
</td>
|
|
297
|
+
<td>
|
|
298
|
+
|
|
299
|
+
```gherkin
|
|
300
|
+
Scenario: Insignias de categoria tienen estilo de color
|
|
301
|
+
|
|
302
|
+
Given estoy en un post publicado con categorias
|
|
303
|
+
When el post carga completamente
|
|
304
|
+
Then las insignias de categoria deberian tener estilo de color
|
|
305
|
+
And las insignias deberian tener color de fondo o texto definido
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
</td>
|
|
309
|
+
</tr>
|
|
310
|
+
</table>
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## SEO Meta Tags `@in-development`
|
|
315
|
+
|
|
316
|
+
### POST-PUB-008: Should have correct page title ⏸️ SKIPPED
|
|
317
|
+
|
|
318
|
+
<table>
|
|
319
|
+
<tr>
|
|
320
|
+
<th width="50%">English</th>
|
|
321
|
+
<th width="50%">Español</th>
|
|
322
|
+
</tr>
|
|
323
|
+
<tr>
|
|
324
|
+
<td>
|
|
325
|
+
|
|
326
|
+
```gherkin
|
|
327
|
+
@in-development
|
|
328
|
+
Scenario: Page title includes post title
|
|
329
|
+
|
|
330
|
+
Given I am on a published post page
|
|
331
|
+
When the post loads completely
|
|
332
|
+
Then the page title should include "Welcome"
|
|
333
|
+
And the title tag should be SEO-friendly
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Status:** Skipped - SEO meta tags implementation pending.
|
|
337
|
+
|
|
338
|
+
</td>
|
|
339
|
+
<td>
|
|
340
|
+
|
|
341
|
+
```gherkin
|
|
342
|
+
@in-development
|
|
343
|
+
Scenario: Titulo de pagina incluye titulo del post
|
|
344
|
+
|
|
345
|
+
Given estoy en una pagina de post publicado
|
|
346
|
+
When el post carga completamente
|
|
347
|
+
Then el titulo de la pagina deberia incluir "Welcome"
|
|
348
|
+
And la etiqueta title deberia ser SEO-friendly
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Estado:** Omitido - Implementacion de meta tags SEO pendiente.
|
|
352
|
+
|
|
353
|
+
</td>
|
|
354
|
+
</tr>
|
|
355
|
+
</table>
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### POST-PUB-009: Should have meta description ⏸️ SKIPPED
|
|
360
|
+
|
|
361
|
+
<table>
|
|
362
|
+
<tr>
|
|
363
|
+
<th width="50%">English</th>
|
|
364
|
+
<th width="50%">Español</th>
|
|
365
|
+
</tr>
|
|
366
|
+
<tr>
|
|
367
|
+
<td>
|
|
368
|
+
|
|
369
|
+
```gherkin
|
|
370
|
+
@in-development
|
|
371
|
+
Scenario: Meta description exists
|
|
372
|
+
|
|
373
|
+
Given I am on a published post page
|
|
374
|
+
When the post loads completely
|
|
375
|
+
Then a meta description tag should exist in head
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**Status:** Skipped - SEO meta tags implementation pending.
|
|
379
|
+
|
|
380
|
+
</td>
|
|
381
|
+
<td>
|
|
382
|
+
|
|
383
|
+
```gherkin
|
|
384
|
+
@in-development
|
|
385
|
+
Scenario: Meta descripcion existe
|
|
386
|
+
|
|
387
|
+
Given estoy en una pagina de post publicado
|
|
388
|
+
When el post carga completamente
|
|
389
|
+
Then una etiqueta meta description deberia existir en head
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Estado:** Omitido - Implementacion de meta tags SEO pendiente.
|
|
393
|
+
|
|
394
|
+
</td>
|
|
395
|
+
</tr>
|
|
396
|
+
</table>
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
### POST-PUB-010: Should have OG tags for social sharing ⏸️ SKIPPED
|
|
401
|
+
|
|
402
|
+
<table>
|
|
403
|
+
<tr>
|
|
404
|
+
<th width="50%">English</th>
|
|
405
|
+
<th width="50%">Español</th>
|
|
406
|
+
</tr>
|
|
407
|
+
<tr>
|
|
408
|
+
<td>
|
|
409
|
+
|
|
410
|
+
```gherkin
|
|
411
|
+
@in-development
|
|
412
|
+
Scenario: Open Graph tags exist
|
|
413
|
+
|
|
414
|
+
Given I am on a published post page
|
|
415
|
+
When the post loads completely
|
|
416
|
+
Then Open Graph meta tags should exist
|
|
417
|
+
And there should be at least 1 og: property
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Status:** Skipped - SEO meta tags implementation pending.
|
|
421
|
+
|
|
422
|
+
</td>
|
|
423
|
+
<td>
|
|
424
|
+
|
|
425
|
+
```gherkin
|
|
426
|
+
@in-development
|
|
427
|
+
Scenario: Etiquetas Open Graph existen
|
|
428
|
+
|
|
429
|
+
Given estoy en una pagina de post publicado
|
|
430
|
+
When el post carga completamente
|
|
431
|
+
Then las etiquetas meta Open Graph deberian existir
|
|
432
|
+
And deberia haber al menos 1 propiedad og:
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
**Estado:** Omitido - Implementacion de meta tags SEO pendiente.
|
|
436
|
+
|
|
437
|
+
</td>
|
|
438
|
+
</tr>
|
|
439
|
+
</table>
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## Unpublished Posts
|
|
444
|
+
|
|
445
|
+
### POST-PUB-011: Should not display unpublished posts
|
|
446
|
+
|
|
447
|
+
<table>
|
|
448
|
+
<tr>
|
|
449
|
+
<th width="50%">English</th>
|
|
450
|
+
<th width="50%">Español</th>
|
|
451
|
+
</tr>
|
|
452
|
+
<tr>
|
|
453
|
+
<td>
|
|
454
|
+
|
|
455
|
+
```gherkin
|
|
456
|
+
Scenario: Unpublished posts are not accessible
|
|
457
|
+
|
|
458
|
+
Given there is a draft post "typescript-best-practices"
|
|
459
|
+
When I try to visit the post at /blog/typescript-best-practices
|
|
460
|
+
Then the page should show a 404 error
|
|
461
|
+
Or the page should contain "not found" text
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
**Security Verification:**
|
|
465
|
+
Draft posts must never be accessible publicly.
|
|
466
|
+
|
|
467
|
+
</td>
|
|
468
|
+
<td>
|
|
469
|
+
|
|
470
|
+
```gherkin
|
|
471
|
+
Scenario: Posts no publicados no son accesibles
|
|
472
|
+
|
|
473
|
+
Given existe un post borrador "typescript-best-practices"
|
|
474
|
+
When intento visitar el post en /blog/typescript-best-practices
|
|
475
|
+
Then la pagina deberia mostrar un error 404
|
|
476
|
+
Or la pagina deberia contener texto "not found"
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Verificacion de Seguridad:**
|
|
480
|
+
Los posts borrador nunca deben ser accesibles publicamente.
|
|
481
|
+
|
|
482
|
+
</td>
|
|
483
|
+
</tr>
|
|
484
|
+
</table>
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## 404 Not Found
|
|
489
|
+
|
|
490
|
+
### POST-PUB-012: Should show 404 for non-existent post
|
|
491
|
+
|
|
492
|
+
<table>
|
|
493
|
+
<tr>
|
|
494
|
+
<th width="50%">English</th>
|
|
495
|
+
<th width="50%">Español</th>
|
|
496
|
+
</tr>
|
|
497
|
+
<tr>
|
|
498
|
+
<td>
|
|
499
|
+
|
|
500
|
+
```gherkin
|
|
501
|
+
Scenario: Non-existent post shows 404
|
|
502
|
+
|
|
503
|
+
Given there is no post with slug "non-existent-post-slug-12345"
|
|
504
|
+
When I try to visit /blog/non-existent-post-slug-12345
|
|
505
|
+
Then the page should show a 404 error
|
|
506
|
+
Or the page should contain "not found" text
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
</td>
|
|
510
|
+
<td>
|
|
511
|
+
|
|
512
|
+
```gherkin
|
|
513
|
+
Scenario: Post no existente muestra 404
|
|
514
|
+
|
|
515
|
+
Given no existe un post con slug "non-existent-post-slug-12345"
|
|
516
|
+
When intento visitar /blog/non-existent-post-slug-12345
|
|
517
|
+
Then la pagina deberia mostrar un error 404
|
|
518
|
+
Or la pagina deberia contener texto "not found"
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
</td>
|
|
522
|
+
</tr>
|
|
523
|
+
</table>
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## Featured Image
|
|
528
|
+
|
|
529
|
+
### POST-PUB-013: Should display featured image when present
|
|
530
|
+
|
|
531
|
+
<table>
|
|
532
|
+
<tr>
|
|
533
|
+
<th width="50%">English</th>
|
|
534
|
+
<th width="50%">Español</th>
|
|
535
|
+
</tr>
|
|
536
|
+
<tr>
|
|
537
|
+
<td>
|
|
538
|
+
|
|
539
|
+
```gherkin
|
|
540
|
+
Scenario: Featured image displays when available
|
|
541
|
+
|
|
542
|
+
Given I am on a published post
|
|
543
|
+
When the post loads completely
|
|
544
|
+
And the post has a featured image
|
|
545
|
+
Then the featured image should be visible in the header
|
|
546
|
+
|
|
547
|
+
But if the post has no featured image
|
|
548
|
+
Then it should still render without error
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
**Note:** Featured image is an optional field.
|
|
552
|
+
|
|
553
|
+
</td>
|
|
554
|
+
<td>
|
|
555
|
+
|
|
556
|
+
```gherkin
|
|
557
|
+
Scenario: Imagen destacada se muestra cuando esta disponible
|
|
558
|
+
|
|
559
|
+
Given estoy en un post publicado
|
|
560
|
+
When el post carga completamente
|
|
561
|
+
And el post tiene una imagen destacada
|
|
562
|
+
Then la imagen destacada deberia estar visible en el encabezado
|
|
563
|
+
|
|
564
|
+
But si el post no tiene imagen destacada
|
|
565
|
+
Then deberia renderizar sin error igualmente
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
**Nota:** La imagen destacada es un campo opcional.
|
|
569
|
+
|
|
570
|
+
</td>
|
|
571
|
+
</tr>
|
|
572
|
+
</table>
|
|
573
|
+
|
|
574
|
+
---
|
|
575
|
+
|
|
576
|
+
## UI Elements / Elementos UI
|
|
577
|
+
|
|
578
|
+
### Post Structure
|
|
579
|
+
|
|
580
|
+
| Element | Selector | Description / Descripción |
|
|
581
|
+
|---------|----------|---------------------------|
|
|
582
|
+
| Post Container | `[data-cy="public-post"]` | Main post container |
|
|
583
|
+
| Post Header | `[data-cy="post-header"]` | Header section |
|
|
584
|
+
| Post Title | `[data-cy="post-title"]` | Post title heading |
|
|
585
|
+
| Post Excerpt | `[data-cy="post-excerpt"]` | Post excerpt/summary |
|
|
586
|
+
| Post Content | `[data-cy="post-content"]` | Main content area |
|
|
587
|
+
| Featured Image | `[data-cy="post-featured-image"]` | Featured image |
|
|
588
|
+
|
|
589
|
+
### Category Elements
|
|
590
|
+
|
|
591
|
+
| Element | Selector | Description / Descripción |
|
|
592
|
+
|---------|----------|---------------------------|
|
|
593
|
+
| Categories Display | `[data-cy="post-categories"]` | Categories container |
|
|
594
|
+
| Category Badge | `[data-cy="category-badge-*"]` | Individual category badge |
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
## Summary / Resumen
|
|
599
|
+
|
|
600
|
+
| Test ID | Block | Description / Descripción | Status | Tags |
|
|
601
|
+
|---------|-------|---------------------------|--------|------|
|
|
602
|
+
| POST-PUB-001 | Post Rendering | Render published post | Active | `@smoke` |
|
|
603
|
+
| POST-PUB-002 | Post Rendering | Display header | Active | |
|
|
604
|
+
| POST-PUB-003 | Post Rendering | Display excerpt | Active | |
|
|
605
|
+
| POST-PUB-004 | Block Rendering | Render blocks | Active | |
|
|
606
|
+
| POST-PUB-005 | Block Rendering | Render hero | Active | |
|
|
607
|
+
| POST-PUB-006 | Categories | Display badges | Active | |
|
|
608
|
+
| POST-PUB-007 | Categories | Badges with colors | Active | |
|
|
609
|
+
| POST-PUB-008 | SEO | Page title | ⏸️ Skip | `@in-development` |
|
|
610
|
+
| POST-PUB-009 | SEO | Meta description | ⏸️ Skip | `@in-development` |
|
|
611
|
+
| POST-PUB-010 | SEO | OG tags | ⏸️ Skip | `@in-development` |
|
|
612
|
+
| POST-PUB-011 | Access Control | Not display unpublished | Active | |
|
|
613
|
+
| POST-PUB-012 | Error Handling | 404 for non-existent | Active | |
|
|
614
|
+
| POST-PUB-013 | Media | Featured image | Active | |
|