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
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: nodejs#62081
@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.

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