services:
  # Base image for ecs-runner (playwright-tests). Build this locally when
  # changing base inputs (lockfile, package.json, Dockerfile base stage);
  # otherwise the prebuilt image is pulled from ECR (requires ECR auth)
  ecs-runner-base:
    build:
      context: .
      dockerfile: Dockerfile
      target: ecs-runner-base
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/playwright-tests-base:${BASE_TAG:-latest}
  playwright-tests:
    build:
      context: .
      dockerfile: Dockerfile
      target: ecs-runner
      args:
        BASE_TAG: ${BASE_TAG:-latest}
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/playwright-tests:latest
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
      - AWS_REGION=us-east-1
      - GITHUB_TOKEN=${GITHUB_TOKEN}
    volumes:
      - type: bind
        source: ./tests-results
        target: /app/tests-results
      - type: bind
        source: ./playwright-report
        target: /app/playwright-report
  framework-runner:
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/playwright-framework-runner:${FRAMEWORK_RUNNER_TAG:-latest}
    build:
      context: .
      dockerfile: Dockerfile
      target: framework-runner
    volumes:
      - type: bind
        source: ./playwright-report
        target: /playwright-report
      - type: bind
        source: ./report/
        target: /report/
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
      - AWS_REGION=us-east-1
      - JOB_NAME=${JOB_NAME}
      - BUILD_NUMBER=${BUILD_NUMBER}
      - BUILD_ID=${BUILD_ID}
      - FRAMEWORK_ENV=${FRAMEWORK_ENV}
      - TAGS=${TAGS}
      - RUNTIME_ENV=${RUNTIME_ENV}
      - CONFIG_ENV=${CONFIG_ENV}
      - JENKINS_URL=${JENKINS_URL}
      - BUILD_TAG=${BUILD_TAG}
      - BUILD_URL=${BUILD_URL}
      - WORKSPACE=${WORKSPACE}
      - JOB_URL=${JOB_URL}
      - GIT_URL=${GIT_URL}
      - GIT_COMMIT=${GIT_COMMIT}
      - GIT_BRANCH=${GIT_BRANCH}
      - GIT_COMMIT_AUTHOR_NAME=${GIT_COMMIT_AUTHOR_NAME}
      - GIT_COMMIT_AUTHOR_EMAIL=${GIT_COMMIT_AUTHOR_EMAIL}
      - GIT_COMMIT_MESSAGE=${GIT_COMMIT_MESSAGE}
      - DD_API_KEY=${DD_API_KEY:-}
      - REPORT_SUFFIX=${REPORT_SUFFIX:-}
      - ADDITIONAL_ENV_VARS=${ADDITIONAL_ENV_VARS}
      - PNPM_SETUP_SCRIPT_NAME=${PNPM_SETUP_SCRIPT_NAME}
  # Base image for lambda-test-runner. Build this locally when changing base
  # inputs (lockfile, package.json, Dockerfile base stage); otherwise the
  # prebuilt image is pulled from ECR (requires ECR auth)
  lambda-test-runner-base:
    build:
      context: .
      dockerfile: Dockerfile
      target: lambda-test-runner-base
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/lambda-test-runner-base:${BASE_TAG:-latest}
  lambda-test-runner:
    build:
      context: .
      dockerfile: Dockerfile
      target: lambda-test-runner
      args:
        BASE_TAG: ${BASE_TAG:-latest}
    ports:
      - "9000:8080"
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
      - AWS_REGION=us-east-1
      - FRAMEWORK_ENV=${FRAMEWORK_ENV}
      - DD_API_KEY=${DD_API_KEY:-}
