From 39aea340264eff588ce672118166b97d95155661 Mon Sep 17 00:00:00 2001 From: Albert Date: Mon, 10 Nov 2025 13:52:05 +0000 Subject: [PATCH] feat: Integrate Playwright into docker-compose MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Playwright service to docker-compose.yml for easier test execution and better integration with existing database services. ## Changes - Add `playwright` service to docker-compose.yml: - Uses official Playwright image (mcr.microsoft.com/playwright:v1.49.1-noble) - Runs as non-root user (pwuser) for security - Uses host networking to access dev server on localhost:3000 - Loads environment variables from .env - Uses `profiles: [test]` to keep it optional - Mounts node_modules volume to prevent permission issues - Update documentation in AGENTS.md: - Replace standalone Docker commands with docker-compose usage - Document two usage patterns: `docker compose run` and `--profile test` - Explain benefits of integrated setup ## Usage ```bash # Start database services docker compose up -d # Start dev server pnpm dev # Run Playwright tests in Docker docker compose run --rm playwright ``` Or with profiles: ```bash # Run tests one-off docker compose --profile test run --rm playwright ``` ## Benefits - Unified infrastructure setup (database + tests) - No need for separate Dockerfile build step - Easier for new developers to run tests - Consistent with existing docker-compose workflow 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- AGENTS.md | 36 ++++++++++++++++++++++++------------ docker-compose.yml | 23 +++++++++++++++++++++++ 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index b0cbba4..18d269b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -123,28 +123,40 @@ These credentials should be used for all automated testing (Magnitude, Playwrigh **Playwright Docker Setup**: -For consistent testing environments across users and CI/CD, use the Playwright Docker image: +Playwright is integrated into docker-compose for consistent testing environments: -1. **Build the Playwright Docker image**: +1. **Run Playwright tests with docker-compose**: ```bash - docker build -f Dockerfile.playwright -t ponderants-playwright . + # Start database services + docker compose up -d + + # Start Next.js dev server + pnpm dev + + # Run Playwright tests in Docker (in another terminal) + docker compose run --rm playwright ``` -2. **Run Playwright tests in Docker**: +2. **Alternative: Use the 'test' profile**: ```bash - docker run --rm \ - --network=host \ - -v $(pwd):/home/pwuser/app \ - -e TEST_BLUESKY_HANDLE \ - -e TEST_BLUESKY_PASSWORD \ - ponderants-playwright + # Start all services including Playwright + docker compose --profile test up + + # Or run tests one-off without keeping services up + docker compose --profile test run --rm playwright ``` 3. **Benefits**: - Non-root user execution (pwuser) for security - Consistent browser versions across environments - - Isolated test environment - - Ready for CI/CD integration + - Integrated with existing docker-compose setup + - Uses host networking to access dev server on localhost:3000 + - Node modules volume prevents permission issues + +4. **Configuration**: + - Environment variables loaded from .env file + - Uses `network_mode: host` to access dev server + - Runs with `profiles: [test]` to keep it optional **CI/CD with Gitea Actions**: diff --git a/docker-compose.yml b/docker-compose.yml index 5130b92..aac2777 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,3 +32,26 @@ services: - "8080:8080" depends_on: - surrealdb + + playwright: + image: mcr.microsoft.com/playwright:v1.49.1-noble + working_dir: /home/pwuser/app + user: pwuser + network_mode: host + volumes: + - .:/home/pwuser/app + - /home/pwuser/app/node_modules + environment: + - TEST_BLUESKY_HANDLE=${TEST_BLUESKY_HANDLE} + - TEST_BLUESKY_PASSWORD=${TEST_BLUESKY_PASSWORD} + - PLAYWRIGHT_BASE_URL=${PLAYWRIGHT_BASE_URL:-http://localhost:3000} + command: > + sh -c " + npm install -g pnpm && + pnpm install --frozen-lockfile && + npx playwright test + " + depends_on: + - surrealdb + profiles: + - test