Skip to content
Draft

gha test #26746

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
355a381
experimental test-windows setup
dschuff Apr 22, 2026
9ad427c
minimal linux test
dschuff Apr 22, 2026
8ac781e
fix typo
dschuff Apr 22, 2026
e5180a5
invalidate circleci to keep it from running
dschuff Apr 22, 2026
1ed4169
test renaming .jsvu dir
dschuff Apr 22, 2026
d19549e
fix emsdk path and try to fix v8
dschuff Apr 22, 2026
ffcdd64
try fixing v8 more
dschuff Apr 22, 2026
baab515
use tar to persist workspace
dschuff Apr 22, 2026
19a9b03
update env variables
dschuff Apr 22, 2026
2275f71
add wasm64, refactor
dschuff Apr 22, 2026
105b59d
checkout before local actions
dschuff Apr 22, 2026
67a389f
add chrome
dschuff Apr 23, 2026
7fff0ea
add other chrome tests
dschuff Apr 24, 2026
af9d2b8
Fix checkout
dschuff Apr 24, 2026
ce672de
add test-other
dschuff Apr 24, 2026
d1f5984
add linters
dschuff Apr 24, 2026
712b905
try runnig one on premerge
dschuff Apr 24, 2026
4f09d25
Install packages missing from base gha runner
dschuff Apr 24, 2026
a5a6444
Add python to base packages, use with linters too
dschuff Apr 24, 2026
7273f6c
add cmake, run build-linux on premerge
dschuff Apr 24, 2026
3a228ac
add wget
dschuff Apr 24, 2026
c94a6cf
move basic packages up
dschuff Apr 24, 2026
fec2df4
remove unused node install
dschuff Apr 24, 2026
fee3634
try windows
dschuff Apr 24, 2026
ee59cf5
add build-essential
dschuff Apr 24, 2026
869bef8
fix environment varaibles in chrome test
dschuff Apr 25, 2026
ebef4e2
update action versions
dschuff Apr 25, 2026
efe6506
try windows github runner again
dschuff Apr 25, 2026
8fd4eff
try chrome on runners
dschuff Apr 25, 2026
8fe10c2
fix chrome
dschuff Apr 26, 2026
4ac898f
install chrome with apt to get deps
dschuff Apr 26, 2026
87f20e5
install ccache
dschuff Apr 26, 2026
ba4a757
always yes
dschuff Apr 27, 2026
49fafc6
more small runners
dschuff Apr 27, 2026
3d90626
remove result uploads
dschuff Apr 27, 2026
d17ffa2
core2, core3, wasm64=misc
dschuff Apr 27, 2026
93e3383
try more on runners
dschuff Apr 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
asdf-invalid
version: 2.1

orbs:
Expand Down
17 changes: 17 additions & 0 deletions .github/actions/install-basic-packages/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: 'Install Basic Packages'
description: 'Installs packages missing from GHA runner base'
runs:
using: 'composite'
steps:
- name: Setup Python
uses: actions/setup-python@v6.2.0
with:
python-version: '3.10'

- name: Install packages
run: |
sudo apt-get update
sudo apt-get install -y xz-utils build-essential ninja-build cmake wget ccache
shell: bash


20 changes: 20 additions & 0 deletions .github/actions/install-chrome/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: 'Install Chrome'
description: 'Installs Google Chrome'
runs:
using: "composite"
steps:
- name: Download and install Chrome
run: |
if [ -f /usr/bin/google-chrome ]; then
echo "Google Chrome is already installed:"
/usr/bin/google-chrome --version
else
sudo apt-get update
sudo apt-get install -q -y libu2f-udev libvulkan1 xdg-utils
wget -O ~/chrome.deb https://dl.google.com/linux/direct/google-chrome-beta_current_amd64.deb
sudo apt install -y ~/chrome.deb
echo "Chrome version:"
/usr/bin/google-chrome --version
fi
shell: bash

28 changes: 28 additions & 0 deletions .github/actions/install-node/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: 'Install Node'
description: 'Downloads and installs a specified version of Node.js'
inputs:
node_version:
description: 'Node version to install'
required: true
default: '25.4.0'

