name: Node CI on: push: pull_request: types: [opened, synchronize, reopened] jobs: changes: runs-on: ubuntu-latest outputs: cms: ${{ steps.filter.outputs.cms }} steps: - uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 id: filter with: filters: | cms: - '!website/**' build: needs: changes runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, windows-latest, ubuntu-latest] node-version: [20.x, 22.x] fail-fast: true if: ${{ needs.changes.outputs.cms == 'true' }} steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} check-latest: true cache: 'npm' - name: log versions run: node --version && npm --version && yarn --version - name: install dependencies run: npm ci - name: run unit tests run: npm run test:ci - name: build demo site run: npm run build:demo - name: run e2e tests if: matrix.os == 'ubuntu-latest' && matrix.node-version == '22.x' run: npm run test:e2e:run-ci env: IS_FORK: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true || github.repository_owner != 'decaporg' }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} NODE_OPTIONS: --max-old-space-size=4096 TZ: Europe/Amsterdam - uses: actions/upload-artifact@v4 if: matrix.os == 'ubuntu-latest' && matrix.node-version == '22.x' && failure() with: name: cypress-results path: | cypress/screenshots cypress/videos