| name: Test |
| |
| on: |
| push: |
| branches: |
| - main |
| pull_request: |
| |
| permissions: |
| contents: read |
| |
| env: |
| FORCE_COLOR: 3 |
| |
| jobs: |
| format: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - name: Checkout |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| with: |
| persist-credentials: false |
| |
| - name: Setup Node |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 |
| with: |
| node-version-file: ".nvmrc" |
| cache: npm |
| package-manager-cache: true |
| |
| - run: npm ci |
| |
| - run: npx eslint . |
| |
| - run: npx prettier --check . |
| |
| - run: npx tsc --noEmit |
| |
| lint: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - name: Checkout |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| with: |
| persist-credentials: false |
| |
| - name: Setup Node |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 |
| with: |
| node-version-file: ".nvmrc" |
| cache: npm |
| package-manager-cache: true |
| |
| - run: npm ci |
| |
| - run: npm run lint -- --fail-on-warnings |
| |
| test: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - name: Checkout |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| with: |
| persist-credentials: false |
| |
| - name: Setup Node |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 |
| with: |
| node-version-file: ".nvmrc" |
| cache: npm |
| package-manager-cache: true |
| |
| - run: npm ci |
| |
| - run: npm run unittest |
| |
| diff-build: |
| if: github.event_name == 'pull_request' |
| runs-on: ubuntu-latest |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number }}-diff-build |
| cancel-in-progress: true |
| |
| steps: |
| - name: Determine base ref |
| id: base |
| run: | |
| if [[ "$GITHUB_HEAD_REF" == "release" ]]; then |
| VERSION=$(npm view @mdn/browser-compat-data version) |
| echo "ref=v$VERSION" >> "$GITHUB_OUTPUT" |
| echo "Comparing release branch against published v$VERSION" |
| else |
| echo "ref=$GITHUB_BASE_REF" >> "$GITHUB_OUTPUT" |
| echo "Comparing against base branch: $GITHUB_BASE_REF" |
| fi |
| |
| # Base |
| |
| - name: Checkout (base) |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| with: |
| ref: ${{ steps.base.outputs.ref }} |
| path: base |
| persist-credentials: false |
| |
| - name: Checkout (PR) |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| with: |
| path: pr |
| persist-credentials: false |
| |
| - name: Setup Node |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 |
| with: |
| node-version-file: pr/.nvmrc |
| cache: npm |
| cache-dependency-path: | |
| base/package-lock.json |
| pr/package-lock.json |
| package-manager-cache: true |
| |
| - name: Install |
| run: | |
| # sed command prefixes each line of output with [base] or [pr] |
| cd base && npm ci | sed "s/^/[base] /" & |
| cd pr && npm ci | sed "s/^/[pr] /" & |
| wait |
| |
| - name: Format |
| run: | |
| # sed command prefixes each line of output with [base] or [pr] |
| cd base/build && npx prettier --write . | sed "s/^/[base] /" & |
| cd pr/build && npx prettier --write . | sed "s/^/[pr] /" & |
| wait |
| |
| - name: Diff |
| run: git diff --color=always --no-index base/build/ pr/build/ || true |