@@ -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