name: Tests on: pull_request: branches: - main - releases/** push: branches: - main - releases/** jobs: # Build and unit test build: strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: node-version: 20.x cache: npm - run: npm ci - name: Prettier Format Check run: npm run format-check - name: ESLint Check run: npm run lint - name: Build & Test run: npm run test # End to end save and restore test-dont-save: strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Generate files in working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} test-cache - name: Generate files outside working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} ~/test-cache - name: Save cache uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }} path: | test-cache ~/test-cache save: ${{ matrix.os == 'ubuntu-latest' }} test-save: strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Generate files in working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} test-cache - name: Generate files outside working directory shell: bash run: __tests__/create-cache-files.sh ${{ runner.os }} ~/test-cache - name: Save cache uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }} path: | test-cache ~/test-cache test-restore: needs: test-save strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] fail-fast: false runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Restore cache uses: ./ with: key: test-${{ runner.os }}-${{ github.run_id }} path: | test-cache ~/test-cache - name: Verify cache files in working directory shell: bash run: __tests__/verify-cache-files.sh ${{ runner.os }} test-cache - name: Verify cache files outside working directory shell: bash run: __tests__/verify-cache-files.sh ${{ runner.os }} ~/test-cache # End to end with proxy test-proxy-save: runs-on: ubuntu-latest container: image: ubuntu:latest options: --dns 127.0.0.1 services: squid-proxy: image: ubuntu/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: - name: Checkout uses: actions/checkout@v4 - name: Generate files run: __tests__/create-cache-files.sh proxy test-cache - name: Save cache uses: ./ with: key: test-proxy-${{ github.run_id }} path: test-cache test-proxy-restore: needs: test-proxy-save runs-on: ubuntu-latest container: image: ubuntu:latest options: --dns 127.0.0.1 services: squid-proxy: image: ubuntu/squid:latest ports: - 3128:3128 env: https_proxy: http://squid-proxy:3128 steps: - name: Checkout uses: actions/checkout@v4 - name: Restore cache uses: ./ with: key: test-proxy-${{ github.run_id }} path: test-cache - name: Verify cache run: __tests__/verify-cache-files.sh proxy test-cache