runs:
using: "composite"
steps:
- name: Download and Configure Node
run: |
cd $HOME
case "${{ inputs.node_version }}" in
newest) version="25.4.0" ;;
lts) version="22.21.0" ;;
oldest) version="18.3.0" ;;
*) version="${{ inputs.node_version }}" ;;
esac
wget https://nodejs.org/dist/v${version}/node-v${version}-linux-x64.tar.xz
tar xf node-v${version}-linux-x64.tar.xz
echo "NODE_JS_TEST = [os.path.expanduser('~/node-v${version}-linux-x64/bin/node')]" >> $EMSDK/.emscripten
echo "JS_ENGINES = [NODE_JS_TEST]" >> $EMSDK/.emscripten
echo "if os.path.exists(V8_ENGINE[0]): JS_ENGINES.append(V8_ENGINE)" >> $EMSDK/.emscripten
cat $EMSDK/.emscripten
echo "/home/runner/node-v${version}-linux-x64/bin" >> $GITHUB_PATH
shell: bash
14 changes: 14 additions & 0 deletions .github/actions/install-v8/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: 'Install V8'
description: 'Installs V8 via jsvu'
runs:
using: "composite"
steps:
- name: Get V8
run: |
cd $HOME
wget https://nodejs.org/dist/v15.14.0/node-v15.14.0-linux-x64.tar.xz
tar -xf node-v15.14.0-linux-x64.tar.xz
export PATH="`pwd`/node-v15.14.0-linux-x64/bin:${PATH}"
npm install jsvu -g
jsvu --os=default --engines=v8
shell: bash
47 changes: 47 additions & 0 deletions .github/actions/prepare-for-tests/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: 'Prepare for Tests'
description: 'Prepares the environment for running Emscripten tests'
runs:
using: "composite"
steps:
- name: Install Basic Packages
uses: ./.github/actions/install-basic-packages

- name: Install Emsdk
uses: emscripten-core/setup-emsdk@v16
with:
version: tot

- name: Attach workspace
uses: actions/download-artifact@v4
with:
name: emscripten-cache
path: ~/

- name: Extract persistent directories
run: tar -xzf ~/emscripten-cache.tar.gz -C ~/
shell: bash

- name: Set EM_CONFIG
run: echo "EM_CONFIG=$EMSDK/.emscripten" >> $GITHUB_ENV
shell: bash

- name: Setup cache config
run: |
echo "import os" >> $EMSDK/.emscripten
echo "CACHE = os.path.expanduser('~/cache')" >> $EMSDK/.emscripten
echo "V8_ENGINE = [os.path.expanduser('~/.jsvu/bin/v8')]" >> $EMSDK/.emscripten
echo "JS_ENGINES = [NODE_JS]" >> $EMSDK/.emscripten
echo "if os.path.exists(V8_ENGINE[0]): JS_ENGINES.append(V8_ENGINE)" >> $EMSDK/.emscripten
echo "WASM_ENGINES = []" >> $EMSDK/.emscripten
test -f ~/vms/wasmtime && echo "WASMTIME = os.path.expanduser(os.path.join('~', 'vms', 'wasmtime')) ; WASM_ENGINES.append(WASMTIME)" >> $EMSDK/.emscripten || true
test -f ~/vms/wasmer && echo "WASMER = os.path.expanduser(os.path.join('~', 'vms', 'wasmer')) ; WASM_ENGINES.append(WASMER)" >> $EMSDK/.emscripten || true
test -d ~/wasi-sdk && cp -a ~/wasi-sdk/lib/ $($EMSDK/upstream/bin/clang -print-resource-dir) || true
shell: bash

- name: Pip install
run: python -m pip install -r requirements-dev.txt
shell: bash

- name: Bootstrap
run: ./bootstrap
shell: bash
46 changes: 46 additions & 0 deletions .github/actions/run-tests-chrome/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: 'Run Tests Chrome'
description: 'Common steps for running tests under Google Chrome'
inputs:
test_targets:
description: 'Test targets to run'
required: true
title:
description: 'Title of the test run'
required: true
visualize:
description: 'Set EMTEST_VISUALIZE=1 and check profile'
default: 'false'

runs:
using: 'composite'
steps:
- name: Prepare for tests
uses: ./.github/actions/prepare-for-tests

- name: Install Chrome
uses: ./.github/actions/install-chrome

- name: Set environment variables
run: |
echo "EMTEST_DETECT_TEMPFILE_LEAKS=0" >> $GITHUB_ENV
echo "EMTEST_HEADLESS=1" >> $GITHUB_ENV
echo "EMTEST_BROWSER=/usr/bin/google-chrome" >> $GITHUB_ENV
echo "EMTEST_CORES=2" >> $GITHUB_ENV
echo "EM_FROZEN_CACHE=" >> $GITHUB_ENV
echo "EMTEST_LACKS_WEBGPU=1" >> $GITHUB_ENV
echo "EMTEST_LACKS_SOUND_HARDWARE=1" >> $GITHUB_ENV

if [ "${{ inputs.visualize }}" = "true" ]; then
echo "EMTEST_VISUALIZE=1" >> $GITHUB_ENV
fi
shell: bash

- name: Run browser tests
run: ./test/runner ${{ inputs.test_targets }}
shell: bash


- name: Check profile
if: inputs.visualize == 'true'
run: test -s out/graph.html
shell: bash
Loading
Loading