# Based on https://github.com/actions/starter-workflows/blob/master/ci/node.js.yml name: Build and Test on: [push, pull_request] jobs: ci: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: [ubuntu-latest, macos-latest, windows-latest] node-version: [12.x, 14.x, 16.x, 17.x, 18.x] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci # Ensure that we can still build in the current version of Node - run: node ./bin/cake build:except-parser - run: node ./bin/cake build:parser # Build twice to ensure that the latest build of the compiler can still build itself - run: node ./bin/cake build:except-parser - run: node ./bin/cake build:parser # Build the browser compiler for the headless browser test - run: node ./bin/cake build:browser # Build test.html, so that test:browser uses the latest tests - run: node ./bin/cake doc:test # Check that the git diff is clean, to ensure that the updated build output was committed - run: git diff --exit-code # Test - run: node ./bin/cake test - run: node ./bin/cake test:browser || node ./bin/cake test:browser || node ./bin/cake test:browser - run: node ./bin/cake test:browser:node - run: node ./bin/cake test:integrations