name: Browser Tests

on:
  pull_request:
  push:
    branches-ignore: "dependabot/**"
  # Once a week every Monday
  schedule:
    - cron: "42 1 * * 1"

permissions:
  contents: read

env:
  NODE_VERSION: 22.x

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    name: |
      ${{ matrix.BROWSER }} | ${{ matrix.CONFIGS.name }}
    strategy:
      fail-fast: false
      matrix:
        BROWSER: [chrome, firefox]
        CONFIGS:
          - config: jtr-git.yml
            name: jQuery git
          - config: jtr-stable.yml
            name: jQuery stable

    steps:
      - name: Checkout
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

      - name: Use Node.js ${{ env.NODE_VERSION }}
        uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: npm
          cache-dependency-path: '**/package-lock.json'

      - name: Install npm dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Test
        run: |
          npm run test:unit -- \
            --headless -b ${{ matrix.BROWSER }} \
            -c ${{ matrix.CONFIGS.config }}

  edge:
    runs-on: windows-latest
    name: |
      edge | ${{ matrix.CONFIGS.name }}
    strategy:
      fail-fast: false
      matrix:
        CONFIGS:
          - config: jtr-git.yml
            name: jQuery git
          - config: jtr-stable.yml
            name: jQuery stable
    steps:
      - name: Checkout
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

      - name: Use Node.js ${{ env.NODE_VERSION }}
        uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: npm
          cache-dependency-path: '**/package-lock.json'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Test
        run: npm run test:unit -- --headless -b edge -c ${{ matrix.CONFIGS.config }}

  safari:
    runs-on: macos-latest
    name: |
      safari | ${{ matrix.CONFIGS.name }}
    strategy:
      fail-fast: false
      matrix:
        CONFIGS:
          - config: jtr-git.yml
            name: jQuery git
          - config: jtr-stable.yml
            name: jQuery stable
    steps:
      - name: Checkout
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

      - name: Use Node.js ${{ env.NODE_VERSION }}
        uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: npm
          cache-dependency-path: '**/package-lock.json'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Test
        run: npm run test:unit -- -b safari -c ${{ matrix.CONFIGS.config }}
