generated from storybookjs/addon-kit
-
Notifications
You must be signed in to change notification settings - Fork 77
/
Copy pathhooks.ts
32 lines (26 loc) · 808 Bytes
/
hooks.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import global from 'global';
import type { Page } from 'playwright';
import type { StoryContext } from '@storybook/csf';
export type TestContext = {
id: string;
title: string;
name: string;
};
export type TestHook = (page: Page, context: TestContext) => Promise<void>;
export interface TestRunnerConfig {
setup?: () => void;
preRender?: TestHook;
postRender?: TestHook;
}
export const setPreRender = (preRender: TestHook) => {
global.__sbPreRender = preRender;
};
export const setPostRender = (postRender: TestHook) => {
global.__sbPostRender = postRender;
};
export const getStoryContext = async (page: Page, context: TestContext): Promise<StoryContext> => {
// @ts-ignore
return page.evaluate(({ storyId }) => globalThis.__getContext(storyId), {
storyId: context.id,
});
};