Skip to content

Commit 03ba07b

Browse files
Copilotpethers
andcommitted
test: harden theme-transition timer cleanup in toggle tests
Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
1 parent 45ec8fa commit 03ba07b

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

tests/theme-toggle.test.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,13 @@ describe('Theme Toggle', () => {
350350
// ── theme-transition class (add/remove on toggle) ────────────────────────────
351351

352352
describe('theme-transition class', () => {
353+
afterEach(() => {
354+
vi.runOnlyPendingTimers();
355+
vi.clearAllTimers();
356+
vi.useRealTimers();
357+
document.documentElement.classList.remove('theme-transition');
358+
});
359+
353360
function createToggleHandler() {
354361
let transitionTimer = null;
355362
return function toggle() {
@@ -367,6 +374,7 @@ describe('Theme Toggle', () => {
367374
}
368375

369376
it('adds theme-transition class on toggle', () => {
377+
vi.useFakeTimers();
370378
buildButton();
371379
applyTheme('light', false, storage);
372380
const toggle = createToggleHandler();
@@ -386,7 +394,6 @@ describe('Theme Toggle', () => {
386394
expect(document.documentElement.classList.contains('theme-transition')).toBe(true);
387395
vi.advanceTimersByTime(350);
388396
expect(document.documentElement.classList.contains('theme-transition')).toBe(false);
389-
vi.useRealTimers();
390397
});
391398

392399
it('handles rapid toggles without premature class removal', () => {
@@ -410,7 +417,6 @@ describe('Theme Toggle', () => {
410417
// After 350ms from second toggle, class should be removed
411418
vi.advanceTimersByTime(100);
412419
expect(document.documentElement.classList.contains('theme-transition')).toBe(false);
413-
vi.useRealTimers();
414420
});
415421
});
416422

0 commit comments

Comments
 (0)