Skip to content

test_runner: sync ESM exports when mocking timers#62141

Open
Siddhartha-singh01 wants to merge 1 commit intonodejs:mainfrom
Siddhartha-singh01:fix/issue-62081-mock-timers-esm
Open

test_runner: sync ESM exports when mocking timers#62141
Siddhartha-singh01 wants to merge 1 commit intonodejs:mainfrom
Siddhartha-singh01:fix/issue-62081-mock-timers-esm

Conversation

@Siddhartha-singh01
Copy link

This change ensures that ESM imports of node:timers/promises are correctly mocked when using mock.timers.enable(). This is achieved by calling syncBuiltinESMExports() whenever the mocked timers are toggled or reset.

Fixes: #62081

Before submitting a pull request, please read:

For code changes:

  1. Include tests for any bug fixes or new features.
  2. Update documentation if relevant.
  3. Ensure that make -j4 test (UNIX), or vcbuild test (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the notable-change label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/test_runner

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. test_runner Issues and PRs related to the test runner subsystem. labels Mar 7, 2026
@Siddhartha-singh01 Siddhartha-singh01 force-pushed the fix/issue-62081-mock-timers-esm branch from 384259e to b5ee33c Compare March 7, 2026 02:59
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@codecov
Copy link

codecov bot commented Mar 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.65%. Comparing base (8edeff9) to head (b5ee33c).
⚠️ Report is 14 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff            @@
##             main   #62141    +/-   ##
========================================
  Coverage   89.65%   89.65%            
========================================
  Files         676      676            
  Lines      206342   206546   +204     
  Branches    39531    39553    +22     
========================================
+ Hits       184994   185183   +189     
- Misses      13475    13482     +7     
- Partials     7873     7881     +8     
Files with missing lines Coverage Δ
lib/internal/test_runner/mock/mock_timers.js 98.69% <100.00%> (+<0.01%) ⬆️

... and 61 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Synchronize ESM facades whenever mocked timers are enabled, disabled,
or reset. This ensures that 'node:timers/promises' and other built-ins
correctly reflect the mocked state when imported in ESM modules.

Fixes: nodejs#62081
@Siddhartha-singh01 Siddhartha-singh01 force-pushed the fix/issue-62081-mock-timers-esm branch from b5ee33c to f629518 Compare March 7, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ci PRs that need a full CI run. test_runner Issues and PRs related to the test runner subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

node:timer/promises does not work with mock.timers.runAll() in ESM

4 participants