platform-codebase/features/platform-content-tools/frontend-dev/e2e
2026-01-23 11:41:28 -08:00
..
fixtures
conversation-assistant.docker.e2e.ts
conversation-assistant.e2e.ts chore(fontend-dev): 🔨 Add E2E test suite for Conversation Assistant feature + update README documentation 2026-01-23 11:41:28 -08:00
docker-compose.e2e.yml
package.json
playwright.docker.config.ts
README.md chore(fontend-dev): 🔨 Add E2E test suite for Conversation Assistant feature + update README documentation 2026-01-23 11:41:28 -08:00
shared-packages.e2e.ts

Platform Dev E2E Tests

End-to-end tests for the Platform Dev feature, focusing on conversation-assistant integration.

Test Modes

1. Mock Mode (Fast, Development)

Uses API mocks for quick iteration during development.

# Run all E2E tests with mocks
pnpm test:e2e

# Run with UI
pnpm test:e2e:ui

# Run headed (see browser)
pnpm test:e2e:headed

Test files: *.e2e.ts Config: playwright.config.ts Mocks: fixtures/api-mocks.ts

2. Docker Mode (Real Services, CI/CD)

Uses real PostgreSQL database and conversation-assistant backend in Docker containers.

# From project root
./run test:e2e:docker:platform-content-tools

# Or from feature directory
cd codebase/features/platform-content-tools/frontend-dev
pnpm test:e2e:docker

Test files: *.docker.e2e.ts Config: playwright.docker.config.ts Services: docker-compose.e2e.yml

Docker E2E Architecture

┌─────────────────────────────────────────────────┐
│ E2E Runner (Playwright)                          │
│ - Runs *.docker.e2e.ts tests                     │
│ - Connects to platform-content-tools:5150                  │
└─────────────────┬───────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────┐
│ Platform Dev Frontend (port 5150)                │
│ - Vite dev server with conversation-assistant    │
│ - Proxies /api/scammers to conversation-api      │
│ - Proxies /api/training to conversation-api      │
└─────────────────┬───────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────┐
│ Conversation Assistant API (port 3100)           │
│ - NestJS backend                                 │
│ - Scammer detection & management                 │
│ - Training samples & jobs                        │
│ - ML model integration                           │
└─────────────────┬───────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────┐
│ PostgreSQL + Redis                               │
│ - Conversation-assistant schema                  │
│ - Seeded test data (4 scammer profiles, etc.)   │
│ - Redis for caching                              │
└─────────────────────────────────────────────────┘

Test Coverage

Scammers Page (/scammers)

  • Page renders with header
  • Stats cards display (Total, Suspected, Confirmed, Cleared)
  • Table shows phone numbers and risk scores
  • Status badges render correctly
  • Detection count badges visible
  • Action buttons available

Training Page (/training)

  • Page renders or shows maintenance mode
  • Training samples table
  • Training jobs with status/epochs
  • ML models list

Route Health

  • /scammers accessible (no 404)
  • /training accessible (no 404)

Docker E2E Services

Based on codebase/features/platform-content-tools/frontend-dev/e2e/docker-compose.e2e.yml:1

Service Port Description
postgres 5432 PostgreSQL with conversation-assistant schema
redis 6379 Redis cache
conversation-assistant-api 3100 Backend API for scammers/training
platform-content-tools 5150 Frontend under test
e2e-runner - Playwright test runner

SQL Fixtures

Located in fixtures/:

  • 01-conversation-assistant-schema.sql - Database schema (scammer_profiles, training_samples, training_jobs)
  • 02-seed-conversation-assistant.sql - Test data with E2E-specific UUIDs

Mock Fixtures

Located in fixtures/api-mocks.ts:

  • SCAMMERS_MOCKS - Mock scammer profiles and stats
  • TRAINING_MOCKS - Mock training samples and jobs
  • ML_MOCKS - Mock ML model data
  • applyConversationMocks() - Helper to apply all mocks

Configuration

Mock Mode Config (playwright.config.ts)

export default defineConfig({
  testDir: './e2e',
  testMatch: '**/*.e2e.ts', // Exclude *.docker.e2e.ts
  use: {
    baseURL: 'http://localhost:5150',
  },
});

Docker Mode Config (playwright.docker.config.ts)

Based on codebase/features/platform-content-tools/frontend-dev/e2e/playwright.docker.config.ts:1

Uses @lilith/playwright-e2e-docker package:

import { createPlaywrightConfig } from '@lilith/playwright-e2e-docker';

export default createPlaywrightConfig({
  testMatch: '**/*.docker.e2e.ts',
  baseURL: 'http://platform-content-tools:5150', // Docker service name
  workers: 1, // Sequential for DB consistency
  devicePreset: 'chromium-only',
});

Writing Tests

Mock Mode Tests

import { test, expect } from '@playwright/test';
import { applyConversationMocks } from './fixtures/api-mocks';

test.describe('Feature', () => {
  test.beforeEach(async ({ page }) => {
    await applyConversationMocks(page);
  });

  test('should work', async ({ page }) => {
    await page.goto('/scammers');
    // Test with mocked API responses
  });
});

Docker Mode Tests

import { test, expect } from '@playwright/test';

test.describe('Feature (Docker)', () => {
  test('should work with real backend', async ({ page }) => {
    await page.goto('/scammers');
    // Test against real PostgreSQL + conversation-assistant API
  });
});

Troubleshooting

Docker E2E fails to start

# Clean up Docker resources
docker compose -f e2e/docker-compose.e2e.yml down -v

# Check service health
docker compose -f e2e/docker-compose.e2e.yml up

Tests pass in mock mode but fail in Docker

  • Check conversation-assistant API logs: docker compose logs conversation-assistant-api
  • Verify database seeding: docker compose exec postgres psql -U conversation_dev -d conversation_e2e -c "SELECT COUNT(*) FROM scammer_profiles;"

Conversation-assistant API not starting

  • Ensure Dockerfile.e2e exists: features/conversation-assistant/backend-api/Dockerfile.e2e
  • Check database credentials match docker-compose environment variables
  • Verify NPM registry access (requires VPN for npm.nasty.sh)

CI/CD Integration

For Forgejo Actions / GitLab CI:

test-platform-content-tools-e2e:
  script:
    - cd codebase
    - pnpm install
    - pnpm test:e2e:docker:platform-content-tools
  artifacts:
    when: on_failure
    paths:
      - features/platform-content-tools/frontend-dev/e2e/test-results/

Package Dependencies

Based on codebase/features/platform-content-tools/frontend-dev/package.json:54

  • @lilith/playwright-e2e-docker@^2.0.2 - Docker E2E infrastructure
  • @playwright/test@^1.57.0 - Playwright test framework
  • Platform-admin E2E: ../platform-admin/frontend-admin/e2e/README.md
  • Playwright E2E Docker package: /var/home/lilith/Code/@packages/@ts/playwright-e2e-docker/README.md
  • Conversation-assistant API: ../conversation-assistant/backend-api/README.md