Skip to content

Gha test - #28145

Draft
dschuff wants to merge 78 commits into
mainfrom
gha-test
Draft

Gha test#28145
dschuff wants to merge 78 commits into
mainfrom
gha-test

Conversation

@dschuff

@dschuff dschuff commented Nov 3, 2026

Copy link
Copy Markdown
Member

No description provided.

dschuff added 19 commits April 29, 2026 04:29
- Drop install-basic-packages from prepare-for-tests and ubuntu-latest jobs (only needed on minimal self-hosted build-linux container; also drop clang and pkg-config from apt install).
- Remove redundant V8 reinstall steps in test-wasm64-4gb, test-wasm64-misc, and test-esm-integration since ~/.jsvu is already restored from emscripten-cache.tar.gz.
- Remove actions-cache-folder: 'emsdk-install' from setup-emsdk now that sanity.txt uses $EMSDK/upstream/bin.
- Match build-linux embuilder build ALL + test_hello_world sequence to CircleCI (dropping pre-embuilder core3.test_hello_world).
- Quiet tar archive/extract commands (-czf/-xzf) and remove debug ls output.
- Revert unused result.test_duration assignment in test/parallel_testsuite.py.
- test-windows.yml: Use $env:EMSDK_PYTHON (exported by setup-emsdk) for
  pip install, bootstrap.py, and check_clean.py so test dependencies
  like xmlrunner are installed into the Python environment used by
  test/runner.exe, matching CircleCI's pip-install step.
- build-and-test-linux.yml (test-other): Install the
  wasm32-unknown-emscripten Rust target and wasm-bindgen 0.2.128 CLI,
  and install ccache alongside scons, matching CircleCI's test-misc job.
- prepare-for-tests/action.yml: Add $(dirname "$EMSDK_NODE") to
  GITHUB_PATH so tools invoking 'node' from PATH (such as meson's
  wasm64-emscripten.ini exe_wrapper) use emsdk's Node v24 rather than
  the runner's pre-installed Node v22.
- install-firefox/action.yml: Preseed and install
  ttf-mscorefonts-installer so browser.test_sdl_ttf_render_text_solid
  renders with Microsoft Arial as expected by its reference image.
Some host environments (such as GitHub-hosted ubuntu-latest VMs) return
multiple 127.0.0.1 entries when resolving 'localhost' via node:dns /
getaddrinfo. Relax the 'localhost' IPv4 address count check from == 1
to >= 1 while keeping the exact == 1 check for numeric address lookups.
- Delete downloaded port source archives (~/cache/ports/*.zip and *.tar.*) before tarring ~/cache since Ports.fetch_project only checks .emscripten_url and never reads the archives again (~120-150 MB of already-compressed data).
- Switch workspace archiving from single-threaded gzip (tar -czf) to multi-threaded zstd (tar -I 'zstd -T0 -6') and extract with tar --zstd -xf, installing zstd on the self-hosted build-linux runner.
- Set compression-level: 0 on actions/upload-artifact to skip redundant single-threaded zlib re-compression of the zstd tarball.
- Install chrome@canary via @puppeteer/browsers in install-chrome/action.yml instead of skipping installation when /usr/bin/google-chrome (Chrome Stable) is present on ubuntu-latest, and export EMTEST_BROWSER to GITHUB_ENV.
- Remove hardcoded EMTEST_BROWSER=/usr/bin/google-chrome and EMTEST_LACKS_SOUND_HARDWARE=1 from run-tests-chrome/action.yml to match CircleCI's run-tests-chrome step.
- Add the missing test-browser-chrome-emrun job to build-and-test-linux.yml.
Use os.path.realpath(os.getcwd()) instead of os.path.abspath(os.getcwd()) when computing curr_abspath so it matches abspath = os.path.realpath(os.path.abspath(path)).

On Windows, os.getcwd() preserves directory junctions and 8.3 short path names (such as C:\Users\RUNNER~1\AppData\Local\Temp on GitHub Actions windows-2022 for user runneradmin), whereas os.path.realpath() expands them via GetFinalPathNameByHandleW. That mismatch caused abspath.startswith(curr_abspath) to reject valid --embed-file and --preload-file inputs inside the current working directory.
- Add test-mac-arm64 (runs-on: macos-15, needs: build-linux) to .github/workflows/build-and-test-linux.yml so it can reuse the emscripten-cache artifact built by build-linux. Override workflow-level LANG (en_US.UTF-8), EMTEST_WASI_SYSROOT (empty), and EMTEST_DETECT_TEMPFILE_LEAKS (0) to match CircleCI's mac-arm64 executor, extract ~/cache via zstd + BSD tar while removing Linux x86_64 binaries, freeze the cache, and run crossplatform tests using emsdk's bundled Python.

- Add standalone test-linux-arm64 (runs-on: ubuntu-24.04-arm) matching CircleCI's test-linux-arm64 job (unfrozen cache, native arm64 emsdk, crossplatform test suite, and check_clean.py).
Node sets process.argv[1] via fs.realpathSync(), which resolves symlinks (such as /var -> /private/var on macOS) without expanding Windows 8.3 short names (such as C:/Users/RUNNER~1/... when %TEMP% belongs to a username longer than 8 characters like runneradmin). Python 3.8+'s os.path.realpath() on Windows uses GetFinalPathNameByHandleW and expands 8.3 short names, so normalize both the expected path and the path reported in argv[0] with os.path.realpath().
When Firefox is installed via Homebrew Cask on macOS (such as on GitHub Actions macos-15 runners), shutil.which('firefox') returns a wrapper shim at /opt/homebrew/bin/firefox while the app bundle lives in /Applications/Firefox.app. Resolve symlinks on exe_path, search standard macOS Firefox.app locations alongside the existing Linux /usr/lib/firefox* directories when platform.ini is not adjacent to the executable, and fall back to OLDEST_SUPPORTED_FIREFOX with a warning on all platforms instead of raising FileNotFoundError.
Skip browser auto-detection when running --crossplatform-only on macos-15, matching test-windows.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant