Skip to content

Core: Add native ESM distribution #1523

Core: Add native ESM distribution

Core: Add native ESM distribution #1523

Workflow file for this run

name: CI
on:
- push
- pull_request
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
main-test:
strategy:
fail-fast: false
matrix:
include:
- name: "Linux: Node 18"
# Includes 'firefox', 'chromium', and more.
# https://github.com/actions/virtual-environments/blob/ubuntu20/20220410.2/images/linux/Ubuntu2004-Readme.md
os: ubuntu-20.04
node: 18.x
script: npm test
- name: "Linux: Node 20"
os: ubuntu-22.04
node: 20.x
script: npm run test
- name: "Linux: Node 22"
os: ubuntu-24.04
# Pinned because of https://github.com/npm/cli/issues/7657
node: 22.4
script: npm run test
- name: "Demos"
os: ubuntu-20.04
node: 18.x
script: npm run test-demos
- name: "Windows: Node 18"
os: windows-latest
node: 18.x
script: npm run test-nolint
# use macos-12 instead of macos-latest
# as proxy for Intel instead of ARM
# because the older Puppeteer/Chrome for Node 10 compat
# didn't support ARM yet.
- name: "macOS: Node 18"
os: macos-12
node: 18.x
script: npm run test-nolint
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env:
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download"
FORCE_COLOR: "1"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
if: ${{ runner.os != 'Windows' }}
with:
path: |
~/.npm
${{ github.workspace }}/.puppeteer_download
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- name: Tests
run: ${{ matrix.script }}
# To reproduce SpiderMonkey 68 builds locally:
#
# ```
# you:/qunit$ npm run build
#
# you:/qunit$ export MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh ubuntu:20.04 -c "cd /$MNT;bash"
# ```
# ```
# root@ubuntu:/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-68-dev
# root@ubuntu:/qunit$ js68 test/mozjs.js
# ```
mozjs-68:
name: SpiderMonkey 68
runs-on: ubuntu-20.04
env:
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/.puppeteer_download
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
node-version: 18.x
- name: Install mozjs
run: |
sudo apt-fast install -y libmozjs-68-dev
- run: npm ci
- run: npm run build
- name: Test mozjs.js
run: js68 test/mozjs.js
- name: Test mozjs.mjs
run: js68 -m test/mozjs.mjs
# To reproduce SpiderMonkey 102 builds locally:
#
# ```
# you:/qunit$ npm run build
#
# you:/qunit$ export MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh debian:12-slim -c "cd /$MNT;bash"
# ```
# ```
# root@ubuntu:/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-102-dev
# root@ubuntu:/qunit$ js102 test/mozjs.js
# ```
mozjs-102:
name: SpiderMonkey 102
runs-on: ubuntu-24.04
env:
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/.puppeteer_download
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
node-version: 18.x
- name: Install mozjs
run: |
sudo apt-get install -y libmozjs-102-dev
- run: npm ci
- run: npm run build
- name: Test mozjs.js
run: js102 test/mozjs.js
- name: Test mozjs.mjs
run: js102 -m test/mozjs.mjs
# To reproduce SpiderMonkey 115 builds locally:
#
# ```
# you:/qunit$ npm run build
#
# you:/qunit$ export MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh ubuntu:24.04 -c "cd /$MNT;bash"
# ```
# ```
# root@ubuntu:/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-115-dev
# root@ubuntu:/qunit$ js115 test/mozjs.js
# ```
mozjs-115:
name: SpiderMonkey 115
runs-on: ubuntu-24.04
env:
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download"
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.npm
${{ github.workspace }}/.puppeteer_download
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
node-version: 18.x
- name: Install mozjs
run: |
sudo apt-get install -y libmozjs-115-dev
- run: npm ci
- run: npm run build
- name: Test mozjs.js
run: js115 test/mozjs.js
- name: Test mozjs.mjs
run: js115 -m test/mozjs.mjs