Skip to content

Commit d284e12

Browse files
committed
chore: improve waitFor/waitUntil examples
1 parent e0ac97c commit d284e12

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

docs/api/vi.md

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -730,49 +730,49 @@ This is very useful when you need to wait for some asynchronous action to comple
730730

731731
```ts
732732
import { expect, test, vi } from 'vitest'
733+
import { createServer } from './server.js'
733734

734735
test('Server started successfully', async () => {
735-
let server = false
736+
const server = createServer()
736737

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')
747742

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)
753750
})
754751
```
755752

756753
It also works for asynchronous callbacks
757754

758755
```ts
759-
import { expect, test, vi } from 'vitest'
756+
// @vitest-environment jsdom
760757

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+
}, {
772772
timeout: 500, // default is 1000
773773
interval: 20, // default is 50
774774
})
775-
expect(server).toBe('Server started')
775+
expect(element).toBeInstanceOf(HTMLElement)
776776
})
777777
```
778778

0 commit comments

Comments
 (0)