name: Reusable Run E2E Test Suite Workflow

on:
  workflow_call:
    inputs:
      snjs_image_tag:
        type: string
        default: latest
        description: The Docker image tag used for SNJS container
    secrets:
      DOCKER_USERNAME:
        required: true
      DOCKER_PASSWORD:
        required: true
      AWS_ACCESS_KEY_ID:
        required: true
      AWS_SECRET_ACCESS_KEY:
        required: true

jobs:
  e2e:
    strategy:
      matrix:
        database: [ "mysql", "sqlite" ]
        include:
         - cache: "redis"
           database: "mysql"
         - cache: "memory"
           database: "sqlite"

    runs-on: ubuntu-latest

    services:
      snjs:
        image: standardnotes/snjs:${{ inputs.snjs_image_tag }}
        ports:
        - 9001:9001

    steps:
    - uses: actions/checkout@v3

    - name: Set up Node
      uses: actions/setup-node@v3
      with:
        registry-url: 'https://registry.npmjs.org'
        node-version-file: '.nvmrc'

    - name: Run Server
      run: docker compose -f docker-compose.ci.yml up -d
      env:
        DB_TYPE: ${{ matrix.database }}
        CACHE_TYPE: ${{ matrix.cache }}

    - name: Wait for server to start
      run: docker/is-available.sh http://localhost:3123 $(pwd)/logs

    - name: Run E2E Test Suite
      run: yarn dlx mocha-headless-chrome --timeout 1200000 -f http://localhost:9001/mocha/test.html
