name: (CI) Console tests

on:
  workflow_call:
    inputs:
      github-sha:
        required: true
        type: string

jobs:
  run-tests:
    name: run-tests
    runs-on: console-test
    timeout-minutes: 20
    steps:
      #----------------------------------------------
      #       check-out frontend-monorepo
      #----------------------------------------------
      - name: Checkout console test repo
        uses: actions/checkout@v3
        with:
          ref: ${{ inputs.github-sha }}
      #----------------------------------------------
      #       cache node modules
      #----------------------------------------------
      - name: Cache node modules
        id: cache
        uses: actions/cache@v3
        with:
          path: node_modules
          key: ${{ runner.os }}-cache-node-modules-${{ hashFiles('yarn.lock') }}
          # comment out "restore-keys" if you need to rebuild yarn from 0
          restore-keys: |
            ${{ runner.os }}-cache-node-modules-
      #----------------------------------------------
      #       install deps if cache missing
      #----------------------------------------------
      - name: yarn install
        if: steps.cache.outputs.cache-hit != 'true'
        run: yarn install --pure-lockfile
      #----------------------------------------------
      #       build trading
      #----------------------------------------------
      - name: Build affected spec
        run: |
          yarn env-cmd -f ./apps/trading/.env.stagnet1 yarn nx export trading
      #----------------------------------------------
      #       run trading server
      #----------------------------------------------
      - name: Run trading server
        run: |
          docker run -d -p 80:4200 -v $PWD/docker/nginx.conf:/etc/nginx/conf.d/default.conf -v $PWD/dist/apps/trading/exported:/usr/share/nginx/html nginx:1.23-alpine@sha256:6318314189b40e73145a48060bff4783a116c34cc7241532d0d94198fb2c9629
          sleep 5
          docker ps
      #----------------------------------------------
      #       check if container persists between runs
      #----------------------------------------------
      - name: Check server
        run: |
          docker ps
      #----------------------------------------------
      #       check-out tests repo
      #----------------------------------------------
      - name: Checkout console test repo
        uses: actions/checkout@v3
        with:
          repository: vegaprotocol/console-test
          path: './console-test'
      #----------------------------------------------
      # install dependencies if cache does not exist
      #----------------------------------------------
      - name: Install dependencies
        working-directory: ./console-test
        if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
        run: poetry install --no-interaction --no-root
      #----------------------------------------------
      # install vega binaries
      #----------------------------------------------
      - name: Install vega binaries
        working-directory: ./console-test
        run: poetry run python -m vega_sim.tools.load_binaries --force
      #----------------------------------------------
      # install playwright
      #----------------------------------------------
      - name: install playwright
        run: poetry run playwright install
        working-directory: ./console-test
      #----------------------------------------------
      # run tests
      #----------------------------------------------
      - name: Run tests
        working-directory: ./console-test
        run: poetry run pytest -v -s --numprocesses 2 --dist loadfile --durations=20
      - name: Check files
        run: |
          ls -al .
          ls -al console-test
      #----------------------------------------------
      # upload traces
      #----------------------------------------------
      - name: Upload Playwright Trace
        uses: actions/upload-artifact@v3
        if: always()
        with:
          name: playwright-trace
          path: ./traces/
          retention-days: 15
