@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,185 @@
|
|
|
1
|
+
/// <reference types="cypress" />
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Superadmin - Team Roles Matrix Tests
|
|
5
|
+
*
|
|
6
|
+
* Tests the team roles permissions matrix in Superadmin.
|
|
7
|
+
* Validates that the consolidated permissions view shows:
|
|
8
|
+
* - All 5 team roles with correct hierarchy levels
|
|
9
|
+
* - Permissions grouped by category
|
|
10
|
+
* - Correct permission assignments per role
|
|
11
|
+
* - Dangerous permissions highlighted
|
|
12
|
+
*
|
|
13
|
+
* Requires: SuperAdmin access
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import * as allure from 'allure-cypress'
|
|
17
|
+
|
|
18
|
+
import { SuperadminTeamRolesPOM } from '../../../src/features/SuperadminTeamRolesPOM'
|
|
19
|
+
import { loginAsDefaultSuperadmin } from '../../../src/session-helpers'
|
|
20
|
+
|
|
21
|
+
describe('Superadmin - Team Roles Matrix', {
|
|
22
|
+
tags: ['@uat', '@feat-superadmin', '@security', '@regression']
|
|
23
|
+
}, () => {
|
|
24
|
+
const matrix = SuperadminTeamRolesPOM.create()
|
|
25
|
+
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
allure.epic('UAT')
|
|
28
|
+
allure.feature('Superadmin')
|
|
29
|
+
allure.story('Team Roles Matrix')
|
|
30
|
+
loginAsDefaultSuperadmin()
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
describe('Role Hierarchy Display', { tags: '@smoke' }, () => {
|
|
34
|
+
it('S7_MATRIX_001: Matrix displays all 5 team roles', { tags: '@smoke' }, () => {
|
|
35
|
+
allure.severity('critical')
|
|
36
|
+
|
|
37
|
+
matrix.visit()
|
|
38
|
+
|
|
39
|
+
// Verify all 5 roles are displayed
|
|
40
|
+
const expectedRoles = ['owner', 'admin', 'member', 'editor', 'viewer']
|
|
41
|
+
matrix.verifyRolesDisplayed(expectedRoles)
|
|
42
|
+
|
|
43
|
+
cy.log('✅ All 5 team roles are displayed')
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('S7_MATRIX_002: Roles show correct hierarchy levels', () => {
|
|
47
|
+
allure.severity('critical')
|
|
48
|
+
|
|
49
|
+
matrix.visit()
|
|
50
|
+
|
|
51
|
+
// Verify hierarchy levels
|
|
52
|
+
matrix.verifyRoleHierarchy('owner', 100)
|
|
53
|
+
matrix.verifyRoleHierarchy('admin', 50)
|
|
54
|
+
matrix.verifyRoleHierarchy('member', 10)
|
|
55
|
+
matrix.verifyRoleHierarchy('editor', 5)
|
|
56
|
+
matrix.verifyRoleHierarchy('viewer', 1)
|
|
57
|
+
|
|
58
|
+
cy.log('✅ All roles show correct hierarchy levels')
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
describe('Permissions by Category', () => {
|
|
63
|
+
it('S7_MATRIX_003: Permissions are grouped by category', () => {
|
|
64
|
+
allure.severity('normal')
|
|
65
|
+
|
|
66
|
+
matrix.visit()
|
|
67
|
+
|
|
68
|
+
// Verify category headers are present
|
|
69
|
+
// Categories come from:
|
|
70
|
+
// - Core system permissions: Team, Settings
|
|
71
|
+
// - Theme features: Page Builder, Blog, Media
|
|
72
|
+
// - Entity permissions: Customers, Tasks, Posts, Pages
|
|
73
|
+
const expectedCategories = [
|
|
74
|
+
'Team', // Core system (teams.invite, teams.remove_member, etc.)
|
|
75
|
+
'Settings', // Core system (settings.billing, settings.api_keys, etc.)
|
|
76
|
+
'Page Builder', // Theme feature
|
|
77
|
+
'Blog', // Theme feature
|
|
78
|
+
'Media', // Theme feature
|
|
79
|
+
'Customers', // Entity
|
|
80
|
+
'Pages', // Entity
|
|
81
|
+
'Posts', // Entity
|
|
82
|
+
'Tasks', // Entity
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
matrix.verifyCategoriesPresent(expectedCategories)
|
|
86
|
+
|
|
87
|
+
cy.log('✅ Permissions are grouped by category')
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
describe('Owner Permissions', { tags: '@smoke' }, () => {
|
|
92
|
+
it('S7_MATRIX_004: Owner has all permissions', { tags: '@smoke' }, () => {
|
|
93
|
+
allure.severity('critical')
|
|
94
|
+
|
|
95
|
+
matrix.visit()
|
|
96
|
+
|
|
97
|
+
// Owner should have checkmarks for all permissions
|
|
98
|
+
matrix.verifyOwnerHasAllPermissions()
|
|
99
|
+
|
|
100
|
+
cy.log('✅ Owner has all permissions')
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
describe('Editor Permissions', () => {
|
|
105
|
+
it('S7_MATRIX_005: Editor has only team view permissions', () => {
|
|
106
|
+
allure.severity('critical')
|
|
107
|
+
|
|
108
|
+
matrix.visit()
|
|
109
|
+
|
|
110
|
+
// Editor role is configured with only: ['team.view', 'team.members.view']
|
|
111
|
+
// This means Editor has just 2 permissions in the Team category
|
|
112
|
+
// Verify Editor does NOT have customer CRUD permissions (those require higher roles)
|
|
113
|
+
matrix.verifyEditorPermissions([
|
|
114
|
+
{ permission: 'teams.invite', hasAccess: false },
|
|
115
|
+
{ permission: 'teams.remove_member', hasAccess: false }
|
|
116
|
+
])
|
|
117
|
+
|
|
118
|
+
cy.log('✅ Editor has correct limited permissions (2 permissions only)')
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
it('S7_MATRIX_006: Editor cannot access dangerous operations', () => {
|
|
122
|
+
allure.severity('blocker')
|
|
123
|
+
|
|
124
|
+
matrix.visit()
|
|
125
|
+
|
|
126
|
+
// Editor should NOT have the dangerous teams.remove_member permission
|
|
127
|
+
matrix.verifyNoPermission('editor', 'teams.remove_member')
|
|
128
|
+
matrix.verifyNoPermission('editor', 'teams.invite')
|
|
129
|
+
|
|
130
|
+
cy.log('✅ Editor has no dangerous permissions')
|
|
131
|
+
})
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
describe('Dangerous Permissions', () => {
|
|
135
|
+
it('S7_MATRIX_007: Dangerous permissions are highlighted', () => {
|
|
136
|
+
allure.severity('normal')
|
|
137
|
+
|
|
138
|
+
matrix.visit()
|
|
139
|
+
|
|
140
|
+
// Check that teams.remove_member is marked as dangerous (visible in the UI)
|
|
141
|
+
// The dangerous badge appears next to the permission name
|
|
142
|
+
matrix.verifyDangerousPermission('teams.remove_member')
|
|
143
|
+
|
|
144
|
+
cy.log('✅ Dangerous permissions are highlighted correctly')
|
|
145
|
+
})
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
describe('Stats Cards', () => {
|
|
149
|
+
it('S7_MATRIX_008: Stats cards show correct counts', () => {
|
|
150
|
+
allure.severity('normal')
|
|
151
|
+
|
|
152
|
+
matrix.visit()
|
|
153
|
+
|
|
154
|
+
// Verify stats cards
|
|
155
|
+
matrix.verifyStatsCard('Available Roles', '5')
|
|
156
|
+
matrix.verifyStatsCard('Protected Role', 'owner')
|
|
157
|
+
|
|
158
|
+
cy.log('✅ Stats cards display correct information')
|
|
159
|
+
})
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
describe('Permission Counts per Role', () => {
|
|
163
|
+
it('S7_MATRIX_009: Role cards show permission counts', () => {
|
|
164
|
+
allure.severity('normal')
|
|
165
|
+
|
|
166
|
+
matrix.visit()
|
|
167
|
+
|
|
168
|
+
// Each role card should show permissions count
|
|
169
|
+
// Owner has most (all permissions)
|
|
170
|
+
matrix.getPermissionCount('owner').should('contain', 'permissions')
|
|
171
|
+
|
|
172
|
+
// Editor should have fewer
|
|
173
|
+
matrix.getPermissionCount('editor').should('contain', 'permissions')
|
|
174
|
+
|
|
175
|
+
// Viewer should have least
|
|
176
|
+
matrix.getPermissionCount('viewer').should('contain', 'permissions')
|
|
177
|
+
|
|
178
|
+
cy.log('✅ Permission counts are displayed for each role')
|
|
179
|
+
})
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
after(() => {
|
|
183
|
+
cy.log('✅ Team Roles Matrix tests completed')
|
|
184
|
+
})
|
|
185
|
+
})
|