RequestUtils:activateTheme()andsetupRest()now use the site theRequestUtilswas created with, rather than always theWP_BASE_URLenvironment variable (#85420).
- Convert the remaining viewport and widget utilities to TypeScript (#84917).
RequestUtils.setGutenbergExperiments(): An experiment left out of the call now returns to its default rather than being switched off, and an experiment can default to on.To pin an experiment off regardless of its default, the function now supports an object argument with boolean values (#83784).
- Mark the
@types/nodepeer dependency as optional, since it is only needed for type checking (#83765).
- Declare the
@typescript/nativedev dependency used by thebuildscript, which previously resolvedtscfrom the repository root (#84027).
- Increase the minimum required Node.js version to v22.19.0. The
lighthousedependency is now^13.4.1, which requires it. Learn more about Node.js releases (#81916). Editor.switchEditorTool(): Remove the helper. It clicked the Write/Design "Tools" toolbar button, which the editor no longer renders since #72193 (#82677).
Admin.visitSiteEditor(): When theGUTENBERG_E2E_SITE_EDITOR_V2environment variable is set, visit the extensible site editor (admin.php?page=site-editor-v2) instead ofsite-editor.php, translating the classic query args to the equivalent v2 route, and wait for the lazily loaded editor to finish initializing on edit routes.RequestUtils.setGutenbergExperiments()keeps thegutenberg-extensible-site-editorexperiment enabled in that mode so specs that reset experiments do not turn the v2 editor off mid-run.
- Widen the
@types/nodepeer dependency to>=20, so consumers on Node 22 or 24 type definitions no longer hit a peer resolution conflict (#82616).
Metrics.initWebVitals(): Resolveweb-vitalsfrom the installed dependency so published consumers can load it outside the Gutenberg monorepo. Update to 4.2.4 to fix interaction counts after back/forward cache restores and prevent repeated input-listener registration (#81916).Editor.saveSiteEditorEntities(): Wait for the save button to mount before deciding between itsSaveandPublishvariants, instead of sampling visibility immediately — the extensible site editor only renders it once an entity is dirty.
setGutenbergExperiments: Remove the special handling for the removedactive_templatesexperiment (#82241).
Metrics.startTracing(): Run a trivial script in every frame once tracing is on, to absorb the isolate interrupt that enabling the V8 sampling profiler queues. Its cost otherwise lands in the first thing the test does, usually the interaction being measured, and grows through a spec's iterations: a stable 220ms interaction reported anywhere from 200ms to 650ms (#81264).Metrics.getSelectionEventDurations(): Dispatches that nest inside another dispatch now contribute only the time not already covered by it, so summing the returned durations no longer counts the nested work twice.
Metrics.getSelectionEventDurations(): Also collectpointerupandselectionchangedurations, and omit event types that did not fire. Selecting a block within an editing host no longer firesfocus/focusin, which made the metric report zero.
- Added
RequestUtils.resetThemeGlobalStyles()to reset the current theme's user global styles to an empty config for test isolation.
- Resolve root-relative
page.goto()URLs against the fullbaseURL, including any subdirectory path, so tests work against WordPress installs served from a subdirectory.
- Added new
PageUtils.emulateNetworkConditions()helper to emulate network conditions such as Slow 3G, Fast 4G or Broadband (#69865).
- Increase the minimum required Node.js version to v18.12.0 matching long-term support releases (#31270). Learn more about Node.js releases.
- Initial version of the package.