200 lines
8.4 KiB
Markdown
200 lines
8.4 KiB
Markdown
> Policy Update (2026-04-05): External onboarding management is deprecated and removed. After sign-up/login, users are routed directly by role key to role-specific dashboard/runtime modules. Any legacy references to /onboarding, /choose-role onboarding flows, onboarding schema management, or fallback data strategies should be treated as obsolete. Runtime config and canonical backend APIs are the only source of truth.
|
|
|
|
# Nxtgauge End-to-End Testing Blueprint
|
|
|
|
## 1. Scope
|
|
- Validate full lifecycle for external users from sign-up to role approval and role-specific module insertion.
|
|
- Validate admin-side verification and approval pipelines and state propagation into management modules.
|
|
- Validate runtime-config-driven role-key dashboard routing and guard/redirect behavior.
|
|
- Validate notification and marketplace flows (customer requirement posting, professional discovery).
|
|
- Validate UI parity and visual regressions for management modules using Playwright + pixelmatch + Storybook + VisBug.
|
|
- Validate frontend (`vitest`, Playwright) and backend (`cargo test --workspace`) quality gates.
|
|
|
|
## 2. Business Logic Summary
|
|
- External users can exist before any role registration and must appear in Users Management.
|
|
- Role activation is gated: verification then approval.
|
|
- Approval produces side effects:
|
|
- active role created,
|
|
- role-specific table insertion,
|
|
- notification event.
|
|
- Multi-role users are supported and role visibility must remain isolated by role/module.
|
|
- Runtime config must not silently mask missing role/dashboard config.
|
|
|
|
## 3. Environments and Preconditions
|
|
- Frontend admin app: `/Users/ashwin/workspace/nxtgauge-admin-solid`
|
|
- Rust backend workspace: `/Users/ashwin/workspace/nxtgauge-backend-rust`
|
|
- Required ports:
|
|
- Admin app: `http://localhost:9202`
|
|
- Storybook: `http://localhost:6006`
|
|
- Preconditions:
|
|
- `npm install` completed in admin repo.
|
|
- Rust toolchain + dependencies available for backend repo.
|
|
- Seed users/roles configured in backend DB (no UI fallback data strategy).
|
|
- Admin preview mode supported with `?_preview=1` for deterministic UI checks.
|
|
|
|
## 4. Test Data Matrix
|
|
- External identities:
|
|
- User without role.
|
|
- User with assigned role key and pending approval.
|
|
- User with verified/pending approval role.
|
|
- User with approved active role.
|
|
- Multi-role user (2+ roles).
|
|
- Roles to cover:
|
|
- `COMPANY`
|
|
- `JOB_SEEKER`
|
|
- `CUSTOMER`
|
|
- `DEVELOPER`
|
|
- `PHOTOGRAPHER`
|
|
- `SOCIAL_MEDIA_MANAGER`
|
|
- Marketplace entities:
|
|
- 2-3 customer accounts.
|
|
- 2 requirements per customer.
|
|
- Approved professional accounts for lead/job discovery.
|
|
|
|
## 5. End-to-End Test Scenarios
|
|
1. Auth split:
|
|
- external identity blocked from admin login.
|
|
- internal identity allowed and redirected to admin.
|
|
- external-resolved session redirected to `/login?from=...`.
|
|
2. Role Runtime:
|
|
- role-key based dashboard route resolves via runtime config.
|
|
- missing runtime config renders explicit error state.
|
|
- role state persists and moves to verification/approval state.
|
|
3. Dashboard:
|
|
- role-specific sidebar and tabs render correctly.
|
|
- guarded routes reject wrong portal/session.
|
|
4. Verification:
|
|
- submission appears in Verification Management.
|
|
- reviewer decisions propagate to Approval Management.
|
|
5. Approval:
|
|
- approved role appears in Users Management and role-specific module.
|
|
- rejected role remains non-active but user remains visible.
|
|
6. Users Management:
|
|
- users with zero roles are visible.
|
|
- role states are visible per user.
|
|
7. Role-specific insertion:
|
|
- approval inserts into the right module only.
|
|
8. Notifications:
|
|
- approval emits and surfaces unread notification.
|
|
9. Requirements/leads:
|
|
- customer creates requirements.
|
|
- approved professionals discover and act on leads/jobs.
|
|
|
|
## 6. Playwright Automation Plan
|
|
- Existing specs:
|
|
- `tests/e2e/admin-auth.spec.ts`
|
|
- `tests/e2e/admin-visual.spec.ts` (pixelmatch)
|
|
- Added specs:
|
|
- `tests/e2e/management-parity.spec.ts`
|
|
- asserts Department-style controls for management modules.
|
|
- asserts dashboard management pages are non-empty.
|
|
- `tests/e2e/storybook-admin-pages.spec.ts`
|
|
- Storybook admin story smoke checks.
|
|
- Execution commands:
|
|
- `npm run test:e2e`
|
|
- `npm run test:management:parity`
|
|
- `npm run test:visual`
|
|
- `npm run test:storybook:e2e`
|
|
|
|
## 7. API and Backend Validation Plan
|
|
- Validate gateway/admin API responses and status codes for:
|
|
- `/api/gateway/api/auth/session`
|
|
- `/api/gateway/api/runtime-config`
|
|
- `/api/gateway/api/admin/users`
|
|
- `/api/gateway/api/admin/external-users`
|
|
- `/api/gateway/api/admin/dashboard-config`
|
|
- `/api/gateway/api/admin/roles`
|
|
- `/api/gateway/api/admin/companies`
|
|
- Assertions:
|
|
- lifecycle transitions emit expected payload shape/state.
|
|
- role key propagation remains consistent across services.
|
|
- no silent fallback on missing runtime config.
|
|
|
|
## 8. Database Validation Plan
|
|
- Validate tables/events after each phase:
|
|
- user record creation at sign-up.
|
|
- role state creation/update.
|
|
- verification record creation/update.
|
|
- approval decision and role activation state.
|
|
- role-specific module table insertion on approval only.
|
|
- notification row insertion.
|
|
- Cross-check:
|
|
- rejected records never inserted into approved role module tables.
|
|
- multi-role user keeps separate role states.
|
|
|
|
## 9. Runtime Config Validation
|
|
- Validate:
|
|
- role-specific onboarding config retrieval.
|
|
- role-specific dashboard config retrieval.
|
|
- UI behavior when config exists vs missing.
|
|
- no hidden fallback that masks configuration defects.
|
|
- Internal/External dashboard management pages must show deterministic list/form states even when backend responses are empty.
|
|
|
|
## 10. Notification Validation
|
|
- Trigger approval and assert:
|
|
- notification is created in backend.
|
|
- notification module UI renders item.
|
|
- unread/read transitions are persisted.
|
|
- Negative:
|
|
- rejected approvals must not trigger approval-success notifications.
|
|
|
|
## 11. Lead / Requirement Marketplace Validation
|
|
- Customer flow:
|
|
- create customer users.
|
|
- create 2 requirements per customer.
|
|
- assert requirement visibility in marketplace feeds.
|
|
- Professional flow:
|
|
- approved professionals can access leads/jobs routes.
|
|
- wrong-role users cannot access irrelevant lead pools.
|
|
- apply/contact actions persist.
|
|
|
|
## 12. Edge Cases and Negative Cases
|
|
- User signs up but never picks role: visible in Users Management.
|
|
- Missing runtime config: explicit error/empty guard state.
|
|
- Session crossover:
|
|
- external session cannot pass admin route guards.
|
|
- admin session cannot leak into public workspace.
|
|
- Multi-role conflict:
|
|
- role A approval should not auto-activate role B.
|
|
- Approval before verification must be blocked.
|
|
- API `404`/`401` on optional module endpoints should not crash page shell.
|
|
|
|
## 13. Release Blocking Acceptance Checklist
|
|
- Auth split tests pass.
|
|
- Verification → approval → insertion path validated for all required roles.
|
|
- Users Management shows no-role users.
|
|
- Role-specific management insertion validated.
|
|
- Notification creation/visibility validated.
|
|
- Management pages match Department-style controls and table shell.
|
|
- Visual diff (`pixelmatch`) within thresholds.
|
|
- `vitest`, existing unit tests, Playwright suites, and `cargo test --workspace` pass.
|
|
|
|
## 14. Recommended Folder Structure For Tests
|
|
- `tests/e2e/admin-auth.spec.ts`
|
|
- `tests/e2e/admin-visual.spec.ts`
|
|
- `tests/e2e/management-parity.spec.ts`
|
|
- `tests/e2e/storybook-admin-pages.spec.ts`
|
|
- `tests/vitest/admin-auth.spec.ts`
|
|
- `tests/vitest/module-access.spec.ts`
|
|
- `tests/visual-artifacts/{actual,diff}`
|
|
- `docs/Nxtgauge-End-to-End-Testing-Blueprint.md`
|
|
|
|
## 15. Suggested Seed Data / Factories
|
|
- User factories:
|
|
- `external_user_unregistered`
|
|
- `external_user_pending_verification`
|
|
- `external_user_pending_approval`
|
|
- `external_user_approved_role`
|
|
- `external_user_multi_role`
|
|
- Domain factories:
|
|
- `customer_requirement_factory`
|
|
- `professional_profile_factory`
|
|
- `notification_factory`
|
|
- Role fixtures for matrix roles listed in Section 4.
|
|
|
|
## 16. Risks and Likely Failure Points
|
|
- Role-key drift between onboarding, approval, and role-specific insertion.
|
|
- Guard and redirect regressions across admin/public portals.
|
|
- Runtime config partial failures causing invisible fallback behavior.
|
|
- Backend endpoint shape drift (`users`, `external-users`, `dashboard-config`) causing UI empty states.
|
|
- Visual regressions in shared table controls/icons across management modules.
|