services: # Main instance: security features ENABLED (permissive) pinchtab: build: context: ../.. dockerfile: Dockerfile environment: PINCHTAB_CONFIG: /config/pinchtab.json volumes: - ./config/pinchtab.json:/config/pinchtab.json:ro - ./fixtures/test-extension:/extensions/test-extension - ./fixtures/test-extension-api:/extensions/test-extension-api ports: - "9999:9999" # Chrome needs more shared memory in Docker shm_size: '2gb' healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:9999/health"] interval: 3s timeout: 10s retries: 20 start_period: 15s # Secure instance: security features DISABLED (restrictive) pinchtab-secure: build: context: ../.. dockerfile: Dockerfile environment: PINCHTAB_CONFIG: /config/pinchtab-secure.json volumes: - ./config/pinchtab-secure.json:/config/pinchtab-secure.json:ro ports: - "9998:9999" shm_size: '2gb' healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:9999/health"] interval: 3s timeout: 10s retries: 20 start_period: 15s # Lite engine instance: no Chrome, DOM-only (bridge mode) pinchtab-lite: build: context: ../.. dockerfile: Dockerfile environment: PINCHTAB_CONFIG: /config/pinchtab-lite.json volumes: - ./config/pinchtab-lite.json:/config/pinchtab-lite.json:ro ports: - "9997:9999" command: ["/usr/local/bin/pinchtab", "bridge"] healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:9999/health"] interval: 3s timeout: 10s retries: 20 start_period: 15s fixtures: image: nginx:alpine volumes: - ./fixtures:/usr/share/nginx/html:ro healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:80/"] interval: 2s timeout: 5s retries: 5 runner: build: context: ./runner depends_on: pinchtab: condition: service_healthy pinchtab-secure: condition: service_healthy pinchtab-lite: condition: service_healthy fixtures: condition: service_healthy environment: - E2E_SERVER=http://pinchtab:9999 - E2E_SECURE_SERVER=http://pinchtab-secure:9999 - E2E_LITE_SERVER=http://pinchtab-lite:9999 - FIXTURES_URL=http://fixtures:80 volumes: - ./scenarios:/scenarios:ro - ./scenarios-recent:/scenarios-recent:ro - ./results:/results command: ["/scenarios/run-all.sh"]