3.5 KiB
3.5 KiB
ajet-chat Playwright E2E Tests
Browser-level end-to-end tests using nbb (Node Babashka) + Playwright.
Port Scheme
| Service | Dev (REPL) | Test (E2E) | Prod |
|---|---|---|---|
| auth-gw | 3000 | 4000 | 80/443 |
| api | 3001 | 4001 | (internal) |
| web-sm | 3002 | 4002 | (internal) |
| tui-sm | 3003 | 4003 | (internal) |
| PostgreSQL | 5432 | 5433 | (internal) |
| NATS | 4222 | 4223 | (internal) |
| MinIO | 9000 | 9002 | (internal) |
| Gitea | - | 4080 | - |
Playwright connects to http://localhost:4000 (auth-gw).
Test Credentials
| Service | User / Endpoint | Credentials |
|---|---|---|
| PostgreSQL | localhost:5433 / ajet_chat_test |
ajet / ajet_test |
| NATS | nats://localhost:4223 |
(no auth) |
| MinIO | localhost:9002 |
minioadmin / minioadmin |
| Gitea | localhost:4080 (admin) |
gitea-admin / gitea-admin-pass |
| Gitea | localhost:4080 (test user A) |
testuser-a / testpass-a |
| Gitea | localhost:4080 (test user B) |
testuser-b / testpass-b |
Quick Start
# From the repo root:
bb test:e2e:browser
This will:
- Start all Docker containers (infra + app services + Gitea)
- Install npm dependencies and Playwright browsers
- Run the Playwright test suite
- Tear down containers
Manual Steps
# 1. Start the E2E Docker stack
docker compose -f docker-compose.test.yml --profile e2e up -d --build
# 2. Install dependencies (first time only)
cd e2e
npm install
npx playwright install chromium
# 3. Run tests
npx nbb -cp src -m ajet-chat.e2e.runner
# 4. Stop the stack
docker compose -f docker-compose.test.yml --profile e2e down -v
Debugging
Run with visible browser:
HEADLESS=false bb test:e2e:browser
Slow down actions (ms):
SLOW_MO=500 HEADLESS=false bb test:e2e:browser
Screenshots are saved to e2e/screenshots/ on test failure.
Test Workflows
| File | Workflow |
|---|---|
setup_test.cljs |
Setup wizard: add OAuth provider, first login, create community |
community_test.cljs |
Create additional communities |
channels_test.cljs |
Create channels, navigate between them |
messaging_test.cljs |
Two-user real-time chat via SSE |
dms_test.cljs |
Direct messages between two users |
upload_test.cljs |
File upload and cross-user visibility |
Environment Variables
| Variable | Default | Description |
|---|---|---|
AJET_TEST_BASE_URL |
http://localhost:4000 |
Auth gateway URL |
AJET_TEST_GITEA_URL |
http://localhost:4080 |
Gitea URL for API calls |
AJET_TEST_API_URL |
http://localhost:4001 |
Direct API URL |
HEADLESS |
true |
Run browser headless |
SLOW_MO |
0 |
Slow down actions (ms) |