services:
  node-docker:
    image: ${NAMESPACE}/node-docker:${TAG}
    volumes:
      - ./videos:/opt/selenium/assets
      - ./videos/config.toml:/opt/selenium/docker.toml
      - /var/run/docker.sock:/var/run/docker.sock
      - ./videos/Downloads:/home/seluser/Downloads
    dns:
      - 8.8.8.8
      - 8.8.4.4
    dns_search: selenium-grid.local
    extra_hosts:
      - "prod.domain.com:${HOST_IP}"
    depends_on:
      - selenium-hub
      - ftp_server
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_NODE_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS}
      - SE_OPTS=--enable-managed-downloads ${SELENIUM_ENABLE_MANAGED_DOWNLOADS}
      - SE_BROWSER_ARGS_DISABLE_DSHM=--disable-dev-shm-usage
      - SE_LOG_LEVEL=${LOG_LEVEL}
      - SE_VIDEO_EVENT_DRIVEN=${VIDEO_EVENT_DRIVEN}
      - SE_VIDEO_RECORD_STANDALONE=true
      - SE_VIDEO_FILE_NAME=${VIDEO_FILE_NAME}
      - SE_VIDEO_FILE_NAME_SUFFIX=${VIDEO_FILE_NAME_SUFFIX}
      - SE_UPLOAD_RETAIN_LOCAL_FILE=${SE_UPLOAD_RETAIN_LOCAL_FILE:-false}
      - SE_VIDEO_UPLOAD_ENABLED=true
      - SE_UPLOAD_DESTINATION_PREFIX=myftp://ftp/seluser
      - SE_RCLONE_CONFIG_MYFTP_TYPE=ftp
      - SE_RCLONE_CONFIG_MYFTP_HOST=ftp_server
      - SE_RCLONE_CONFIG_MYFTP_PORT=21
      - SE_RCLONE_CONFIG_MYFTP_USER=seluser
      - SE_RCLONE_CONFIG_MYFTP_PASS=KkK8RsUIba-MMTBUSnuYIdAKvcnFyLl2pdhQig
      - SE_RCLONE_CONFIG_MYFTP_FTP_CONCURRENCY=10

  selenium-hub:
    image: ${NAMESPACE}/hub:${TAG}
    user: ${UID}
    container_name: selenium-hub
    environment:
      - SE_LOG_LEVEL=${LOG_LEVEL}
      - SE_SESSION_REQUEST_TIMEOUT=${REQUEST_TIMEOUT}
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

  ftp_server:
    image: delfer/alpine-ftp-server:latest
    container_name: ftp_server
    command: ["/bin/sh", "-c", "/sbin/tini -- /bin/start_vsftpd.sh && tail -f /dev/null"]
    environment:
      - USERS=seluser|selenium.dev
      - MAX_PORT=21010
      - TINI_SUBREAPER=true
    volumes:
      - ./videos/upload:/ftp/seluser
    stop_grace_period: 30s

  the-internet:
    image: ndviet/the-internet:latest
    container_name: the-internet

  tests:
    image: docker-selenium-tests:latest
    build:
      context: ./
      dockerfile: ./Dockerfile
    depends_on:
      - selenium-hub
      - the-internet
    environment:
      - TEST_SITE=the-internet:5000
      - RUN_IN_DOCKER_COMPOSE=true
      - SELENIUM_GRID_HOST=selenium-hub
      - BINDING_VERSION=${BINDING_VERSION}
      - SELENIUM_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS}
      - TEST_DELAY_AFTER_TEST=${TEST_DELAY_AFTER_TEST}
      - HUB_CHECKS_INTERVAL=${HUB_CHECKS_INTERVAL}
      - TEST_CUSTOM_SPECIFIC_NAME=${TEST_CUSTOM_SPECIFIC_NAME}
    command: ["/bin/bash", "-c", "./bootstrap.sh ${NODE}"]