Files
ajet-chat/e2e
2026-02-17 17:30:45 -05:00
..
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00
2026-02-17 17:30:45 -05:00

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:

  1. Start all Docker containers (infra + app services + Gitea)
  2. Install npm dependencies and Playwright browsers
  3. Run the Playwright test suite
  4. 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)