name: "Run e2e with Env"
description: "Run e2e tests with environment variables"

on:
  workflow_dispatch:
    inputs:
      url:
        description: 'Application URL'
        required: true

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  BASE_URL: ${{ inputs.url || secrets.PIPELINE_ENV_URL }}
  ADMIN_EMAIL: ${{ secrets.PIPELINE_ADMIN_USERNAME }}
  ADMIN_PASSWORD: ${{ secrets.PIPELINE_ADMIN_PASSWORD }}
  HR_USER: ${{ secrets.HR_USER }}
  HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
  SCREENSHOT_USERNAME: ${{ secrets.SCREENSHOT_USERNAME }}
  SCREENSHOT_PASSWORD: ${{ secrets.SCREENSHOT_PASSWORD}}
  PLAYWRIGHT_E2E_HOST: ${{ inputs.url || secrets.PIPELINE_ENV_URL }}/aca/#/
  GH_BUILD_NUMBER: ${{ github.run_id }}
  REPORT_PORTAL_URL: ${{ secrets.REPORT_PORTAL_URL }}
  REPORT_PORTAL_TOKEN: ${{ secrets.REPORT_PORTAL_TOKEN }}
  MAXINSTANCES: 2
  RETRY_COUNT: 2

jobs:

  build:
    name: 'build'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 2

      - name: node
        uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
          cache: 'npm'
      - uses: ./.github/actions/before-install
      - run: npm ci
      - run: npx nx build aca-playwright-shared
      - run: npm run build -- $BUILD_OPTS

      - name: dist cache
        if: ${{ success() }}
        uses: actions/cache/save@v4
        with:
          path: ./dist/content-ce
          key: cache-dist-${{ github.run_id }}

  e2es-playwright:
    needs: [build]
    name: 'E2E Playwright - ${{ matrix.e2e-suites.name }}'
    runs-on: ubuntu-24.04
    env:
      NODE_OPTIONS: --dns-result-order=ipv4first
    strategy:
      fail-fast: false
      matrix:
        e2e-suites:
          - name: "create-actions"
            id: 1
          - name: "folder-rules"
            id: 2
          - name: "viewer"
            id: 3
          - name: "authentication"
            id: 4
          - name: "navigation"
            id: 5
          - name: "special-permissions"
            id: 6
          - name: "pagination"
            id: 7
          - name: "list-views"
            id: 8
          - name: "share-action"
            id: 9
          - name: "copy-move-actions"
            id: 10
          - name: "library-actions"
            id: 11
          - name: "info-drawer"
            id: 12
          - name: "search"
            id: 13
          - name: "upload-download-actions"
            id: 14
          - name: "favorite-actions"
            id: 15
          - name: "delete-actions"
            id: 16
          - name: "edit-actions"
            id: 17
          - name: "smoke-test"
            id: 18
          - name: "folder-information-actions"
            id: 19
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 2

      - name: node
        uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
          cache: 'npm'

      - uses: ./.github/actions/before-install
      - run: npm ci

      - uses: actions/cache/restore@v4
        id: cache
        with:
          path: ./dist/content-ce
          key: cache-dist-${{ github.run_id }}

      - name: Before e2e
        uses: ./.github/actions/before-e2e

      - name: Before playwright
        shell: bash
        run: npx playwright install chromium

      - uses: ./.github/actions/run-e2e-playwright
        with:
          options: "${{ matrix.e2e-suites.name }}"
          artifact-name: ${{ matrix.e2e-suites.name }}
          test-runner: playwright
      - uses: ./.github/actions/after-e2e
