Skip to content

Central Playwright E2E

The Playwright suite for the Central Application lives in the Frontend repository:

  • Guide: EloSync-Frontend/docs/testing/PLAYWRIGHT.md
  • Tests: EloSync-Frontend/e2e/tests/<module>/
  • Shared POM / fixtures: EloSync-Frontend/e2e/{pages,fixtures,helpers,utils,test-data}/
  • Config: EloSync-Frontend/playwright.config.ts

Scope

Covers Platform/Core only: auth, dashboard, tenants (workspaces), users, roles, permissions matrix, modules, marketplace, billing (Billing nav + payment gateways + settings billing tab + tenant invoice/payment tabs), impersonation, settings, profile, smoke, and regression.

Does not cover Stripe Checkout or future ERP modules beyond what is listed below. Tenant Settings branding/mail coverage lives in e2e/tests/settings/tenant-settings.spec.ts. Tenant Users/Roles RBAC coverage lives in e2e/tests/users/tenant-users.spec.ts (npm run test:e2e:tenant-rbac). Leads product UI: e2e/tests/leads/ (npm run test:e2e:leads). Tasks product UI: e2e/tests/tasks/ (npm run test:e2e:tasks). Projects product UI: e2e/tests/projects/ (npm run test:e2e:projects). ToDos product UI: e2e/tests/todos/ (npm run test:e2e:todos). Contacts product UI: e2e/tests/contacts/ (npm run test:e2e:contacts). Companies product UI: e2e/tests/companies/ (npm run test:e2e:companies). Opportunities / Quotations / Contracts: e2e/tests/{opportunities,quotations,contracts}/ plus shared-session e2e/tests/sales/ (npm run test:e2e:sales). Invoices: e2e/tests/invoices/ (npm run test:e2e:invoices). Payments: e2e/tests/payments/ (npm run test:e2e:payments) — installs both invoices and payments modules (hard dependency). Credit Notes: e2e/tests/credit-notes/ (npm run test:e2e:credit-notes) — installs both invoices and credit-notes modules (hard dependency). Estimates: e2e/tests/estimates/ (npm run test:e2e:estimates) — installs both invoices and estimates modules (hard dependency), covers create → send → accept → convert to invoice. Vendors: e2e/tests/vendors/ (npm run test:e2e:vendors) — installs the vendors module (free Purchasing opt-in), covers list KPIs, create, notes, and activity timeline. Purchase Orders: e2e/tests/purchase-orders/ (npm run test:e2e:purchase-orders) — installs both vendors and purchase-orders modules (hard dependency), covers create, status transitions (draft → sent → partially received → received), and the timeline. Expenses: e2e/tests/expenses/ (npm run test:e2e:expenses) — installs vendors + purchase-orders + expenses (all soft/free Purchasing opt-ins, no hard dependency), covers list KPIs, create → submit → approve → pay, and converting a purchase order to a draft expense via the PO record page. Communication Templates: e2e/tests/communication-templates/ (npm run test:e2e:communication-templates). Automation: e2e/tests/automation/ (npm run test:e2e:automation) — billable Marketplace install, then workflows / templates / runs smoke plus create → activate → run and unwired-trigger activate guard. Tenant suites use Playwright project tenant.

Spec directories (independently runnable)

