Files
jquery/.github/workflows/node.js.yml
Michał Gołębiowski-Owczarek 110e46572a Build: Simplify caching in CI, use npm ci
Our setup is pretty standard, so manual configuration of `actions/cache`
is an overkill. Relying on built-in `actions/node` caching will also resolve
differences between caching configurations for macOS/Linux vs. Windows.

Also, switch from `npm install` to `npm ci` in CI.

Closes gh-5702
Ref jquery/jquery-migrate#597
Ref gh-5703
2025-09-15 18:14:22 +02:00

133 lines
4.3 KiB
YAML

name: Node
on:
pull_request:
push:
branches-ignore: "dependabot/**"
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build-and-test:
runs-on: ubuntu-latest
name: ${{ matrix.NPM_SCRIPT }} - ${{ matrix.NAME }} (${{ matrix.NODE_VERSION }})
strategy:
fail-fast: false
matrix:
NAME: ["Node"]
NODE_VERSION: [18.x, 20.x, 22.x, 23.x]
NPM_SCRIPT: ["test:browserless"]
include:
- NAME: "Node"
NODE_VERSION: "22.x"
NPM_SCRIPT: "lint"
- NAME: "Chrome/Firefox"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:browser"
- NAME: "Chrome"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:slim"
- NAME: "Chrome"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:no-deprecated"
- NAME: "Chrome"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:selector-native"
- NAME: "Chrome"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:esm"
- NAME: "Firefox ESR (new)"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:firefox"
- NAME: "Firefox ESR (old)"
NODE_VERSION: "22.x"
NPM_SCRIPT: "test:firefox"
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Use Node.js ${{ matrix.NODE_VERSION }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ matrix.NODE_VERSION }}
cache: npm
cache-dependency-path: '**/package-lock.json'
- name: Set download URL for Firefox ESR (old)
run: |
echo "FIREFOX_SOURCE_URL=https://download.mozilla.org/?product=firefox-esr-latest-ssl&lang=en-US&os=linux64" >> "$GITHUB_ENV"
if: contains(matrix.NAME, 'Firefox ESR (old)')
- name: Set download URL for Firefox ESR (new)
run: |
echo "FIREFOX_SOURCE_URL=https://download.mozilla.org/?product=firefox-esr-next-latest-ssl&lang=en-US&os=linux64" >> "$GITHUB_ENV"
if: contains(matrix.NAME, 'Firefox ESR (new)')
- name: Install Firefox ESR
run: |
# Support: Firefox <135 only
# Older Firefox used to be compressed using bzip2, newer using xz. Try
# to uncompress using xz, fall back to bzip2 if that fails.
# Note: this will download the old Firefox ESR twice, but it will still work
# when the current ESR version starts to use xz with no changes to the code.
wget --no-verbose "$FIREFOX_SOURCE_URL" -O - | tar -Jx -C "$HOME" || \
wget --no-verbose "$FIREFOX_SOURCE_URL" -O - | tar -jx -C "$HOME"
echo "PATH=${HOME}/firefox:$PATH" >> "$GITHUB_ENV"
echo "FIREFOX_BIN=${HOME}/firefox/firefox" >> "$GITHUB_ENV"
if: contains(matrix.NAME, 'Firefox ESR')
- name: Install dependencies
run: npm ci
- name: Build all for linting
run: npm run build:all
if: contains(matrix.NPM_SCRIPT, 'lint')
- name: Run tests
run: npm run ${{ matrix.NPM_SCRIPT }}
ie:
runs-on: windows-latest
env:
NODE_VERSION: 22.x
name: test:ie - IE
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: '**/package-lock.json'
- name: Install dependencies
run: npm ci
- name: Run tests in Edge in IE mode
run: npm run test:ie
safari:
runs-on: macos-latest
env:
NODE_VERSION: 22.x
name: test:safari - Safari
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: '**/package-lock.json'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm run test:safari