🏡 index : quine-global/webdriverio.git

name: Component Tests

on:
  workflow_call:
    # Make this a reusable workflow, no value needed
    # https://docs.github.com/en/actions/using-workflows/reusing-workflows

jobs:
  check:
    name: Component Test (${{ matrix.os }}.${{ matrix.node }})
    permissions:
      contents: read
      actions: write
    strategy:
      fail-fast: false
      matrix:
        node: ['18', '20', '22']
        os: [
          # 'ubuntu-latest',
          'windows-latest',
          'macos-latest'
        ]
    runs-on: ${{ matrix.os }}
    steps:
      - name: ⬇️ Checkout Code
        uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0

      - name: 🧑‍🔧 Get Core Dependencies
        uses: ./.github/workflows/actions/get-core-dependencies

      - name: 🐢 Setup Node ${{ matrix.node }}
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
        with:
          node-version: ${{ matrix.node }}
          cache: 'pnpm'

      - name: Download Build Archive
        uses: ./.github/workflows/actions/download-archive
        with:
          name: webdriverio
          path: .
          filename: webdriverio-build.zip

      - name: Component Tests
        run: pnpm run test:component
        # component testing on Windows is currently broken
        # https://github.com/webdriverio/webdriverio/actions/runs/9075112951/job/24935302330#step:7:30
        if: matrix.os != 'windows-latest'
        shell: bash

      - name: Check Git Context
        if: matrix.os != 'windows-latest'
        uses: ./.github/workflows/actions/check-git-context

      - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
        if: failure()
        with:
          name: component-tests-${{ matrix.os }}-${{ matrix.node }}-logs
          path: e2e/browser-runner/logs