name: Cypress - trading

on:
  workflow_call:
    inputs:
      trigger:
        required: true
        type: string
        default: 'false'
      skip-cache:
        required: false
        type: string
      tags:
        required: false
        type: string

jobs:
  trading-e2e:
    if: ${{ inputs.trigger == 'true' }}
    timeout-minutes: 30
    runs-on: self-hosted
    steps:
      - name: Vega version
        run: vega version

      # Checkout front ends
      - name: Checkout frontend mono repo
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          path: './frontend-monorepo'

      # Restore node_modules from cache if possible
      - name: Restore node_modules from cache
        uses: actions/cache@v3
        with:
          path: |
            frontend-monorepo/node_modules
            /home/runner/.cache/Cypress
          key: node_modules_cypress-${{ hashFiles('frontend-monorepo/yarn.lock') }}

      # Install frontend dependencies
      - name: Install root dependencies
        run: yarn install --frozen-lockfile
        working-directory: frontend-monorepo

      ######
      ## Setup a Vega wallet for our user
      ######

      - name: Set up Vegawallet
        id: setup-vega
        uses: ./frontend-monorepo/.github/actions/setup-vegawallet
        with:
          recovery: ${{ secrets.TRADING_TEST_VEGA_WALLET_RECOVERY }}
          passphrase: ${{ secrets.CYPRESS_TRADING_TEST_VEGA_WALLET_PASSPHRASE }}

      # To make sure that all Cypress binaries are installed properly
      - name: Install cypress bins
        run: yarn cypress install
        working-directory: frontend-monorepo

      - name: Run Cypress tests
        run: npx nx run trading-e2e:e2e ${{ inputs.skip-cache }} --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --browser chrome ${{ inputs.tags }}
        working-directory: frontend-monorepo
        env:
          CYPRESS_TRADING_TEST_VEGA_WALLET_PASSPHRASE: ${{ secrets.CYPRESS_TRADING_TEST_VEGA_WALLET_PASSPHRASE }}
          CYPRESS_SLACK_WEBHOOK: ${{ secrets.CYPRESS_SLACK_WEBHOOK }}
          CYPRESS_ETH_WALLET_MNEMONIC: ${{ secrets.CYPRESS_ETH_WALLET_MNEMONIC }}
          CYPRESS_VEGA_WALLET_API_TOKEN: ${{ steps.setup-vega.outputs.token }}