@@ -730,49 +730,49 @@ This is very useful when you need to wait for some asynchronous action to comple
730
730
731
731
``` ts
732
732
import { expect , test , vi } from ' vitest'
733
+ import { createServer } from ' ./server.js'
733
734
734
735
test (' Server started successfully' , async () => {
735
- let server = false
736
+ const server = createServer ()
736
737
737
- setTimeout (() => {
738
- server = true
739
- }, 100 )
740
-
741
- function checkServerStart() {
742
- if (! server )
743
- throw new Error (' Server not started' )
744
-
745
- console .log (' Server started' )
746
- }
738
+ await vi .waitFor (
739
+ () => {
740
+ if (! server .isReady )
741
+ throw new Error (' Server not started' )
747
742
748
- const res = await vi .waitFor (checkServerStart , {
749
- timeout: 500 , // default is 1000
750
- interval: 20 , // default is 50
751
- })
752
- expect (server ).toBe (true )
743
+ console .log (' Server started' )
744
+ }, {
745
+ timeout: 500 , // default is 1000
746
+ interval: 20 , // default is 50
747
+ }
748
+ )
749
+ expect (server .isReady ).toBe (true )
753
750
})
754
751
```
755
752
756
753
It also works for asynchronous callbacks
757
754
758
755
``` ts
759
- import { expect , test , vi } from ' vitest'
756
+ // @ vitest-environment jsdom
760
757
761
- test (' Server started successfully' , async () => {
762
- async function startServer() {
763
- return new Promise ((resolve ) => {
764
- setTimeout (() => {
765
- server = true
766
- resolve (' Server started' )
767
- }, 100 )
768
- })
769
- }
770
-
771
- const server = await vi .waitFor (startServer , {
758
+ import { expect , test , vi } from ' vitest'
759
+ import { getDOMElementAsync , populateDOMAsync } from ' ./dom.js'
760
+
761
+ test (' Element exists in a DOM' , async () => {
762
+ // start populating DOM
763
+ populateDOMAsync ()
764
+
765
+ const element = await vi .waitFor (async () => {
766
+ // try to get the element until it exists
767
+ const element = await getDOMElementAsync () as HTMLElement | null
768
+ expect (element ).toBeTruthy ()
769
+ expect (element .dataset .initialized ).toBeTruthy ()
770
+ return element
771
+ }, {
772
772
timeout: 500 , // default is 1000
773
773
interval: 20 , // default is 50
774
774
})
775
- expect (server ). toBe ( ' Server started ' )
775
+ expect (element ). toBeInstanceOf ( HTMLElement )
776
776
})
777
777
```
778
778
0 commit comments