[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
12

Configure Feed

Select the types of activity you want to include in your feed.

chore: improve waitFor/waitUntil examples

Vladimir Sheremet (Sep 16, 2023, 10:20 AM +0200) d284e124 e0ac97cf

+27 -27
+27 -27
docs/api/vi.md
··· 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) 738 + await vi.waitFor( 739 + () => { 740 + if (!server.isReady) 741 + throw new Error('Server not started') 740 742 741 - function checkServerStart() { 742 - if (!server) 743 - throw new Error('Server not started') 744 - 745 - console.log('Server started') 746 - } 747 - 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 756 + // @vitest-environment jsdom 757 + 759 758 import { expect, test, vi } from 'vitest' 759 + import { getDOMElementAsync, populateDOMAsync } from './dom.js' 760 760 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 - } 761 + test('Element exists in a DOM', async () => { 762 + // start populating DOM 763 + populateDOMAsync() 770 764 771 - const server = await vi.waitFor(startServer, { 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