diff --git a/Dockerfile.e2e.dev.fast b/Dockerfile.e2e.dev.fast new file mode 100644 index 000000000..e51df984f --- /dev/null +++ b/Dockerfile.e2e.dev.fast @@ -0,0 +1,14 @@ +FROM node:22-bookworm + +# Install Angular CLI globally and curl for healthcheck +RUN npm install -g @angular/cli && apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +# Default port (can be overridden via environment variable) +ENV APP_PORT=4242 + +EXPOSE ${APP_PORT} + +# Start Angular dev server with dynamic port +CMD ["sh", "-c", "ng serve --port ${APP_PORT} --host 0.0.0.0"] diff --git a/docker-compose.e2e.fast.yaml b/docker-compose.e2e.fast.yaml new file mode 100644 index 000000000..cb2296990 --- /dev/null +++ b/docker-compose.e2e.fast.yaml @@ -0,0 +1,50 @@ +# Docker Compose for fast local E2E tests +# Uses volume mounts instead of copying source/installing deps +# Requires: npm install to be run locally first +services: + # Angular development server for E2E tests + app: + build: + context: . + dockerfile: Dockerfile.e2e.dev.fast + ports: + - '${APP_PORT:-4242}:${APP_PORT:-4242}' + environment: + - APP_PORT=${APP_PORT:-4242} + volumes: + - .:/app + - /app/.angular # Exclude .angular cache (use container's) + healthcheck: + test: ['CMD', 'curl', '-sf', 'http://localhost:${APP_PORT:-4242}'] + interval: 10s + timeout: 5s + retries: 30 + start_period: 120s + + # WebDAV sync server (for sync tests) + webdav: + image: hacdias/webdav:latest + ports: + - '${WEBDAV_PORT:-2345}:${WEBDAV_PORT:-2345}' + environment: + - PORT=${WEBDAV_PORT:-2345} + volumes: + - ./webdav.yaml:/config.yml:ro + - webdav_data:/data + healthcheck: + test: + [ + 'CMD', + 'wget', + '--quiet', + '--tries=1', + '--spider', + 'http://localhost:${WEBDAV_PORT:-2345}/', + ] + interval: 10s + timeout: 5s + retries: 3 + start_period: 10s + +volumes: + webdav_data: diff --git a/docker-compose.e2e.yaml b/docker-compose.e2e.yaml index 10cd7b2c2..650eb7402 100644 --- a/docker-compose.e2e.yaml +++ b/docker-compose.e2e.yaml @@ -1,16 +1,23 @@ # Docker Compose override for E2E tests # Note: For supersync tests, use both files: -f docker-compose.yaml -f docker-compose.e2e.yaml # This file is standalone for app/webdav tests only +# +# FAST LOCAL ALTERNATIVE: Run `ng serve` locally + `npm run e2e:webdav` (only webdav in Docker) services: # Angular development server for E2E tests + # Uses volume mount to avoid copying/rebuilding node_modules + # Requires: npm install to be run locally first app: build: context: . - dockerfile: Dockerfile.e2e.dev + dockerfile: Dockerfile.e2e.dev.fast ports: - '${APP_PORT:-4242}:${APP_PORT:-4242}' environment: - APP_PORT=${APP_PORT:-4242} + volumes: + - .:/app + - /app/.angular # Exclude .angular cache (use container's) healthcheck: test: ['CMD', 'curl', '-sf', 'http://localhost:${APP_PORT:-4242}'] interval: 10s