Files
Andrew Lai (AJ) 6d23b50251 Add playwright tests (#1082)
* Add playwright tests

* Update CI with playwright

* Fix types and add typecheck to pre-commit hook

* Fix tests

* - Fix double tooltip from appearing
- Update icon in ConductorInput to be vertically centered and fix the size and spacing of the icon
- Add snapshot tests

* Fix pnpm install error in CI

* Update CI so that if only ui-next files are changed, don't run backend e2e

* Update CI so that when
- ui-next files changed: ui-next-ci.yml (lint + mock e2e) and ui-next-integration-ci.yml (integration) are ran
- backend files changed: ui-next-integration-ci.yml (integration) and ci.yml (backend) are ran
- both ui-next and backend files changed: All tests run

* Improve CI caching

* Revert PostgresSchedulerConfiguration

* fix(scheduler): resolve RetryTemplate bean ambiguity in PostgresSchedulerConfiguration

Add @Qualifier("postgresRetryTemplate") to disambiguate RetryTemplate injection
and rename the test fixture bean to match, fixing the smoke test context failure.

* Add and improve tests
2026-05-13 16:50:54 -07:00

71 lines
1.9 KiB
YAML

# Docker Compose stack for Playwright UI integration tests.
#
# Uses the locally-built conductor:server image with Postgres as the backing
# store (no Elasticsearch required — Postgres full-text search is sufficient
# for the UI test workload).
#
# Build the server image once before running integration tests:
#
# docker build -t conductor:server -f docker/server/Dockerfile \
# --build-arg PREBUILT=false .
#
# Then start this stack (from the repo root):
#
# docker compose -f docker/docker-compose-ui-e2e.yaml up -d
#
# The Playwright global-setup script does this automatically when tests start.
# Container names are distinct from other compose stacks to allow both to
# run side-by-side without port or name conflicts.
services:
conductor-server:
image: conductor:server
build:
context: ../
dockerfile: docker/server/Dockerfile
container_name: conductor-server-ui-e2e
environment:
- CONFIG_PROP=config-postgres.properties
- conductor.app.ownerEmailMandatory=false
networks:
- internal
ports:
- "8000:8080"
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8080/health"]
interval: 10s
timeout: 10s
retries: 24 # up to 4 minutes for a cold JVM start
links:
- conductor-postgres:postgresdb
depends_on:
conductor-postgres:
condition: service_healthy
logging:
driver: "json-file"
options:
max-size: "10k"
max-file: "3"
conductor-postgres:
image: postgres:16
container_name: conductor-postgres-ui-e2e
environment:
- POSTGRES_USER=conductor
- POSTGRES_PASSWORD=conductor
networks:
- internal
healthcheck:
test: timeout 5 bash -c 'cat < /dev/null > /dev/tcp/localhost/5432'
interval: 5s
timeout: 5s
retries: 12
logging:
driver: "json-file"
options:
max-size: "1k"
max-file: "3"
networks:
internal: