fix: prefer registerHooks for ESM loader registration#40877
Open
danyalahmed1995 wants to merge 1 commit into
Open
fix: prefer registerHooks for ESM loader registration#40877danyalahmed1995 wants to merge 1 commit into
danyalahmed1995 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #40868
This updates Playwright's ESM loader registration to use Node's newer
module.registerHooks()API when it is available, while preserving the existingmodule.register()path as a fallback for older supported Node versions.The issue reports the Node 26
module.register()deprecation warning. While the direct fix is to move newer Node versions towardregisterHooks(), this PR also keeps the existing fallback path so the change does not break environments whereregisterHooks()is not available.Changes
module.registerHooks()when supported by the current Node runtime.resolveSync/loadSynchooks for theregisterHooks()path.module.register()behavior as the fallback path.registerHooks()is preferred when available.module.register()is still used whenregisterHooks()is unavailable.Notes
module.registerHooks()expects synchronous hooks, so this PR does not pass the existing async hooks directly into the new API. Instead, it adds sync hook variants for the newer registration path while keeping the async loader behavior for the existingmodule.register()flow.The fallback is intentionally kept because the reported Node 26 warning only covers the newer runtime behavior, but Playwright still needs to preserve compatibility with older supported Node versions.
Validation
npm run buildnpm run tscnpm run ttest -- tests/playwright-test/loader.spec.ts --grep "playwright ESM loader registration"npm run ttest -- tests/playwright-test/esm.spec.ts --grep "should import esm from ts when package.json has type module"git diff --check