From 8058f43968c3dbba3f52ff772292c050d6bc7fdf Mon Sep 17 00:00:00 2001 From: Craig Cooper Date: Tue, 21 Apr 2026 17:58:18 +0700 Subject: [PATCH 1/3] test(ci): run SIMD WASM e2e on macos-13 (Intel) with Playwright 1.59.1 Hypothesis-test PR: does the webkit-2272 SIMD JIT bug we hit on mcr.microsoft.com/playwright:v1.59.1-noble (linux/amd64) also manifest on macOS Intel? Build.sh keeps -msimd128 -mavx2 (SIMD enabled, reproduces the Linux failure). The existing .github/actions/e2e runs on ubuntu- 24.04 via the Playwright docker image and is expected to fail at the webkit project. The new check-macos-intel workflow runs on macos-13, installs Playwright natively (no docker), and exercises the same argon2 SIMD WASM against Playwright 1.59.1 webkit on Intel macOS. - bump @playwright/test to 1.59.1 (+ docker image + action digest) - add .github/workflows/check-macos-intel.yml: macos-13, native emsdk 5.0.6, native playwright install, pnpm test:e2e - build.sh left untouched (SIMD stays on) --- .github/actions/e2e/action.yml | 4 +- .github/workflows/check-macos-intel.yml | 71 +++++++++++++++++++++++++ e2e_docker.sh | 2 +- package.json | 2 +- pnpm-lock.yaml | 26 ++++----- 5 files changed, 88 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/check-macos-intel.yml diff --git a/.github/actions/e2e/action.yml b/.github/actions/e2e/action.yml index 5ecdf80a..415c1146 100644 --- a/.github/actions/e2e/action.yml +++ b/.github/actions/e2e/action.yml @@ -4,9 +4,9 @@ runs: using: composite steps: - name: End-to-End - uses: phi-ag/run-playwright@e2545afe0352419a2974e7c2a70cdf8a9dd5f85a # v1 + uses: phi-ag/run-playwright@6dd667f6044e5c035d176b0ccab578be5d3538bb # v1 with: - version: v1.58.2-noble@sha256:6446946a1d9fd62d9ae501312a2d76a43ee688542b21622056a372959b65d63d + version: v1.59.1-noble@sha256:b0ab6f3cb99aa7803adbc14d9027ec1785fc6e433b97e134e0f8fe61683b6b53 options: -v ${STORE_PATH}:${STORE_PATH} run: | corepack enable diff --git a/.github/workflows/check-macos-intel.yml b/.github/workflows/check-macos-intel.yml new file mode 100644 index 00000000..b9398622 --- /dev/null +++ b/.github/workflows/check-macos-intel.yml @@ -0,0 +1,71 @@ +name: Check macOS Intel + +on: + push: + workflow_dispatch: + +permissions: + contents: read + +jobs: + check-macos-intel: + runs-on: macos-13 + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + submodules: recursive + + - name: Show runner arch + run: | + uname -a + arch + sysctl -n machdep.cpu.brand_string + + - name: Setup Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 + with: + node-version-file: .nvmrc + + - name: Enable pnpm + run: | + corepack enable + corepack prepare --activate + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install emsdk + run: | + git clone --depth 1 https://github.com/emscripten-core/emsdk.git /tmp/emsdk + /tmp/emsdk/emsdk install 5.0.6 + /tmp/emsdk/emsdk activate 5.0.6 + source /tmp/emsdk/emsdk_env.sh + echo "PATH=$PATH" >> "$GITHUB_ENV" + echo "EMSDK=$EMSDK" >> "$GITHUB_ENV" + echo "EMSDK_NODE=$EMSDK_NODE" >> "$GITHUB_ENV" + + - name: emcc version + run: emcc -v + + - name: Build WASM (SIMD) + run: ./build.sh + + - name: Build package + run: pnpm build + + - name: Install Playwright browsers + run: pnpm exec playwright install --with-deps webkit chromium firefox + + - name: E2E + run: pnpm test:e2e + + - name: Upload results + if: always() + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v5 + with: + name: e2e-results-macos-intel + path: | + .e2e-results + junit.e2e.xml + if-no-files-found: ignore diff --git a/e2e_docker.sh b/e2e_docker.sh index 478f0739..4d414869 100755 --- a/e2e_docker.sh +++ b/e2e_docker.sh @@ -1,7 +1,7 @@ #!/usr/bin/env sh set -eu -VERSION=v1.58.2-noble@sha256:6446946a1d9fd62d9ae501312a2d76a43ee688542b21622056a372959b65d63d +VERSION=v1.59.1-noble@sha256:b0ab6f3cb99aa7803adbc14d9027ec1785fc6e433b97e134e0f8fe61683b6b53 STORE_PATH="$(pnpm store path --silent)" mkdir -p .run-playwright diff --git a/package.json b/package.json index 125481aa..fc7d147c 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@cyclonedx/cyclonedx-library": "10.0.0", "@eslint/js": "10.0.1", - "@playwright/test": "1.58.2", + "@playwright/test": "1.59.1", "@trivago/prettier-plugin-sort-imports": "6.0.2", "@types/node": "25.6.0", "@types/spdx-expression-parse": "4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b46c482f..8cbf8724 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,8 +17,8 @@ importers: specifier: 10.0.1 version: 10.0.1(eslint@10.2.1) '@playwright/test': - specifier: 1.58.2 - version: 1.58.2 + specifier: 1.59.1 + version: 1.59.1 '@trivago/prettier-plugin-sort-imports': specifier: 6.0.2 version: 6.0.2(prettier@3.8.3) @@ -215,8 +215,8 @@ packages: '@oxc-project/types@0.120.0': resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} - '@playwright/test@1.58.2': - resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} engines: {node: '>=18'} hasBin: true @@ -849,13 +849,13 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - playwright-core@1.58.2: - resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} engines: {node: '>=18'} hasBin: true - playwright@1.58.2: - resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} engines: {node: '>=18'} hasBin: true @@ -1214,9 +1214,9 @@ snapshots: '@oxc-project/types@0.120.0': {} - '@playwright/test@1.58.2': + '@playwright/test@1.59.1': dependencies: - playwright: 1.58.2 + playwright: 1.59.1 '@rolldown/binding-android-arm64@1.0.0-rc.10': optional: true @@ -1790,11 +1790,11 @@ snapshots: picomatch@4.0.3: {} - playwright-core@1.58.2: {} + playwright-core@1.59.1: {} - playwright@1.58.2: + playwright@1.59.1: dependencies: - playwright-core: 1.58.2 + playwright-core: 1.59.1 postcss@8.5.8: dependencies: From 4628d7c1e09cc3a8fcb3078ad1b30368a3d242a9 Mon Sep 17 00:00:00 2001 From: Craig Cooper Date: Tue, 21 Apr 2026 18:03:06 +0700 Subject: [PATCH 2/3] ci: switch macOS Intel job to macos-15-large (macos-13 retired) --- .github/workflows/check-macos-intel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-macos-intel.yml b/.github/workflows/check-macos-intel.yml index b9398622..a44f173b 100644 --- a/.github/workflows/check-macos-intel.yml +++ b/.github/workflows/check-macos-intel.yml @@ -9,7 +9,7 @@ permissions: jobs: check-macos-intel: - runs-on: macos-13 + runs-on: macos-15-large steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 From 2d56a6c9fa93591bc665609543049d99895f7d09 Mon Sep 17 00:00:00 2001 From: Craig Cooper Date: Tue, 21 Apr 2026 18:07:48 +0700 Subject: [PATCH 3/3] build: drop GNU-only stat line (breaks macOS) --- build.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/build.sh b/build.sh index 71261cb7..cab99365 100755 --- a/build.sh +++ b/build.sh @@ -30,5 +30,4 @@ set -eu sha1sum ../src/argon2.wasm sha256sum ../src/argon2.wasm - stat -c "%n %s" ../src/argon2.wasm )