cyberchef/.github/workflows/pull_requests.yml
Bart van Andel 97ae7e3a15 chore: require Node >=v18.20, and default to v22
Anything older than Node v22 is end-of-life, and doesn't get any more
support outside of commercial support.

See https://endoflife.date/nodejs

The current code is still compatible with Node v18.20 and up though,
which switched from import assertions (`assert` keyword) to import
attributes (`with` keyword).

See https://nodejs.org/en/blog/release/v18.20.0

We can't go higher than v22 yet due to certain dependencies depending
on obsolete behavior and `node` command line flags. For instance, the
current version of `argon2-browser` (which is 4 years old) breaks on
Node's native `fetch` behavior, which used to be experimental, but is
now mainstream, and can no longer be disabled in Node v23 and up.
2026-02-05 13:45:57 +01:00

58 lines
1.2 KiB
YAML

name: "Pull Requests"
permissions:
contents: read
on:
workflow_dispatch:
pull_request:
types: [synchronize, opened, reopened]
jobs:
main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set node version
uses: actions/setup-node@v6
with:
node-version: 22
registry-url: "https://registry.npmjs.org"
- name: Install
run: |
export DETECT_CHROMEDRIVER_VERSION=true
npm install
npm run setheapsize
- name: Lint
run: npx grunt lint
- name: Unit Tests
run: |
npm test
npm run testnodeconsumer
- name: Production Build
if: success()
run: npx grunt prod
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Production Image Build
if: success()
id: build-image
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
- name: UI Tests
if: success()
run: |
sudo apt-get install xvfb
xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui