@nextsparkjs/theme-default 0.1.0-beta.20 → 0.1.0-beta.22
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/support/e2e.ts +89 -0
- package/tests/cypress.config.ts +165 -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,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
feature: Billing Extended Features
|
|
3
|
+
priority: medium
|
|
4
|
+
tags: [billing, payment, features, invoices, navigation]
|
|
5
|
+
grepTags: [uat, billing, extended]
|
|
6
|
+
coverage: 8
|
|
7
|
+
status: pending-permission-fix
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Billing Page - Extended Tests
|
|
11
|
+
|
|
12
|
+
> Extended coverage tests for the billing settings page including payment method section, plan features list, view pricing navigation, and invoice details. **Note:** Currently skipped due to permission check issues - billing page redirects to /dashboard/settings.
|
|
13
|
+
|
|
14
|
+
## Background
|
|
15
|
+
|
|
16
|
+
```gherkin:en
|
|
17
|
+
Given I am logged in as Owner (owner@nextspark.dev)
|
|
18
|
+
And I have navigated to the Billing settings page
|
|
19
|
+
And the billing page has loaded successfully
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```gherkin:es
|
|
23
|
+
Given estoy logueado como Owner (owner@nextspark.dev)
|
|
24
|
+
And he navegado a la pagina de configuracion de Billing
|
|
25
|
+
And la pagina de billing ha cargado exitosamente
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## @test BILL-UAT-040: Owner sees payment method section
|
|
31
|
+
|
|
32
|
+
### Metadata
|
|
33
|
+
- **Priority:** Normal
|
|
34
|
+
- **Type:** Regression
|
|
35
|
+
- **Tags:** payment, section, owner
|
|
36
|
+
- **Status:** SKIPPED (permission issue)
|
|
37
|
+
|
|
38
|
+
```gherkin:en
|
|
39
|
+
Scenario: Owner sees payment method section
|
|
40
|
+
|
|
41
|
+
Given I am logged in as an owner
|
|
42
|
+
When I visit the billing page
|
|
43
|
+
Then I should see payment method section
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```gherkin:es
|
|
47
|
+
Scenario: Owner ve la seccion de metodo de pago
|
|
48
|
+
|
|
49
|
+
Given estoy logueado como owner
|
|
50
|
+
When visito la pagina de billing
|
|
51
|
+
Then deberia ver la seccion de metodo de pago
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Expected Results
|
|
55
|
+
- Billing page is accessible to owner
|
|
56
|
+
- Payment method section is visible
|
|
57
|
+
- Section displays current payment info or add option
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## @test BILL-UAT-041: Add payment button is visible
|
|
62
|
+
|
|
63
|
+
### Metadata
|
|
64
|
+
- **Priority:** Normal
|
|
65
|
+
- **Type:** Regression
|
|
66
|
+
- **Tags:** payment, button, add
|
|
67
|
+
- **Status:** SKIPPED (permission issue)
|
|
68
|
+
|
|
69
|
+
```gherkin:en
|
|
70
|
+
Scenario: User can see add payment button
|
|
71
|
+
|
|
72
|
+
Given I am on the billing page
|
|
73
|
+
Then I should see the add payment button
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```gherkin:es
|
|
77
|
+
Scenario: Usuario puede ver boton agregar pago
|
|
78
|
+
|
|
79
|
+
Given estoy en la pagina de billing
|
|
80
|
+
Then deberia ver el boton de agregar pago
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Expected Results
|
|
84
|
+
- Add payment button exists
|
|
85
|
+
- Button is visible and clickable
|
|
86
|
+
- Button leads to payment method addition flow
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## @test BILL-UAT-042: Plan features list is visible
|
|
91
|
+
|
|
92
|
+
### Metadata
|
|
93
|
+
- **Priority:** Normal
|
|
94
|
+
- **Type:** Regression
|
|
95
|
+
- **Tags:** plan, features, list
|
|
96
|
+
|
|
97
|
+
- **Status:** SKIPPED (permission issue)
|
|
98
|
+
|
|
99
|
+
```gherkin:en
|
|
100
|
+
Scenario: User can see plan features
|
|
101
|
+
|
|
102
|
+
Given I am on the billing page
|
|
103
|
+
Then I should see the features included in my plan
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
```gherkin:es
|
|
107
|
+
Scenario: Usuario puede ver caracteristicas del plan
|
|
108
|
+
|
|
109
|
+
Given estoy en la pagina de billing
|
|
110
|
+
Then deberia ver las caracteristicas incluidas en mi plan
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Expected Results
|
|
114
|
+
- Plan features section is visible
|
|
115
|
+
- Features list displays current plan inclusions
|
|
116
|
+
- Features match the subscribed plan tier
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## @test BILL-UAT-043: View pricing button is visible
|
|
121
|
+
|
|
122
|
+
### Metadata
|
|
123
|
+
- **Priority:** Normal
|
|
124
|
+
- **Type:** Regression
|
|
125
|
+
- **Tags:** navigation, pricing, upgrade
|
|
126
|
+
- **Status:** SKIPPED (permission issue)
|
|
127
|
+
|
|
128
|
+
```gherkin:en
|
|
129
|
+
Scenario: User can see view pricing option
|
|
130
|
+
|
|
131
|
+
Given I am on the billing page
|
|
132
|
+
Then I should see a way to view pricing
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
```gherkin:es
|
|
136
|
+
Scenario: Usuario puede ver opcion de ver precios
|
|
137
|
+
|
|
138
|
+
Given estoy en la pagina de billing
|
|
139
|
+
Then deberia ver una forma de ver precios
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Expected Results
|
|
143
|
+
- Upgrade/pricing button exists
|
|
144
|
+
- Button is visible
|
|
145
|
+
- Navigation to pricing is available
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## @test BILL-UAT-044: Contact sales option available
|
|
150
|
+
|
|
151
|
+
### Metadata
|
|
152
|
+
- **Priority:** Low
|
|
153
|
+
- **Type:** Regression
|
|
154
|
+
- **Tags:** enterprise, sales, contact
|
|
155
|
+
- **Status:** SKIPPED (permission issue)
|
|
156
|
+
|
|
157
|
+
```gherkin:en
|
|
158
|
+
Scenario: Enterprise contact option exists
|
|
159
|
+
|
|
160
|
+
Given I am on the billing page
|
|
161
|
+
Then I should see a way to contact sales (or upgrade to Enterprise)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
```gherkin:es
|
|
165
|
+
Scenario: Opcion de contacto Enterprise existe
|
|
166
|
+
|
|
167
|
+
Given estoy en la pagina de billing
|
|
168
|
+
Then deberia ver una forma de contactar ventas (o actualizar a Enterprise)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Expected Results
|
|
172
|
+
- Enterprise/sales contact option exists
|
|
173
|
+
- Main billing section is visible
|
|
174
|
+
- Path to enterprise upgrade is available
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## @test BILL-UAT-045: Owner billing section visible
|
|
179
|
+
|
|
180
|
+
### Metadata
|
|
181
|
+
- **Priority:** Normal
|
|
182
|
+
- **Type:** Regression
|
|
183
|
+
- **Tags:** owner, section, visibility
|
|
184
|
+
- **Status:** SKIPPED (permission issue)
|
|
185
|
+
|
|
186
|
+
```gherkin:en
|
|
187
|
+
Scenario: Owner can see billing section
|
|
188
|
+
|
|
189
|
+
Given I am logged in as an owner
|
|
190
|
+
When I visit the billing page
|
|
191
|
+
Then I should see the billing section
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
```gherkin:es
|
|
195
|
+
Scenario: Owner puede ver seccion de billing
|
|
196
|
+
|
|
197
|
+
Given estoy logueado como owner
|
|
198
|
+
When visito la pagina de billing
|
|
199
|
+
Then deberia ver la seccion de billing
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Expected Results
|
|
203
|
+
- Billing page loads for owner role
|
|
204
|
+
- Billing section is visible
|
|
205
|
+
- All billing components render
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## @test BILL-UAT-046: Invoices section accessible
|
|
210
|
+
|
|
211
|
+
### Metadata
|
|
212
|
+
- **Priority:** Low
|
|
213
|
+
- **Type:** Regression
|
|
214
|
+
- **Tags:** invoices, section, table
|
|
215
|
+
- **Status:** SKIPPED (permission issue)
|
|
216
|
+
|
|
217
|
+
```gherkin:en
|
|
218
|
+
Scenario: User can see invoices section
|
|
219
|
+
|
|
220
|
+
Given I am on the billing page
|
|
221
|
+
Then I should see the invoices section
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```gherkin:es
|
|
225
|
+
Scenario: Usuario puede ver seccion de facturas
|
|
226
|
+
|
|
227
|
+
Given estoy en la pagina de billing
|
|
228
|
+
Then deberia ver la seccion de facturas
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Expected Results
|
|
232
|
+
- Invoices table exists
|
|
233
|
+
- Section is accessible
|
|
234
|
+
- Invoice history is displayed
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## @test BILL-UAT-047: Invoice status badge is visible
|
|
239
|
+
|
|
240
|
+
### Metadata
|
|
241
|
+
- **Priority:** Normal
|
|
242
|
+
- **Type:** Regression
|
|
243
|
+
- **Tags:** invoices, status, badge
|
|
244
|
+
- **Status:** SKIPPED (permission issue)
|
|
245
|
+
|
|
246
|
+
```gherkin:en
|
|
247
|
+
Scenario: Invoice shows status badge
|
|
248
|
+
|
|
249
|
+
Given I am on the billing page with invoices
|
|
250
|
+
Then each invoice should have a status badge
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
```gherkin:es
|
|
254
|
+
Scenario: Factura muestra badge de estado
|
|
255
|
+
|
|
256
|
+
Given estoy en la pagina de billing con facturas
|
|
257
|
+
Then cada factura deberia tener un badge de estado
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Expected Results
|
|
261
|
+
- Invoices table exists
|
|
262
|
+
- Each invoice row has status indicator
|
|
263
|
+
- Status badges are visible (paid, pending, etc.)
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Known Issues
|
|
268
|
+
|
|
269
|
+
**Permission Check Issue (2025-12-28):**
|
|
270
|
+
- Billing page redirects to /dashboard/settings for all users
|
|
271
|
+
- `usePermission('settings.billing')` hook may not resolve correctly
|
|
272
|
+
- TeamContext may not be properly hydrated during Cypress session restore
|
|
273
|
+
- Investigation needed in: usePermission, TeamContext, permissionRegistry
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/// <reference types="cypress" />
|
|
2
|
+
|
|
3
|
+
import * as allure from 'allure-cypress'
|
|
4
|
+
import { BillingPOM } from '../../../src/features/BillingPOM'
|
|
5
|
+
import { loginAsDefaultOwner } from '../../../src/session-helpers'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Billing Extended UAT Tests
|
|
9
|
+
*
|
|
10
|
+
* Extended coverage tests for the billing settings page:
|
|
11
|
+
* - Payment method section
|
|
12
|
+
* - Plan features list
|
|
13
|
+
* - View pricing navigation
|
|
14
|
+
* - Invoice details
|
|
15
|
+
*
|
|
16
|
+
* Session: 2025-12-20-subscriptions-system-v2
|
|
17
|
+
*
|
|
18
|
+
* KNOWN ISSUE (2025-12-28):
|
|
19
|
+
* These tests are skipped due to permission check issues.
|
|
20
|
+
* The billing page redirects to /dashboard/settings even for owners.
|
|
21
|
+
* Investigation needed:
|
|
22
|
+
* - usePermission hook in billing/page.tsx may not be correctly resolving
|
|
23
|
+
* - TeamContext may not be properly hydrated during Cypress session restore
|
|
24
|
+
* - Related: settings.billing permission is configured for owner role only
|
|
25
|
+
*
|
|
26
|
+
* TODO: Debug usePermission('settings.billing') flow in Cypress context
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
describe('Billing Page - Extended Tests', {
|
|
30
|
+
tags: ['@uat', '@billing', '@extended']
|
|
31
|
+
}, () => {
|
|
32
|
+
const billingPage = BillingPOM.create()
|
|
33
|
+
|
|
34
|
+
// ============================================================
|
|
35
|
+
// PAYMENT METHOD TESTS
|
|
36
|
+
// ============================================================
|
|
37
|
+
describe('Payment Method Section', () => {
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
allure.epic('UAT')
|
|
40
|
+
allure.feature('Billing')
|
|
41
|
+
allure.story('Payment Method')
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
it.skip('BILL-UAT-040: Owner sees payment method section (PENDING: permission issue)', () => {
|
|
45
|
+
allure.severity('normal')
|
|
46
|
+
allure.description(`
|
|
47
|
+
Scenario: Owner sees payment method section
|
|
48
|
+
Given I am logged in as an owner
|
|
49
|
+
When I visit the billing page
|
|
50
|
+
Then I should see payment method section
|
|
51
|
+
|
|
52
|
+
SKIPPED: Billing page redirects due to usePermission check failing
|
|
53
|
+
`)
|
|
54
|
+
|
|
55
|
+
loginAsDefaultOwner()
|
|
56
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
57
|
+
cy.url().should('include', '/dashboard')
|
|
58
|
+
billingPage.visitBilling()
|
|
59
|
+
billingPage.assertBillingPageVisible()
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it.skip('BILL-UAT-041: Add payment button is visible (PENDING: permission issue)', () => {
|
|
63
|
+
allure.severity('normal')
|
|
64
|
+
allure.description(`
|
|
65
|
+
Scenario: User can see add payment button
|
|
66
|
+
Given I am on the billing page
|
|
67
|
+
Then I should see the add payment button
|
|
68
|
+
`)
|
|
69
|
+
|
|
70
|
+
loginAsDefaultOwner()
|
|
71
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
72
|
+
cy.url().should('include', '/dashboard')
|
|
73
|
+
billingPage.visitBilling()
|
|
74
|
+
billingPage.getAddPaymentButton().should('exist')
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
it.skip('BILL-UAT-045: Owner billing section visible (PENDING: permission issue)', () => {
|
|
78
|
+
allure.severity('normal')
|
|
79
|
+
allure.description(`
|
|
80
|
+
Scenario: Owner can see billing section
|
|
81
|
+
Given I am logged in as an owner
|
|
82
|
+
When I visit the billing page
|
|
83
|
+
Then I should see the billing section
|
|
84
|
+
`)
|
|
85
|
+
|
|
86
|
+
loginAsDefaultOwner()
|
|
87
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
88
|
+
cy.url().should('include', '/dashboard')
|
|
89
|
+
billingPage.visitBilling()
|
|
90
|
+
billingPage.assertBillingPageVisible()
|
|
91
|
+
})
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
// ============================================================
|
|
95
|
+
// PLAN FEATURES TESTS
|
|
96
|
+
// ============================================================
|
|
97
|
+
describe('Plan Features Section', () => {
|
|
98
|
+
beforeEach(() => {
|
|
99
|
+
allure.epic('UAT')
|
|
100
|
+
allure.feature('Billing')
|
|
101
|
+
allure.story('Plan Features')
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
it.skip('BILL-UAT-042: Plan features list is visible (PENDING: permission issue)', () => {
|
|
105
|
+
allure.severity('normal')
|
|
106
|
+
allure.description(`
|
|
107
|
+
Scenario: User can see plan features
|
|
108
|
+
Given I am on the billing page
|
|
109
|
+
Then I should see the features included in my plan
|
|
110
|
+
`)
|
|
111
|
+
|
|
112
|
+
loginAsDefaultOwner()
|
|
113
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
114
|
+
cy.url().should('include', '/dashboard')
|
|
115
|
+
billingPage.visitBilling()
|
|
116
|
+
billingPage.getBillingMain().should('exist')
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
// ============================================================
|
|
121
|
+
// NAVIGATION TESTS
|
|
122
|
+
// ============================================================
|
|
123
|
+
describe('Billing Navigation', () => {
|
|
124
|
+
beforeEach(() => {
|
|
125
|
+
allure.epic('UAT')
|
|
126
|
+
allure.feature('Billing')
|
|
127
|
+
allure.story('Navigation')
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
it.skip('BILL-UAT-043: View pricing button is visible (PENDING: permission issue)', () => {
|
|
131
|
+
allure.severity('normal')
|
|
132
|
+
allure.description(`
|
|
133
|
+
Scenario: User can see view pricing option
|
|
134
|
+
Given I am on the billing page
|
|
135
|
+
Then I should see a way to view pricing
|
|
136
|
+
`)
|
|
137
|
+
|
|
138
|
+
loginAsDefaultOwner()
|
|
139
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
140
|
+
cy.url().should('include', '/dashboard')
|
|
141
|
+
billingPage.visitBilling()
|
|
142
|
+
billingPage.getUpgradeButton().should('exist')
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
it.skip('BILL-UAT-044: Contact sales option available (PENDING: permission issue)', () => {
|
|
146
|
+
allure.severity('low')
|
|
147
|
+
allure.description(`
|
|
148
|
+
Scenario: Enterprise contact option exists
|
|
149
|
+
Given I am on the billing page
|
|
150
|
+
Then I should see a way to contact sales (or upgrade to Enterprise)
|
|
151
|
+
`)
|
|
152
|
+
|
|
153
|
+
loginAsDefaultOwner()
|
|
154
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
155
|
+
cy.url().should('include', '/dashboard')
|
|
156
|
+
billingPage.visitBilling()
|
|
157
|
+
billingPage.getBillingMain().should('be.visible')
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
// ============================================================
|
|
162
|
+
// INVOICE DETAILS TESTS
|
|
163
|
+
// ============================================================
|
|
164
|
+
describe('Invoice Details', () => {
|
|
165
|
+
beforeEach(() => {
|
|
166
|
+
allure.epic('UAT')
|
|
167
|
+
allure.feature('Billing')
|
|
168
|
+
allure.story('Invoices')
|
|
169
|
+
})
|
|
170
|
+
|
|
171
|
+
it.skip('BILL-UAT-046: Invoices section accessible (PENDING: permission issue)', () => {
|
|
172
|
+
allure.severity('low')
|
|
173
|
+
allure.description(`
|
|
174
|
+
Scenario: User can see invoices section
|
|
175
|
+
Given I am on the billing page
|
|
176
|
+
Then I should see the invoices section
|
|
177
|
+
`)
|
|
178
|
+
|
|
179
|
+
loginAsDefaultOwner()
|
|
180
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
181
|
+
cy.url().should('include', '/dashboard')
|
|
182
|
+
billingPage.visitBilling()
|
|
183
|
+
billingPage.getInvoicesTable().should('exist')
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
it.skip('BILL-UAT-047: Invoice status badge is visible (PENDING: permission issue)', () => {
|
|
187
|
+
allure.severity('normal')
|
|
188
|
+
allure.description(`
|
|
189
|
+
Scenario: Invoice shows status badge
|
|
190
|
+
Given I am on the billing page with invoices
|
|
191
|
+
Then each invoice should have a status badge
|
|
192
|
+
`)
|
|
193
|
+
|
|
194
|
+
loginAsDefaultOwner()
|
|
195
|
+
cy.visit('/dashboard', { timeout: 60000, failOnStatusCode: false })
|
|
196
|
+
cy.url().should('include', '/dashboard')
|
|
197
|
+
billingPage.visitBilling()
|
|
198
|
+
billingPage.getInvoicesTable().should('exist')
|
|
199
|
+
})
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
// Document the skipped tests
|
|
203
|
+
it('documents billing tests pending due to permission check', () => {
|
|
204
|
+
cy.log('8 billing tests are pending due to usePermission hook issue')
|
|
205
|
+
cy.log('The billing page redirects to /dashboard/settings for all users')
|
|
206
|
+
cy.log('Investigation needed in: usePermission, TeamContext, permissionRegistry')
|
|
207
|
+
cy.wrap(true).should('be.true')
|
|
208
|
+
})
|
|
209
|
+
})
|