nxtgauge-admin-solid/docs/Nxtgauge-End-to-End-Testing-Blueprint.md

201 lines
8.4 KiB
Markdown
Raw Normal View History

> 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:
2026-04-10 01:17:00 +02:00
- 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.