11import  {  nextTick ,  watch  }  from  'vue' 
2- import  {  describe ,  expect ,  it ,  beforeEach ,  vi  }  from  'vitest' 
2+ import  {  describe ,  expect ,  it ,  beforeEach ,  afterEach ,   vi  }  from  'vitest' 
33import  {  axe  }  from  'vitest-axe' 
44import  {  flushPromises  }  from  '@vue/test-utils' 
55import  *  as  z  from  'zod' 
@@ -148,6 +148,19 @@ describe('Form', () => {
148148      } ) 
149149      form  =  wrapper . setupState . form . value 
150150      state  =  wrapper . setupState . state 
151+ 
152+       // Wait for all mounting and initialization to complete 
153+       await  nextTick ( ) 
154+       await  flushPromises ( ) 
155+ 
156+       // Ensure form state is clean 
157+       form . touchedFields . clear ( ) 
158+       form . dirtyFields . clear ( ) 
159+       form . blurredFields . clear ( ) 
160+     } ) 
161+ 
162+     afterEach ( ( )  =>  { 
163+       wrapper ?. unmount ( ) 
151164    } ) 
152165
153166    it ( 'setErrors works' ,  async  ( )  =>  { 
@@ -327,16 +340,18 @@ describe('Form', () => {
327340      const  email  =  wrapper . find ( '#email' ) 
328341
329342      email . trigger ( 'focus' ) 
343+       await  nextTick ( ) 
330344      await  flushPromises ( ) 
331345
332346      expect ( form . touchedFields . has ( 'email' ) ) . toBe ( true ) 
333347      expect ( form . touchedFields . has ( 'password' ) ) . toBe ( false ) 
334348    } ) 
335349
336-     it ( 'touchedFields  works' ,  async  ( )  =>  { 
350+     it ( 'dirtyFields  works' ,  async  ( )  =>  { 
337351      const  email  =  wrapper . find ( '#email' ) 
338352
339353      email . trigger ( 'change' ) 
354+       await  nextTick ( ) 
340355      await  flushPromises ( ) 
341356
342357      expect ( form . dirtyFields . has ( 'email' ) ) . toBe ( true ) 
@@ -350,6 +365,7 @@ describe('Form', () => {
350365      const  email  =  wrapper . find ( '#email' ) 
351366
352367      email . trigger ( 'blur' ) 
368+       await  nextTick ( ) 
353369      await  flushPromises ( ) 
354370
355371      expect ( form . blurredFields . has ( 'email' ) ) . toBe ( true ) 
@@ -363,6 +379,7 @@ describe('Form', () => {
363379      watch ( ( )  =>  form . touchedFields ,  mockWatchCallback ,  {  deep : true  } ) 
364380
365381      email . trigger ( 'focus' ) 
382+       await  nextTick ( ) 
366383      await  flushPromises ( ) 
367384      expect ( mockWatchCallback ) . toHaveBeenCalled ( ) 
368385    } ) 
@@ -374,6 +391,7 @@ describe('Form', () => {
374391      watch ( ( )  =>  form . touchedFields ,  mockWatchCallback ,  {  deep : true  } ) 
375392
376393      email . trigger ( 'change' ) 
394+       await  nextTick ( ) 
377395      await  flushPromises ( ) 
378396      expect ( mockWatchCallback ) . toHaveBeenCalled ( ) 
379397    } ) 
@@ -385,6 +403,7 @@ describe('Form', () => {
385403      watch ( ( )  =>  form . blurredFields ,  mockWatchCallback ,  {  deep : true  } ) 
386404
387405      email . trigger ( 'blur' ) 
406+       await  nextTick ( ) 
388407      await  flushPromises ( ) 
389408      expect ( mockWatchCallback ) . toHaveBeenCalled ( ) 
390409    } ) 
@@ -395,6 +414,7 @@ describe('Form', () => {
395414      watch ( ( )  =>  form . dirtyFields ,  mockWatchCallback ,  {  deep : true  } ) 
396415
397416      email . trigger ( 'change' ) 
417+       await  nextTick ( ) 
398418      await  flushPromises ( ) 
399419      expect ( mockWatchCallback ) . toHaveBeenCalled ( ) 
400420    } ) 
@@ -404,6 +424,7 @@ describe('Form', () => {
404424      expect ( form . dirty ) . toBe ( false ) 
405425
406426      email . trigger ( 'change' ) 
427+       await  nextTick ( ) 
407428      await  flushPromises ( ) 
408429
409430      expect ( form . dirty ) . toBe ( true ) 
@@ -429,6 +450,19 @@ describe('Form', () => {
429450      } ) 
430451      form  =  wrapper . setupState . form . value 
431452      state  =  wrapper . setupState . state 
453+ 
454+       // Wait for all mounting and initialization to complete 
455+       await  nextTick ( ) 
456+       await  flushPromises ( ) 
457+ 
458+       // Ensure form state is clean 
459+       form . touchedFields . clear ( ) 
460+       form . dirtyFields . clear ( ) 
461+       form . blurredFields . clear ( ) 
462+     } ) 
463+ 
464+     afterEach ( ( )  =>  { 
465+       wrapper ?. unmount ( ) 
432466    } ) 
433467
434468    it ( 'submit error works' ,  async  ( )  =>  { 
@@ -483,6 +517,19 @@ describe('Form', () => {
483517      vi . clearAllMocks ( ) 
484518      wrapper  =  await  renderForm ( {  fixture : 'FormNested' ,  props : {  onSubmit,  onError }  } ) 
485519      form  =  wrapper . setupState . form . value 
520+ 
521+       // Wait for all mounting and initialization to complete 
522+       await  nextTick ( ) 
523+       await  flushPromises ( ) 
524+ 
525+       // Ensure form state is clean 
526+       form . touchedFields . clear ( ) 
527+       form . dirtyFields . clear ( ) 
528+       form . blurredFields . clear ( ) 
529+     } ) 
530+ 
531+     afterEach ( ( )  =>  { 
532+       wrapper ?. unmount ( ) 
486533    } ) 
487534
488535    it ( 'getErrors returns nested errors' ,  async  ( )  =>  { 
0 commit comments