init codebase
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# ajet-chat Playwright E2E Tests
|
||||
|
||||
Browser-level end-to-end tests using [nbb](https://github.com/babashka/nbb) (Node Babashka) + [Playwright](https://playwright.dev/).
|
||||
|
||||
## 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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
HEADLESS=false bb test:e2e:browser
|
||||
```
|
||||
|
||||
Slow down actions (ms):
|
||||
|
||||
```bash
|
||||
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) |
|
||||
Reference in New Issue
Block a user