name: Unit Test Project
on:
  push:
  pull_request:
jobs:
  unit_test:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install Node.js
      uses: actions/setup-node@v3
      with:
        node-version: 16.x

    - name: Install Module Dependencies
      run: npm clean-install --omit=optional

    - name: Test Project
      run: npm test

    - name: Generate Test Coverage
      run: npm run coverage

    - name: Report Test Coverage
      uses: codecov/codecov-action@v3
      with:
        directory: ./coverage
        verbose: true
