Skip to content

Commit e09c263

Browse files
committed
fix: Drain microtask queue before advancing timers in tests
1 parent 7ba3183 commit e09c263

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

src/components/carousel/carousel.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,8 @@ describe('Carousel', () => {
793793
carousel.interval = 200;
794794
await elementUpdated(carousel);
795795

796+
// Flush microtasks to ensure property watcher has completed
797+
await vi.advanceTimersByTimeAsync(0);
796798
await vi.advanceTimersByTimeAsync(199);
797799

798800
expect(carousel.isPlaying).to.be.true;

src/components/tooltip/tooltip.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,8 @@ describe('Tooltip', () => {
426426
})
427427
);
428428

429+
// Flush microtasks to ensure async event handler completes
430+
await clock.advanceTimersByTimeAsync(0);
429431
await clock.advanceTimersByTimeAsync(endTick(DEFAULT_HIDE_DELAY));
430432
await hideComplete();
431433
expect(tooltip.open).to.be.false;
@@ -557,13 +559,18 @@ describe('Tooltip', () => {
557559
tooltip.parentElement!.querySelectorAll('button')
558560
);
559561

562+
// Flush any pending microtasks before showing
563+
await clock.advanceTimersByTimeAsync(0);
564+
560565
const result = await tooltip.show(transientAnchor);
561566
expect(result).to.be.true;
562567
expect(tooltip.open).to.be.true;
563568
expect(spy).to.toHaveBeenCalledTimes(0);
564569

565570
simulatePointerEnter(defaultAnchor);
566571
// Trigger on the initial default anchor. Tooltip must be hidden.
572+
// Flush microtasks to ensure async event handler completes
573+
await clock.advanceTimersByTimeAsync(0);
567574
expect(tooltip.open).to.be.false;
568575
await clock.advanceTimersByTimeAsync(DEFAULT_SHOW_DELAY);
569576
await showComplete();
@@ -790,6 +797,8 @@ describe('Tooltip', () => {
790797
});
791798

792799
simulatePointerEnter(anchor);
800+
// Flush microtasks to ensure the async event handler completes before advancing timers
801+
await clock.advanceTimersByTimeAsync(0);
793802
await clock.advanceTimersByTimeAsync(DEFAULT_SHOW_DELAY);
794803
await showComplete(tooltip);
795804

@@ -808,6 +817,8 @@ describe('Tooltip', () => {
808817
});
809818

810819
simulatePointerLeave(anchor);
820+
// Flush microtasks to ensure the async event handler completes before advancing timers
821+
await clock.advanceTimersByTimeAsync(0);
811822
await clock.advanceTimersByTimeAsync(endTick(DEFAULT_HIDE_DELAY));
812823
await hideComplete(tooltip);
813824

vite.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export default defineConfig({
5151
enabled: true,
5252
provider: playwright(),
5353
instances: [{ browser: 'chromium', headless: true }],
54+
screenshotFailures: false,
5455
},
5556
setupFiles: ['./vitest.setup.ts'],
5657
coverage: {

0 commit comments

Comments
 (0)