SuitePathnpm script
Authe2e/tests/auth/npm run test:e2e:auth
Dashboarde2e/tests/dashboard/npm run test:e2e:dashboard
Tenants / workspacese2e/tests/tenants/npm run test:e2e:tenants
Userse2e/tests/users/npm run test:e2e:users (Central) · npm run test:e2e:tenant-rbac (workspace Users/Roles)
Rolese2e/tests/roles/npm run test:e2e:roles
Permissionse2e/tests/permissions/npm run test:e2e:permissions
Modulese2e/tests/modules/npm run test:e2e:modules
Marketplacee2e/tests/marketplace/npm run test:e2e:marketplace
Billinge2e/tests/billing/npm run test:e2e:billing
Impersonatione2e/tests/impersonation/npm run test:e2e:impersonation
Settingse2e/tests/settings/npm run test:e2e:settings — Central identity/flags + tenant branding/mail (npm run test:e2e:tenant-settings); Developers full workflow (npm run test:e2e:developers); Storage usage (npm run test:e2e:storage)
Beta Applications (Founding Beta invite)e2e/tests/beta-applications/npm run test:e2e:beta-applications — one Central admin session: settings validation, registration-closed CTA, Accept & send invite, invite register validation + activation, expired resend
Leadse2e/tests/leads/npm run test:e2e:leads
Taskse2e/tests/tasks/npm run test:e2e:tasks
Projectse2e/tests/projects/npm run test:e2e:projects / test:e2e:projects:headed
Contactse2e/tests/contacts/npm run test:e2e:contacts
Companiese2e/tests/companies/npm run test:e2e:companies
Opportunitiese2e/tests/opportunities/npm run test:e2e:opportunities
Quotationse2e/tests/quotations/npm run test:e2e:quotations
Contractse2e/tests/contracts/npm run test:e2e:contracts
Sales (shared session)e2e/tests/sales/npm run test:e2e:sales / test:e2e:sales:headed
Invoicese2e/tests/invoices/npm run test:e2e:invoices
Paymentse2e/tests/payments/npm run test:e2e:payments
Credit Notese2e/tests/credit-notes/npm run test:e2e:credit-notes
Estimatese2e/tests/estimates/npm run test:e2e:estimates
Vendorse2e/tests/vendors/npm run test:e2e:vendors / test:e2e:vendors:headed
Purchase Orderse2e/tests/purchase-orders/npm run test:e2e:purchase-orders / test:e2e:purchase-orders:headed
Expensese2e/tests/expenses/npm run test:e2e:expenses / test:e2e:expenses:headed
Purchasing (shared session)e2e/tests/purchasing/npm run test:e2e:purchasing / test:e2e:purchasing:headed — one login, then Vendors → Purchase Orders → Expenses with form validation + PO convert; includes negative authz (purchasing.authz.spec.ts)
Communication Templatese2e/tests/communication-templates/npm run test:e2e:communication-templates
Emaile2e/tests/email/npm run test:e2e:email (+ test:e2e:email:headed)
Automatione2e/tests/automation/npm run test:e2e:automation / test:e2e:automation:headed
Knowledge Basee2e/tests/knowledge-base/npm run test:e2e:knowledge-base / test:e2e:knowledge-base:headed
Reports (Analytics)e2e/tests/analytics/npm run test:e2e:analytics / test:e2e:analytics:modules / test:e2e:analytics:authz (+ :headed)
Profilee2e/tests/profile/npm run test:e2e:profile
Smokee2e/tests/smoke/npm run test:e2e:smoke
Regressione2e/tests/regression/npm run test:e2e:regression

Setup project (auth.setup.ts) authenticates once for chromium suites. Auth and tenant projects use empty storage and do not depend on setup.

QA status (Central stabilization)

  • Full suite: 48 passed, 0 skipped, 0 failed (local Chromium run).
  • Each module directory is executable independently via npx playwright test e2e/tests/<module> or the npm scripts above.
  • After module-level green runs, re-run npm run test:e2e before declaring Central stable.

Screenshots

Playwright writes generated screenshots under:

text
EloSync-Frontend/docs/testing/images/
EloSync-Frontend/test-results/
EloSync-Frontend/playwright-report/

Those paths are gitignored in Frontend and Backend — never commit e2e-generated images, videos, or traces there.

Curated documentation screenshots may be committed only in this Docs repo (testing/images/…) when intentionally documenting a workflow. Do not dump raw Playwright run output into Docs.

Quick start

bash
cd EloSync-Frontend
cp .env.e2e.example .env.e2e
npm install
npx playwright install chromium
npm run test:e2e
npm run test:e2e:report

See the Frontend guide for environment variables, CI usage, debugging, and extension patterns.

Official documentation for the EloSync SaaS Platform.