UNPKG

creevey

Version:

Cross-browser screenshot testing tool for Storybook with fancy UI Runner

32 lines (29 loc) 1.12 kB
import { StorybookEvents } from '../types'; import { Page } from '@playwright/test'; export async function waitForStorybookReady(page: Page, timeout = 60000): Promise<void> { const isStorybookInitialized = await page.evaluate( ({ timeout, event }: { timeout: number; event: string }) => { return new Promise<boolean>((resolve, reject) => { let attempts = 0; const maxAttempts = timeout / 100; function check() { if ( typeof window.__STORYBOOK_ADDONS_CHANNEL__ !== 'undefined' && window.__STORYBOOK_ADDONS_CHANNEL__.last(event) !== undefined ) { resolve(true); } else if (attempts++ < maxAttempts) { setTimeout(check, 100); } else { reject(new Error('Storybook initialization timed out. Required Storybook functions not found on window.')); } } check(); }); }, { timeout, event: StorybookEvents.SET_GLOBALS }, ); if (!isStorybookInitialized) { throw new Error('Failed to confirm Storybook API is ready after extended wait.'); } }