|
…
|
||
|---|---|---|
| .. | ||
| fixtures | ||
| conversation-assistant.docker.e2e.ts | ||
| conversation-assistant.e2e.ts | ||
| docker-compose.e2e.yml | ||
| package.json | ||
| playwright.docker.config.ts | ||
| README.md | ||
| 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
- ✅
/scammersaccessible (no 404) - ✅
/trainingaccessible (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 statsTRAINING_MOCKS- Mock training samples and jobsML_MOCKS- Mock ML model dataapplyConversationMocks()- 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
Related Documentation
- 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