name: Selenium

on:
  pull_request:
    types: [ready_for_review, review_requested]

jobs:
  build:
    runs-on: ubuntu-latest

    # Service containers to run with `container-job`
    services:
      # Label used to access the service container
      postgres:
        # Docker Hub image
        image: postgres:11
        ports:
          - 5432:5432
        # Set health checks to wait until postgres has started
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        env:
          POSTGRES_DB: dh_test
          POSTGRES_USER: dhub
          POSTGRES_PASSWORD: ereuse

    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.9]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}
        cache: 'pip'

    - name: Install dependencies
      run: |
        sudo apt-get update -qy
        sudo apt-get -y install postgresql-client --no-install-recommends
        python -m pip install --upgrade pip
        pip install -r requirements-dev.txt
        pip install -r requirements.txt
        pip install -e .
        mkdir bin
        wget https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-linux64.tar.gz
        tar xf geckodriver-v0.30.0-linux64.tar.gz -C bin/

    - name: Prepare database
      env:
        POSTGRES_DB: dh_test
        POSTGRES_USER: dhub
        POSTGRES_PASSWORD: ereuse
      run: |
        export PGPASSWORD=$POSTGRES_PASSWORD
        psql -h "localhost" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "CREATE EXTENSION pgcrypto SCHEMA public;"
        psql -h "localhost" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "CREATE EXTENSION ltree SCHEMA public;"
        psql -h "localhost" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "CREATE EXTENSION citext SCHEMA public;"
        psql -h "localhost" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "CREATE EXTENSION pg_trgm SCHEMA public;"

    - name: Selenium tests
      env:
        SECRET_KEY: 'f00046306835001b55c230092e3a7990485beda0bc3bf732088d1ba1b5b74110e22e3f9ec3a24890272554b37d4'
        DB_DATABASE: dh_test
        FLASK_APP: examples/app.py
        dhi: dbtest
      run: |
        alembic -x inventory=dbtest upgrade head
        dh dummy --yes
        flask run & pytest tests/test_selenium.py