@nextsparkjs/theme-default 0.1.0-beta.17 → 0.1.0-beta.171
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/api/ai/chat/stream/route.ts +4 -1
- package/api/ai/orchestrator/route.ts +10 -3
- package/api/ai/single-agent/route.ts +10 -3
- package/api/ai/usage/route.ts +4 -1
- package/blocks/benefits/component.tsx +4 -4
- package/blocks/cta-section/component.tsx +4 -4
- package/blocks/faq-accordion/component.tsx +2 -2
- package/blocks/features-grid/component.tsx +5 -5
- package/blocks/hero/component.tsx +2 -2
- package/blocks/hero/fields.ts +1 -1
- package/blocks/hero-with-form/component.tsx +7 -7
- package/blocks/hero-with-form/fields.ts +1 -1
- package/blocks/jumbotron/component.tsx +7 -7
- package/blocks/jumbotron/fields.ts +1 -1
- package/blocks/logo-cloud/component.tsx +6 -6
- package/blocks/logo-cloud/fields.ts +1 -1
- package/blocks/post-content/component.tsx +2 -2
- package/blocks/pricing-table/component.tsx +5 -5
- package/blocks/split-content/component.tsx +5 -5
- package/blocks/split-content/fields.ts +1 -1
- package/blocks/stats-counter/component.tsx +9 -9
- package/blocks/testimonials/component.tsx +4 -4
- package/blocks/testimonials/fields.ts +1 -1
- package/blocks/text-content/component.tsx +12 -10
- package/blocks/timeline/component.tsx +12 -12
- package/blocks/video-hero/component.tsx +7 -7
- package/blocks/video-hero/fields.ts +1 -1
- package/components/ai-chat/ChatPanel.tsx +7 -7
- package/components/ai-chat/Message.tsx +2 -2
- package/components/ai-chat/MessageInput.tsx +3 -3
- package/components/ai-chat/MessageList.tsx +3 -3
- package/components/ai-chat/TypingIndicator.tsx +2 -2
- package/config/app.config.ts +90 -62
- package/config/billing.config.ts +5 -10
- package/config/dashboard.config.ts +14 -0
- package/config/features.config.ts +10 -0
- package/config/permissions.config.ts +22 -23
- package/docs/{01-overview → public/01-overview}/01-introduction.md +5 -0
- package/docs/{01-overview → public/01-overview}/02-customization.md +5 -0
- package/docs/{02-features → public/02-features}/03-tasks-entity.md +5 -0
- package/docs/{03-ai → public/03-ai}/01-overview.md +5 -0
- package/docs/{03-ai → public/03-ai}/02-customization.md +5 -0
- package/docs/superadmin/01-setup/01-configuration.md +79 -0
- package/docs/superadmin/01-setup/02-deployment.md +82 -0
- package/docs/superadmin/02-management/01-users.md +83 -0
- package/docs/superadmin/03-integrations/01-langchain.md +139 -0
- package/emails/verify-email.ts +33 -0
- package/entities/customers/api/docs.md +107 -0
- package/entities/customers/api/presets.ts +80 -0
- package/entities/pages/api/docs.md +114 -0
- package/entities/pages/api/presets.ts +72 -0
- package/entities/posts/api/docs.md +120 -0
- package/entities/posts/api/presets.ts +74 -0
- package/entities/tasks/api/docs.md +126 -0
- package/entities/tasks/api/presets.ts +84 -0
- package/lib/selectors.ts +7 -4
- package/messages/de/admin.json +45 -0
- package/messages/en/admin.json +56 -0
- package/messages/en/navigation.json +2 -1
- package/messages/es/admin.json +56 -0
- package/messages/es/navigation.json +2 -1
- package/messages/fr/admin.json +45 -0
- package/messages/it/admin.json +45 -0
- package/messages/pt/admin.json +45 -0
- package/migrations/089_add_editor_team_role.sql +15 -23
- package/migrations/090_demo_users_teams.sql +11 -11
- package/migrations/091_greek_teams_billing.sql +15 -15
- package/migrations/093_pages_sample_data.sql +7 -7
- package/migrations/098_patterns_sample_data.sql +234 -0
- package/nextsparkjs-theme-default-0.1.0-beta.137.tgz +0 -0
- package/package.json +4 -3
- package/styles/globals.css +42 -0
- package/templates/(public)/page.tsx +1 -1
- package/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
- package/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
- package/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
- package/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
- package/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
- package/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
- package/tests/cypress/e2e/_utils/docs/README.md +215 -0
- package/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
- package/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
- package/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
- package/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
- package/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +615 -0
- package/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +783 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
- package/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
- package/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
- package/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
- package/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
- package/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
- package/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
- package/tests/cypress/e2e/_utils/selectors/public.cy.ts +112 -0
- package/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
- package/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
- package/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
- package/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
- package/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
- package/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
- package/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
- package/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
- package/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
- package/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
- package/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
- package/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
- package/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
- package/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
- package/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
- package/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
- package/tests/cypress/e2e/_utils/selectors/taxonomies.cy.ts +126 -0
- package/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
- package/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
- package/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
- package/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
- package/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
- package/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +294 -0
- package/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
- package/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +149 -0
- package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
- package/tests/cypress/e2e/_utils/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 +119 -0
- package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
- package/tests/cypress/e2e/api/_core/billing/BillingAPIController.js +319 -0
- package/tests/cypress/e2e/api/_core/billing/check-action.cy.ts +326 -0
- package/tests/cypress/e2e/api/_core/billing/checkout.cy.ts +358 -0
- package/tests/cypress/e2e/api/_core/billing/lifecycle.cy.ts +423 -0
- package/tests/cypress/e2e/api/_core/billing/plans/README.md +345 -0
- package/tests/cypress/e2e/api/_core/billing/plans/business.cy.ts +412 -0
- package/tests/cypress/e2e/api/_core/billing/plans/downgrade.cy.ts +510 -0
- package/tests/cypress/e2e/api/_core/billing/plans/fixtures/billing-plans.json +163 -0
- package/tests/cypress/e2e/api/_core/billing/plans/free.cy.ts +500 -0
- package/tests/cypress/e2e/api/_core/billing/plans/pro.cy.ts +497 -0
- package/tests/cypress/e2e/api/_core/billing/plans/starter.cy.ts +342 -0
- package/tests/cypress/e2e/api/_core/billing/portal.cy.ts +313 -0
- package/tests/cypress/e2e/api/_core/devtools/registries.bdd.md +300 -0
- package/tests/cypress/e2e/api/_core/devtools/registries.cy.ts +368 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.bdd.md +375 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.cy.ts +346 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.bdd.md +451 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.cy.ts +447 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.bdd.md +649 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.cy.ts +333 -0
- package/tests/cypress/e2e/api/_core/security/security-headers.cy.ts +601 -0
- package/tests/cypress/e2e/api/_core/settings/api-keys.crud.cy.ts +923 -0
- package/tests/cypress/e2e/api/_core/teams/teams-security.cy.ts +415 -0
- package/tests/cypress/e2e/api/_core/users/users-crud.cy.ts +469 -0
- package/tests/cypress/e2e/api/_core/users/users-metas.cy.ts +913 -0
- package/tests/cypress/e2e/api/_core/users/users-security.cy.ts +375 -0
- package/tests/cypress/e2e/api/entities/customers/customers-crud.cy.ts +648 -0
- package/tests/cypress/e2e/api/entities/customers/customers-metas.cy.ts +839 -0
- package/tests/cypress/e2e/api/entities/media/media-crud.cy.ts +600 -0
- package/tests/cypress/e2e/api/entities/media/media-role-permissions.cy.ts +617 -0
- package/tests/cypress/e2e/api/entities/media/media-team-isolation.cy.ts +464 -0
- package/tests/cypress/e2e/api/entities/pages/blocks-scope.cy.ts +396 -0
- package/tests/cypress/e2e/api/entities/pages/pages-crud.cy.ts +425 -0
- package/tests/cypress/e2e/api/entities/pages/pages-status.cy.ts +335 -0
- package/tests/cypress/e2e/api/entities/posts/post-categories-crud.cy.ts +610 -0
- package/tests/cypress/e2e/api/entities/posts/posts-crud.cy.ts +709 -0
- package/tests/cypress/e2e/api/entities/posts/posts-status.cy.ts +396 -0
- package/tests/cypress/e2e/api/entities/tasks/tasks-crud.cy.ts +602 -0
- package/tests/cypress/e2e/api/entities/tasks/tasks-metas.cy.ts +878 -0
- package/tests/cypress/e2e/patterns/patterns-in-pages.cy.ts +367 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.bdd.md +231 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.cy.ts +144 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.bdd.md +118 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.cy.ts +84 -0
- package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.bdd.md +288 -0
- package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.cy.ts +188 -0
- package/tests/cypress/e2e/uat/_core/auth/login-logout.bdd.md +160 -0
- package/tests/cypress/e2e/uat/_core/auth/login-logout.cy.ts +116 -0
- package/tests/cypress/e2e/uat/_core/auth/password-reset.bdd.md +289 -0
- package/tests/cypress/e2e/uat/_core/auth/password-reset.cy.ts +200 -0
- package/tests/cypress/e2e/uat/_core/auth/registration-control-invitation.cy.ts +176 -0
- package/tests/cypress/e2e/uat/_core/auth/registration-control-open.cy.ts +131 -0
- package/tests/cypress/e2e/uat/_core/auth/registration-control.cy.ts +140 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.bdd.md +225 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.cy.ts +148 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.bdd.md +251 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.cy.ts +163 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.bdd.md +231 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.cy.ts +141 -0
- package/tests/cypress/e2e/uat/_core/billing/extended.bdd.md +273 -0
- package/tests/cypress/e2e/uat/_core/billing/extended.cy.ts +209 -0
- package/tests/cypress/e2e/uat/_core/billing/feature-gates.bdd.md +407 -0
- package/tests/cypress/e2e/uat/_core/billing/feature-gates.cy.ts +307 -0
- package/tests/cypress/e2e/uat/_core/billing/page.bdd.md +329 -0
- package/tests/cypress/e2e/uat/_core/billing/page.cy.ts +250 -0
- package/tests/cypress/e2e/uat/_core/billing/status.bdd.md +190 -0
- package/tests/cypress/e2e/uat/_core/billing/status.cy.ts +145 -0
- package/tests/cypress/e2e/uat/_core/billing/team-switch.bdd.md +156 -0
- package/tests/cypress/e2e/uat/_core/billing/team-switch.cy.ts +122 -0
- package/tests/cypress/e2e/uat/_core/billing/usage.bdd.md +218 -0
- package/tests/cypress/e2e/uat/_core/billing/usage.cy.ts +176 -0
- package/tests/cypress/e2e/uat/_core/blocks/hero.bdd.md +124 -0
- package/tests/cypress/e2e/uat/_core/blocks/hero.cy.ts +56 -0
- package/tests/cypress/e2e/uat/_core/devtools/api-tester.cy.ts +390 -0
- package/tests/cypress/e2e/uat/_core/performance/suspense-loading.cy.ts +134 -0
- package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.bdd.md +736 -0
- package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.cy.ts +740 -0
- package/tests/cypress/e2e/uat/_core/teams/inline-edit.cy.ts +278 -0
- package/tests/cypress/e2e/uat/_core/teams/roles-matrix.bdd.md +553 -0
- package/tests/cypress/e2e/uat/_core/teams/roles-matrix.cy.ts +185 -0
- package/tests/cypress/e2e/uat/_core/teams/switcher.bdd.md +1151 -0
- package/tests/cypress/e2e/uat/_core/teams/switcher.cy.ts +497 -0
- package/tests/cypress/e2e/uat/_core/teams/team-switcher.md +198 -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/features/roles/editor-role.bdd.md +552 -0
- package/tests/cypress/e2e/uat/features/roles/editor-role.cy.ts +210 -0
- package/tests/cypress/e2e/uat/features/roles/member-restrictions.bdd.md +450 -0
- package/tests/cypress/e2e/uat/features/roles/member-restrictions.cy.ts +189 -0
- package/tests/cypress/e2e/uat/features/roles/owner-full-crud.bdd.md +530 -0
- package/tests/cypress/e2e/uat/features/roles/owner-full-crud.cy.ts +247 -0
- package/tests/cypress/fixtures/blocks.json +218 -0
- package/tests/cypress/fixtures/entities.json +87 -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/MediaAPIController.js +231 -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 +33 -0
- package/tests/cypress/src/core/BlockEditorBasePOM.ts +874 -0
- package/tests/cypress/src/core/DashboardEntityPOM.ts +41 -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/PatternsPOM.ts +329 -0
- package/tests/cypress/src/entities/PostsPOM.ts +137 -0
- package/tests/cypress/src/entities/TasksPOM.ts +246 -0
- package/tests/cypress/src/entities/index.ts +16 -0
- package/tests/cypress/src/features/BillingPOM.ts +385 -0
- package/tests/cypress/src/features/DashboardPOM.ts +271 -0
- package/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
- package/tests/cypress/src/features/PageBuilderPOM.ts +283 -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 +707 -0
- package/tests/cypress/src/features/SuperadminPOM.ts +851 -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 +20 -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 +518 -0
- package/tests/cypress/support/doc-commands.ts +260 -0
- package/tests/cypress/support/e2e.ts +90 -0
- package/tests/cypress.config.ts +178 -0
- package/tests/jest/__mocks__/@nextsparkjs/core/components/ui/badge.js +16 -0
- package/tests/jest/__mocks__/@nextsparkjs/core/lib/db.js +11 -0
- package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +160 -0
- package/tests/jest/__mocks__/@nextsparkjs/registries/theme-registry.ts +68 -0
- package/tests/jest/__mocks__/jose.js +22 -0
- package/tests/jest/__mocks__/next/image.js +15 -0
- package/tests/jest/__mocks__/next-server.js +56 -0
- package/tests/jest/components/post-header.test.tsx +377 -0
- package/tests/jest/jest.config.cjs +154 -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 +370 -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/services/tasks.service.test.ts +707 -0
- package/tests/jest/setup.ts +170 -0
- package/tests/jest/tsconfig.jest.json +6 -0
- package/tests/jest/validation/categories.test.ts +429 -0
- package/tests/jest/validation/posts.test.ts +546 -0
- package/tests/tsconfig.json +21 -0
- /package/docs/{02-features → public/02-features}/01-components.md +0 -0
- /package/docs/{02-features → public/02-features}/02-styling.md +0 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/// <reference types="cypress" />
|
|
2
|
+
|
|
3
|
+
import * as allure from 'allure-cypress'
|
|
4
|
+
import { DevtoolsPOM } from '../../../src/features/DevtoolsPOM'
|
|
5
|
+
import {
|
|
6
|
+
loginAsDefaultDeveloper,
|
|
7
|
+
loginAsDefaultSuperadmin,
|
|
8
|
+
loginAsDefaultMember,
|
|
9
|
+
CORE_USERS
|
|
10
|
+
} from '../../../src/session-helpers'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* DevTools Access Control Tests
|
|
14
|
+
*
|
|
15
|
+
* Tests the role-based access control for the /devtools area:
|
|
16
|
+
* - Developer users can access all /devtools routes
|
|
17
|
+
* - Developer users can access /admin (inherited privileges)
|
|
18
|
+
* - Superadmin users are BLOCKED from /devtools
|
|
19
|
+
* - Member users are BLOCKED from /devtools
|
|
20
|
+
*
|
|
21
|
+
* Test Users (from session-helpers):
|
|
22
|
+
* - Developer: developer@nextspark.dev (CORE_USERS.DEVELOPER)
|
|
23
|
+
* - Superadmin: superadmin@nextspark.dev (CORE_USERS.SUPERADMIN)
|
|
24
|
+
* - Member: emily.johnson@nextspark.dev (DEFAULT_THEME_USERS.MEMBER)
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
describe('DevTools - Access Control', {
|
|
28
|
+
tags: ['@uat', '@area-devtools', '@smoke', '@regression']
|
|
29
|
+
}, () => {
|
|
30
|
+
const devtools = DevtoolsPOM.create()
|
|
31
|
+
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
allure.epic('UAT')
|
|
34
|
+
allure.feature('DevTools')
|
|
35
|
+
allure.story('Access Control')
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
describe('ACCESS-001: Developer can access /devtools', { tags: '@smoke' }, () => {
|
|
39
|
+
it('should allow developer to access /devtools home page', { tags: '@smoke' }, () => {
|
|
40
|
+
allure.severity('critical')
|
|
41
|
+
|
|
42
|
+
// 1. Login as developer
|
|
43
|
+
loginAsDefaultDeveloper()
|
|
44
|
+
|
|
45
|
+
// 2. Visit /devtools
|
|
46
|
+
devtools.visitHome()
|
|
47
|
+
|
|
48
|
+
// 3. Verify access granted
|
|
49
|
+
devtools.assertOnDevtoolsHome()
|
|
50
|
+
devtools.assertHomePageVisible()
|
|
51
|
+
|
|
52
|
+
cy.log(`✅ Developer (${CORE_USERS.DEVELOPER}) can access /devtools home page`)
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
describe('ACCESS-002: Developer can access /devtools/style', { tags: '@smoke' }, () => {
|
|
57
|
+
it('should allow developer to access Style Gallery', { tags: '@smoke' }, () => {
|
|
58
|
+
allure.severity('critical')
|
|
59
|
+
|
|
60
|
+
// 1. Login as developer
|
|
61
|
+
loginAsDefaultDeveloper()
|
|
62
|
+
|
|
63
|
+
// 2. Visit /devtools/style
|
|
64
|
+
devtools.visitStyleGallery()
|
|
65
|
+
|
|
66
|
+
// 3. Verify access granted
|
|
67
|
+
devtools.assertOnStyleGallery()
|
|
68
|
+
devtools.assertStylePageVisible()
|
|
69
|
+
|
|
70
|
+
cy.log(`✅ Developer can access /devtools/style`)
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
describe('ACCESS-003: Developer can access /devtools/tests', { tags: '@smoke' }, () => {
|
|
75
|
+
it('should allow developer to access Test Cases viewer', { tags: '@smoke' }, () => {
|
|
76
|
+
allure.severity('critical')
|
|
77
|
+
|
|
78
|
+
// 1. Login as developer
|
|
79
|
+
loginAsDefaultDeveloper()
|
|
80
|
+
|
|
81
|
+
// 2. Visit /devtools/tests
|
|
82
|
+
devtools.visitTestCases()
|
|
83
|
+
|
|
84
|
+
// 3. Verify access granted
|
|
85
|
+
devtools.assertOnTestCases()
|
|
86
|
+
devtools.assertTestsPageVisible()
|
|
87
|
+
|
|
88
|
+
cy.log(`✅ Developer can access /devtools/tests`)
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
describe('ACCESS-004: Developer can access /devtools/config', { tags: '@smoke' }, () => {
|
|
93
|
+
it('should allow developer to access Config Viewer', { tags: '@smoke' }, () => {
|
|
94
|
+
allure.severity('critical')
|
|
95
|
+
|
|
96
|
+
// 1. Login as developer
|
|
97
|
+
loginAsDefaultDeveloper()
|
|
98
|
+
|
|
99
|
+
// 2. Visit /devtools/config
|
|
100
|
+
devtools.visitConfig()
|
|
101
|
+
|
|
102
|
+
// 3. Verify access granted
|
|
103
|
+
devtools.assertOnConfig()
|
|
104
|
+
devtools.assertConfigPageVisible()
|
|
105
|
+
|
|
106
|
+
cy.log(`✅ Developer can access /devtools/config`)
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
describe('ACCESS-005: Developer can access /superadmin (inherited)', () => {
|
|
111
|
+
it('should allow developer to access Superadmin area', () => {
|
|
112
|
+
allure.severity('high')
|
|
113
|
+
|
|
114
|
+
// 1. Login as developer
|
|
115
|
+
loginAsDefaultDeveloper()
|
|
116
|
+
|
|
117
|
+
// 2. Visit /superadmin
|
|
118
|
+
cy.visit('/superadmin')
|
|
119
|
+
|
|
120
|
+
// 3. Verify access granted (developer inherits superadmin privileges)
|
|
121
|
+
devtools.assertOnSuperadmin()
|
|
122
|
+
cy.get('[data-cy="superadmin-container"]').should('be.visible')
|
|
123
|
+
|
|
124
|
+
cy.log(`✅ Developer can access /superadmin (inherited superadmin privileges)`)
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
describe('ACCESS-006: Superadmin is BLOCKED from /devtools', { tags: '@smoke' }, () => {
|
|
129
|
+
it('should redirect superadmin to /dashboard when attempting to access /devtools', { tags: '@smoke' }, () => {
|
|
130
|
+
allure.severity('critical')
|
|
131
|
+
|
|
132
|
+
// 1. Login as superadmin
|
|
133
|
+
loginAsDefaultSuperadmin()
|
|
134
|
+
|
|
135
|
+
// 2. Attempt to visit /devtools (should be blocked)
|
|
136
|
+
cy.visit('/devtools', { failOnStatusCode: false })
|
|
137
|
+
|
|
138
|
+
// 3. Verify redirected to /dashboard (access denied)
|
|
139
|
+
devtools.assertRedirectedToDashboard()
|
|
140
|
+
|
|
141
|
+
// 4. Should show access_denied error in URL
|
|
142
|
+
cy.url().should('include', 'error=access_denied')
|
|
143
|
+
|
|
144
|
+
cy.log(`✅ Superadmin (${CORE_USERS.SUPERADMIN}) correctly blocked from /devtools`)
|
|
145
|
+
})
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
describe('ACCESS-007: Member is BLOCKED from /devtools', { tags: '@smoke' }, () => {
|
|
149
|
+
it('should redirect member to /dashboard when attempting to access /devtools', { tags: '@smoke' }, () => {
|
|
150
|
+
allure.severity('critical')
|
|
151
|
+
|
|
152
|
+
// 1. Login as member
|
|
153
|
+
loginAsDefaultMember()
|
|
154
|
+
|
|
155
|
+
// 2. Attempt to visit /devtools (should be blocked)
|
|
156
|
+
cy.visit('/devtools', { failOnStatusCode: false })
|
|
157
|
+
|
|
158
|
+
// 3. Verify redirected to /dashboard (access denied)
|
|
159
|
+
devtools.assertRedirectedToDashboard()
|
|
160
|
+
|
|
161
|
+
// 4. Should show access_denied error in URL
|
|
162
|
+
cy.url().should('include', 'error=access_denied')
|
|
163
|
+
|
|
164
|
+
cy.log(`✅ Member correctly blocked from /devtools`)
|
|
165
|
+
})
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
after(() => {
|
|
169
|
+
cy.log('✅ DevTools access control tests completed')
|
|
170
|
+
})
|
|
171
|
+
})
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
feature: DevTools Navigation
|
|
3
|
+
priority: high
|
|
4
|
+
tags: [dev-area, navigation, sidebar]
|
|
5
|
+
grepTags: [uat, feat-dev-area, regression]
|
|
6
|
+
coverage: 7
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# DevTools Navigation
|
|
10
|
+
|
|
11
|
+
> Navigation functionality tests within the /devtools area. Validates sidebar navigation items, clickable links, and exit navigation to Dashboard and Admin.
|
|
12
|
+
|
|
13
|
+
## @test NAV-001: Sidebar navigation works
|
|
14
|
+
|
|
15
|
+
### Metadata
|
|
16
|
+
- **Priority:** High
|
|
17
|
+
- **Type:** Smoke
|
|
18
|
+
- **Tags:** sidebar, navigation, display
|
|
19
|
+
- **Grep:** `@smoke`
|
|
20
|
+
|
|
21
|
+
```gherkin:en
|
|
22
|
+
Scenario: All sidebar navigation items are displayed
|
|
23
|
+
|
|
24
|
+
Given I am logged in as Developer (developer@nextspark.dev)
|
|
25
|
+
When I visit /devtools home
|
|
26
|
+
Then all navigation items should be visible in sidebar
|
|
27
|
+
And exit links (Dashboard, Admin) should be visible
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```gherkin:es
|
|
31
|
+
Scenario: Todos los items de navegacion del sidebar estan visibles
|
|
32
|
+
|
|
33
|
+
Given estoy logueado como Developer (developer@nextspark.dev)
|
|
34
|
+
When visito /devtools home
|
|
35
|
+
Then todos los items de navegacion deberian estar visibles en el sidebar
|
|
36
|
+
And los enlaces de salida (Dashboard, Admin) deberian estar visibles
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Expected Results
|
|
40
|
+
- Home, Style Gallery, Test Cases, Config links visible
|
|
41
|
+
- Exit to Dashboard link visible
|
|
42
|
+
- Go to Admin link visible
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## @test NAV-002a: Navigate to Style Gallery via sidebar
|
|
47
|
+
|
|
48
|
+
### Metadata
|
|
49
|
+
- **Priority:** High
|
|
50
|
+
- **Type:** Smoke
|
|
51
|
+
- **Tags:** navigate, style-gallery
|
|
52
|
+
|
|
53
|
+
```gherkin:en
|
|
54
|
+
Scenario: Navigate to Style Gallery via sidebar
|
|
55
|
+
|
|
56
|
+
Given I am on /devtools home
|
|
57
|
+
When I click Style Gallery nav item
|
|
58
|
+
Then the URL should include /devtools/style
|
|
59
|
+
And the style page should be visible
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```gherkin:es
|
|
63
|
+
Scenario: Navegar a Style Gallery via sidebar
|
|
64
|
+
|
|
65
|
+
Given estoy en /devtools home
|
|
66
|
+
When hago clic en el item de navegacion Style Gallery
|
|
67
|
+
Then la URL deberia incluir /devtools/style
|
|
68
|
+
And la pagina de estilos deberia estar visible
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Expected Results
|
|
72
|
+
- Navigation completes successfully
|
|
73
|
+
- Style Gallery page loads
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## @test NAV-002b: Navigate to Test Cases via sidebar
|
|
78
|
+
|
|
79
|
+
### Metadata
|
|
80
|
+
- **Priority:** High
|
|
81
|
+
- **Type:** Smoke
|
|
82
|
+
- **Tags:** navigate, test-cases
|
|
83
|
+
|
|
84
|
+
```gherkin:en
|
|
85
|
+
Scenario: Navigate to Test Cases via sidebar
|
|
86
|
+
|
|
87
|
+
Given I am on /devtools home
|
|
88
|
+
When I click Test Cases nav item
|
|
89
|
+
Then the URL should include /devtools/tests
|
|
90
|
+
And the tests page should be visible
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```gherkin:es
|
|
94
|
+
Scenario: Navegar a Test Cases via sidebar
|
|
95
|
+
|
|
96
|
+
Given estoy en /devtools home
|
|
97
|
+
When hago clic en el item de navegacion Test Cases
|
|
98
|
+
Then la URL deberia incluir /devtools/tests
|
|
99
|
+
And la pagina de tests deberia estar visible
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Expected Results
|
|
103
|
+
- Navigation completes successfully
|
|
104
|
+
- Test Cases viewer page loads
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## @test NAV-002c: Navigate to Config Viewer via sidebar
|
|
109
|
+
|
|
110
|
+
### Metadata
|
|
111
|
+
- **Priority:** High
|
|
112
|
+
- **Type:** Smoke
|
|
113
|
+
- **Tags:** navigate, config
|
|
114
|
+
|
|
115
|
+
```gherkin:en
|
|
116
|
+
Scenario: Navigate to Config Viewer via sidebar
|
|
117
|
+
|
|
118
|
+
Given I am on /devtools home
|
|
119
|
+
When I click Config nav item
|
|
120
|
+
Then the URL should include /devtools/config
|
|
121
|
+
And the config page should be visible
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```gherkin:es
|
|
125
|
+
Scenario: Navegar a Config Viewer via sidebar
|
|
126
|
+
|
|
127
|
+
Given estoy en /devtools home
|
|
128
|
+
When hago clic en el item de navegacion Config
|
|
129
|
+
Then la URL deberia incluir /devtools/config
|
|
130
|
+
And la pagina de config deberia estar visible
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Expected Results
|
|
134
|
+
- Navigation completes successfully
|
|
135
|
+
- Config Viewer page loads
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## @test NAV-002d: Navigate back to Home via sidebar
|
|
140
|
+
|
|
141
|
+
### Metadata
|
|
142
|
+
- **Priority:** High
|
|
143
|
+
- **Type:** Smoke
|
|
144
|
+
- **Tags:** navigate, home
|
|
145
|
+
|
|
146
|
+
```gherkin:en
|
|
147
|
+
Scenario: Navigate back to Home via sidebar
|
|
148
|
+
|
|
149
|
+
Given I am on /devtools/style
|
|
150
|
+
When I click Home nav item
|
|
151
|
+
Then the URL should be /devtools
|
|
152
|
+
And the home page should be visible
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```gherkin:es
|
|
156
|
+
Scenario: Navegar de vuelta a Home via sidebar
|
|
157
|
+
|
|
158
|
+
Given estoy en /devtools/style
|
|
159
|
+
When hago clic en el item de navegacion Home
|
|
160
|
+
Then la URL deberia ser /devtools
|
|
161
|
+
And la pagina home deberia estar visible
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Expected Results
|
|
165
|
+
- Navigation completes successfully
|
|
166
|
+
- Home page loads
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## @test NAV-003: Back to Dashboard link works
|
|
171
|
+
|
|
172
|
+
### Metadata
|
|
173
|
+
- **Priority:** High
|
|
174
|
+
- **Type:** Smoke
|
|
175
|
+
- **Tags:** exit, dashboard
|
|
176
|
+
|
|
177
|
+
```gherkin:en
|
|
178
|
+
Scenario: Navigate to Dashboard when clicking exit link
|
|
179
|
+
|
|
180
|
+
Given I am on /devtools home
|
|
181
|
+
When I click "Exit to Dashboard" link
|
|
182
|
+
Then the URL should include /dashboard
|
|
183
|
+
And the URL should not include /devtools
|
|
184
|
+
And the dashboard container should be visible
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
```gherkin:es
|
|
188
|
+
Scenario: Navegar a Dashboard al hacer clic en enlace de salida
|
|
189
|
+
|
|
190
|
+
Given estoy en /devtools home
|
|
191
|
+
When hago clic en el enlace "Exit to Dashboard"
|
|
192
|
+
Then la URL deberia incluir /dashboard
|
|
193
|
+
And la URL no deberia incluir /devtools
|
|
194
|
+
And el contenedor del dashboard deberia estar visible
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Expected Results
|
|
198
|
+
- Exit navigation works correctly
|
|
199
|
+
- User lands on main dashboard
|
|
200
|
+
- No /devtools in URL
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## @test NAV-004: Go to Admin link works
|
|
205
|
+
|
|
206
|
+
### Metadata
|
|
207
|
+
- **Priority:** High
|
|
208
|
+
- **Type:** Smoke
|
|
209
|
+
- **Tags:** exit, admin
|
|
210
|
+
|
|
211
|
+
```gherkin:en
|
|
212
|
+
Scenario: Navigate to Admin when clicking exit link
|
|
213
|
+
|
|
214
|
+
Given I am on /devtools home
|
|
215
|
+
When I click "Go to Admin" link
|
|
216
|
+
Then the URL should include /admin
|
|
217
|
+
And the Admin container should be visible
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
```gherkin:es
|
|
221
|
+
Scenario: Navegar a Admin al hacer clic en enlace de salida
|
|
222
|
+
|
|
223
|
+
Given estoy en /devtools home
|
|
224
|
+
When hago clic en el enlace "Go to Admin"
|
|
225
|
+
Then la URL deberia incluir /admin
|
|
226
|
+
And el contenedor de Admin deberia estar visible
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Expected Results
|
|
230
|
+
- Exit to Admin works correctly
|
|
231
|
+
- Developer can access Admin (inherited privileges)
|
|
232
|
+
- Admin control panel visible
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## UI Elements
|
|
237
|
+
|
|
238
|
+
| Element | Selector | Description |
|
|
239
|
+
|---------|----------|-------------|
|
|
240
|
+
| Nav Home | `[data-cy="dev-nav-home"]` | Home navigation item |
|
|
241
|
+
| Nav Style Gallery | `[data-cy="dev-nav-stylegallery"]` | Style Gallery navigation item |
|
|
242
|
+
| Nav Test Cases | `[data-cy="dev-nav-testcases"]` | Test Cases navigation item |
|
|
243
|
+
| Nav Config | `[data-cy="dev-nav-config"]` | Config navigation item |
|
|
244
|
+
| Exit to Dashboard | `[data-cy="dev-sidebar-exit-to-dashboard"]` | Exit to dashboard link |
|
|
245
|
+
| Go to Admin | `[data-cy="dev-sidebar-go-to-admin"]` | Go to Admin link |
|
|
246
|
+
| Dashboard Container | `[data-cy="dashboard-container"]` | Main dashboard container |
|
|
247
|
+
| Admin Container | `[data-cy="admin-container"]` | Admin main container |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Summary
|
|
252
|
+
|
|
253
|
+
| Test ID | Block | Description | Tags |
|
|
254
|
+
|---------|-------|-------------|------|
|
|
255
|
+
| NAV-001 | Sidebar Display | All navigation items visible | `@smoke` |
|
|
256
|
+
| NAV-002a | Navigate | Style Gallery via sidebar | |
|
|
257
|
+
| NAV-002b | Navigate | Test Cases via sidebar | |
|
|
258
|
+
| NAV-002c | Navigate | Config Viewer via sidebar | |
|
|
259
|
+
| NAV-002d | Navigate | Back to Home via sidebar | |
|
|
260
|
+
| NAV-003 | Exit Links | Back to Dashboard works | |
|
|
261
|
+
| NAV-004 | Exit Links | Go to Admin works | |
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/// <reference types="cypress" />
|
|
2
|
+
|
|
3
|
+
import * as allure from 'allure-cypress'
|
|
4
|
+
import { DevtoolsPOM } from '../../../src/features/DevtoolsPOM'
|
|
5
|
+
import { loginAsDefaultDeveloper } from '../../../src/session-helpers'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* DevTools Navigation Tests
|
|
9
|
+
*
|
|
10
|
+
* Tests the navigation functionality within the /devtools area:
|
|
11
|
+
* - Sidebar navigation items work correctly
|
|
12
|
+
* - All nav links are clickable and navigate to correct pages
|
|
13
|
+
* - Exit links (Dashboard, Admin) work
|
|
14
|
+
* - URL changes reflect navigation
|
|
15
|
+
*
|
|
16
|
+
* Test User:
|
|
17
|
+
* - Developer: developer@nextspark.dev (via loginAsDefaultDeveloper)
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
describe('DevTools - Navigation', {
|
|
21
|
+
tags: ['@uat', '@area-devtools', '@regression']
|
|
22
|
+
}, () => {
|
|
23
|
+
const devtools = DevtoolsPOM.create()
|
|
24
|
+
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
allure.epic('UAT')
|
|
27
|
+
allure.feature('DevTools')
|
|
28
|
+
allure.story('Navigation')
|
|
29
|
+
|
|
30
|
+
// Login as developer before each test
|
|
31
|
+
loginAsDefaultDeveloper()
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
describe('NAV-001: Sidebar navigation works', () => {
|
|
35
|
+
it('should display all sidebar navigation items', () => {
|
|
36
|
+
allure.severity('high')
|
|
37
|
+
|
|
38
|
+
// 1. Visit /devtools home
|
|
39
|
+
devtools.visitHome()
|
|
40
|
+
|
|
41
|
+
// 2. Verify all navigation items are visible
|
|
42
|
+
devtools.assertSidebarNavigationVisible()
|
|
43
|
+
|
|
44
|
+
// 3. Verify exit links are visible
|
|
45
|
+
devtools.assertExitLinksVisible()
|
|
46
|
+
|
|
47
|
+
cy.log(`✅ Sidebar navigation displayed correctly`)
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
describe('NAV-002: All nav links are clickable', () => {
|
|
52
|
+
it('should navigate to Style Gallery via sidebar', () => {
|
|
53
|
+
allure.severity('high')
|
|
54
|
+
|
|
55
|
+
// 1. Start at /devtools home
|
|
56
|
+
devtools.visitHome()
|
|
57
|
+
|
|
58
|
+
// 2. Click Style Gallery nav item
|
|
59
|
+
devtools.clickNavStyleGallery()
|
|
60
|
+
|
|
61
|
+
// 3. Verify navigation to /devtools/style
|
|
62
|
+
devtools.assertOnStyleGallery()
|
|
63
|
+
devtools.assertStylePageVisible()
|
|
64
|
+
|
|
65
|
+
cy.log(`✅ Style Gallery navigation works`)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('should navigate to Test Cases via sidebar', () => {
|
|
69
|
+
allure.severity('high')
|
|
70
|
+
|
|
71
|
+
// 1. Start at /devtools home
|
|
72
|
+
devtools.visitHome()
|
|
73
|
+
|
|
74
|
+
// 2. Click Test Cases nav item
|
|
75
|
+
devtools.clickNavTestCases()
|
|
76
|
+
|
|
77
|
+
// 3. Verify navigation to /devtools/tests
|
|
78
|
+
devtools.assertOnTestCases()
|
|
79
|
+
devtools.assertTestsPageVisible()
|
|
80
|
+
|
|
81
|
+
cy.log(`✅ Test Cases navigation works`)
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('should navigate to Config Viewer via sidebar', () => {
|
|
85
|
+
allure.severity('high')
|
|
86
|
+
|
|
87
|
+
// 1. Start at /devtools home
|
|
88
|
+
devtools.visitHome()
|
|
89
|
+
|
|
90
|
+
// 2. Click Config nav item
|
|
91
|
+
devtools.clickNavConfig()
|
|
92
|
+
|
|
93
|
+
// 3. Verify navigation to /devtools/config
|
|
94
|
+
devtools.assertOnConfig()
|
|
95
|
+
devtools.assertConfigPageVisible()
|
|
96
|
+
|
|
97
|
+
cy.log(`✅ Config Viewer navigation works`)
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
it('should navigate back to Home via sidebar', () => {
|
|
101
|
+
allure.severity('high')
|
|
102
|
+
|
|
103
|
+
// 1. Start at /devtools/style
|
|
104
|
+
devtools.visitStyleGallery()
|
|
105
|
+
|
|
106
|
+
// 2. Click Home nav item
|
|
107
|
+
devtools.clickNavHome()
|
|
108
|
+
|
|
109
|
+
// 3. Verify navigation to /devtools
|
|
110
|
+
devtools.assertOnDevtoolsHome()
|
|
111
|
+
devtools.assertHomePageVisible()
|
|
112
|
+
|
|
113
|
+
cy.log(`✅ Home navigation works`)
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
describe('NAV-003: Back to Dashboard link works', () => {
|
|
118
|
+
it('should navigate to Dashboard when clicking exit link', () => {
|
|
119
|
+
allure.severity('high')
|
|
120
|
+
|
|
121
|
+
// 1. Start at /devtools home
|
|
122
|
+
devtools.visitHome()
|
|
123
|
+
|
|
124
|
+
// 2. Click "Exit to Dashboard" link
|
|
125
|
+
devtools.clickExitToDashboard()
|
|
126
|
+
|
|
127
|
+
// 3. Verify navigation to /dashboard
|
|
128
|
+
cy.url().should('include', '/dashboard')
|
|
129
|
+
cy.url().should('not.include', '/devtools')
|
|
130
|
+
cy.get('[data-cy="dashboard-container"]').should('be.visible')
|
|
131
|
+
|
|
132
|
+
cy.log(`✅ Exit to Dashboard works`)
|
|
133
|
+
})
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
describe('NAV-004: Go to Admin link works', () => {
|
|
137
|
+
it('should navigate to Admin when clicking exit link', () => {
|
|
138
|
+
allure.severity('high')
|
|
139
|
+
|
|
140
|
+
// 1. Start at /devtools home
|
|
141
|
+
devtools.visitHome()
|
|
142
|
+
|
|
143
|
+
// 2. Click "Go to Admin" link
|
|
144
|
+
devtools.clickGoToAdmin()
|
|
145
|
+
|
|
146
|
+
// 3. Verify navigation to /admin
|
|
147
|
+
devtools.assertOnAdmin()
|
|
148
|
+
cy.get('[data-cy="admin-container"]').should('be.visible')
|
|
149
|
+
|
|
150
|
+
cy.log(`✅ Go to Admin works`)
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
after(() => {
|
|
155
|
+
cy.log('✅ DevTools navigation tests completed')
|
|
156
|
+
})
|
|
157
|
+
})
|