# Github actions workflow name
name: CI

# Triggers the workflow on push or pull request events
on:
  push:
    branches: [main, master]
  pull_request:
    branches: [main, master]

jobs:
  basic_node_test:
    name: 'Basic tests on ubuntu-latest with nodejs v22 (current LTS version)'
    runs-on: ubuntu-latest
    steps:
     - uses: actions/checkout@v2
     - uses: actions/setup-node@v2
       with:
         node-version: ${{ matrix.node }}
     - name: Install npm dependencies
       run: npm install
     - name: Print put node & npm version
       run: node --version && npm --version 
     - name: Install chromium
       run: npx playwright install chromium
     - name: Run unit test
       run: npm run test

  windows_and_macos_test:
    name: 'Platform tests on ${{matrix.os}} with nodejs v${{matrix.node}}'
    needs: basic_node_test
    strategy:
      matrix:
        # Test all mainstream operating system
        os: [macos-latest, windows-latest]
        node: [22]
    runs-on: ${{ matrix.os }}
    steps:
     # Pull repo to test machine
     - uses: actions/checkout@v2
     # Configures the node version used on GitHub-hosted runners
     - uses: actions/setup-node@v2
       with:
         # The Node.js version to configure
         node-version: ${{ matrix.node }}
     - name: Install npm dependencies
       run: npm install
     - name: Print put node & npm version
       # Output useful info for debugging.
       run: node --version && npm --version 
     - name: Install chromium
       run: npx playwright install chromium
     - name: Run unit test
       run: npm run test

  historical_versions_node_test:
    name: 'Historical version nodejs v${{matrix.node}} test'
    needs: basic_node_test
    strategy:
      matrix:
        os: [ubuntu-latest]
        node: [14, 16, 18, 20]
    runs-on: ${{ matrix.os }}
    steps:
     - uses: actions/checkout@v2
     - uses: actions/setup-node@v2
       with:
         node-version: ${{ matrix.node }}
     - name: Install npm dependencies
       run: npm install
     - name: Print put node & npm version
       run: node --version && npm --version 
     - name: Install chromium
       run: npx playwright install chromium
     - name: Run unit test
       run: npm run test

  latest_nodejs_testing_node23:
    name: 'Latest nodejs v23 test'
    needs: basic_node_test
    runs-on: ubuntu-latest
    steps:
     - uses: actions/checkout@v2
     - uses: actions/setup-node@v2
       with:
         node-version: 23
     - name: Install npm dependencies
       run: npm install
     - name: Print put node & npm version
       run: node --version && npm --version 
     - name: Install chromium
       run: npx playwright install chromium
     - name: Run unit test
       run: npm run test
