name: Cron Test
on:
  schedule:
    - cron: "0 0 * * 1" # Run on the first day over every week
jobs:
  test:
    name: cron unit tests on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-20.04, macos-11, windows-2019]
        node-version: [16.x]
    steps:
      - name: Checkout Release from lens
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file
        if: runner.os == 'Linux'
        run: |
          echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts

      - name: Using Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}

      - name: Get npm cache directory path
        if: ${{ runner.os != 'Windows' }}
        id: npm-cache-dir-path
        shell: bash
        run: echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT

      - uses: actions/cache@v3
        if: ${{ runner.os != 'Windows' }}
        id: npm-cache # use this to check for `cache-hit` (`steps.npm-cache.outputs.cache-hit != 'true'`)
        with:
          path: ${{ steps.npm-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-

      - uses: nick-fields/retry@v2
        name: Install dependencies
        with:
          timeout_minutes: 20
          max_attempts: 3
          retry_on: error
          command: npm ci

      - run: npm run test:unit
        name: Run tests
