Skip to content

chore(deps): upgrade puppeteer to 25 and grunt-contrib-qunit to 11 - #3567

Merged
kumilingus merged 3 commits into
clientIO:masterfrom
kumilingus:chore/puppeteer-25
Oct 28, 2026
Merged

kumilingus merged 3 commits into
clientIO:masterfrom
kumilingus:chore/puppeteer-25

Conversation

@kumilingus

@kumilingus kumilingus commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Upgrades the browser test tooling, clearing Dependabot alerts that puppeteer 24 held: extract-zip ×2 and basic-ftp (@puppeteer/browsers 3 no longer depends on them) and zod 3 (chromium-bidi now uses zod 4).

  • puppeteer 24.22.0 → 25.16.0 in @joint/core, @joint/layout-directed-graph, @joint/layout-elk, @joint/layout-msagl, @joint/router-avoid and @joint/sanitize - still one version everywhere, so CI downloads one browser (chore: pin puppeteer to a single version for GHA #3419). Puppeteer 25 needs Node >=22.12.0; CI runs 22.14.0.
  • grunt-contrib-qunit 7.0.1 → 11.0.0. It depends on puppeteer ^25 itself, so the root grunt-contrib-qunit/puppeteer resolution is removed.

Adaptations:

  • executablePath() is asynchronous in puppeteer 25. The five karma.conf.js files export an async config function that awaits it (the karma CLI supports that). @joint/core loads its karma config through grunt, synchronously - a new chrome-bin grunt task sets CHROME_BIN and runs first in test:src.
  • grunt-contrib-qunit 8+ dropped RequireJS support from its bridge and expects a global QUnit. The three requirejs.html pages load qunit.js with a script tag (with autostart off) and define it as the qunit module - the code under test, the built bundles, is still loaded through RequireJS.
  • Chrome is launched with --use-mock-keychain, so macOS no longer asks for the login keychain password when a new browser build runs.

Testing

All on Chrome 156 (puppeteer 25.16.0):

  • @joint/core yarn test: mocha, karma geometry / vectorizer / joint (2179), qunit joint / vectorizer / geometry, TypeScript tests.
  • yarn test in @joint/layout-directed-graph (22), @joint/layout-elk (105), @joint/layout-msagl (5), @joint/router-avoid (32), @joint/sanitize (106).

puppeteer 24.22.0 -> 25.16.0 in every package that runs browser tests
(still one version, so CI downloads one browser). grunt-contrib-qunit
7.0.1 -> 11.0.0 depends on puppeteer 25 itself, which replaces the root
resolution that held it at 24.22.0.

- puppeteer.executablePath() is asynchronous now: the karma configs
  await it, and joint-core sets CHROME_BIN in a grunt task that runs
  before the karma tasks.
- grunt-contrib-qunit 8+ expects a global QUnit: the requirejs test
  pages load QUnit with a script tag and define it as the 'qunit'
  module - the builds under test are still loaded through RequireJS.
- Chrome launches with --use-mock-keychain, so macOS does not prompt
  for the keychain password.
@kumilingus
kumilingus merged commit a7f22d0 into clientIO:master Oct 28, 2026
3 checks passed
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.

2 participants