2026-02-14 02:20:19 +00:00
..
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00
2026-02-14 02:20:19 +00:00

E2E Tests

End-to-end tests for the Cyber Hybrid Hub application using Playwright.

Quick Start

# Install dependencies
cd .playwright-mcp && npm install

# Install browsers
npx playwright install --with-deps chromium

# Run all tests
npx playwright test

# Run tests in UI mode
npx playwright test --ui

# View HTML report
npx playwright show-report

Test Organization

tests/e2e/
├── helpers/              # Test utilities and fixtures
│   └── test-utils.ts
├── auth/                 # Authentication and authorization
│   ├── login.spec.ts
│   ├── logout.spec.ts
│   └── rbac.spec.ts
├── landlord/             # Landlord-specific features
│   ├── applications.spec.ts
│   ├── dashboard.spec.ts
│   ├── leases.spec.ts
│   ├── maintenance.spec.ts
│   ├── payments.spec.ts
│   └── properties.spec.ts
├── tenant/               # Tenant-specific features
│   ├── applications.spec.ts
│   ├── leases.spec.ts
│   ├── maintenance.spec.ts
│   └── payments.spec.ts
└── error-handling/       # Error scenarios and edge cases
    └── validation.spec.ts

Running Specific Tests

# Run all auth tests
npx playwright test tests/e2e/auth/

# Run specific test file
npx playwright test tests/e2e/auth/login.spec.ts

# Run tests matching pattern
npx playwright test --grep "login"

Test Modes

# Headed mode (show browser)
npx playwright test --headed

# Debug mode with inspector
npx playwright test --debug

# UI mode (interactive test explorer)
npx playwright test --ui

# Slow motion
npx playwright test --headed --slow-mo=1000

E2E Test Mode

The application supports E2E test mode to bypass OAuth authentication:

// Set E2E mode
await page.addInitScript(() => {
  globalThis.localStorage.setItem("E2E_TEST", "true");
});

// Use E2E user headers
await page.goto("/protected-route", {
  headers: {
    "x-e2e-user": "landlord", // or "tenant", "admin"
  },
});

E2E Test Users

  • landlord: Alex Landlord (properties: e2e-prop-1, e2e-prop-2)
  • tenant: Sam Tenant (lease: e2e-lease-1)
  • admin: System administrator

Configuration

Playwright is configured in playwright.config.ts:

  • Timeout: 60 seconds per test
  • Workers: 1 (local), 2 (CI)
  • Retries: 0 (local), 2 (CI)
  • Reporters: HTML, JSON, JUnit, List
  • Browsers: Chromium

CI/CD

Tests run automatically on:

  • Push to main/develop branches
  • Pull requests
  • Daily schedule (2 AM UTC)
  • Manual trigger

See .github/workflows/e2e-tests.yml for configuration.

Documentation

For comprehensive testing documentation, see E2E_TEST_GUIDE.md.

Topics covered:

  • Writing tests
  • Debugging techniques
  • Best practices
  • Troubleshooting
  • CI/CD integration
  • Performance optimization

Test Coverage

Current test coverage includes:

  • ✅ Authentication flows (login, logout, RBAC)
  • ✅ Landlord features (dashboard, properties, applications, leases, maintenance, payments)
  • ✅ Tenant features (applications, leases, maintenance, payments)
  • ✅ Error handling (validation, network errors, unauthorized access, session expiration)
  • ✅ Edge cases (empty data, special characters, concurrent users, data isolation)

Stats

  • Total Tests: 200+
  • Test Files: 13
  • Categories: 4 (Auth, Landlord, Tenant, Error Handling)
  • Browser: Chromium

Contributing

When adding new tests:

  1. Follow existing test structure and patterns
  2. Use descriptive test names
  3. Track console errors
  4. Use conditional assertions for missing features
  5. Group related tests with test.describe
  6. Update this README if adding new categories

Debugging Failed Tests

# Run failed tests only
npx playwright test --repeat-each=0

# Run with trace
npx playwright test --trace on

# View trace file
npx playwright show-trace test-results/trace.zip

Test artifacts are saved to:

  • Screenshots: test-results/
  • Videos: test-results/
  • Traces: playwright-trace/
  • HTML Report: playwright-report/