(page: Page, options: Options)
| 10 | const {STORYBOOK_URL = 'http://localhost:6006'} = process.env |
| 11 | |
| 12 | export async function visit(page: Page, options: Options) { |
| 13 | const {id, args, globals} = options |
| 14 | // In CI, the static server strips `.html` extensions |
| 15 | const url = process.env.CI ? new URL(`${STORYBOOK_URL}/iframe`) : new URL(`${STORYBOOK_URL}/iframe.html`) |
| 16 | |
| 17 | url.searchParams.set('id', id) |
| 18 | url.searchParams.set('viewMode', 'story') |
| 19 | |
| 20 | if (args) { |
| 21 | const serialized = Object.entries(args) |
| 22 | .map(([key, value]) => `${key}:${value}`) |
| 23 | .join(',') |
| 24 | url.searchParams.set('args', serialized) |
| 25 | } |
| 26 | |
| 27 | if (globals) { |
| 28 | let params = '' |
| 29 | for (const [key, value] of Object.entries(globals)) { |
| 30 | if (params !== '') { |
| 31 | params += '&' |
| 32 | } |
| 33 | params += `${key}:${value}` |
| 34 | } |
| 35 | url.searchParams.set('globals', params) |
| 36 | } |
| 37 | |
| 38 | await page.goto(url.toString()) |
| 39 | await page.waitForSelector('body.sb-show-main:not(.sb-show-preparing-story)') |
| 40 | await page.waitForSelector('#storybook-root > *') |
| 41 | await waitForImages(page) |
| 42 | } |
no test coverage detected