@storybook/test-runner
Version:
Test runner for Storybook stories
95 lines (87 loc) • 4.01 kB
TypeScript
import { Page, BrowserContext } from 'playwright';
import { StoryContextForEnhancers } from '@storybook/csf';
import { Config } from '@jest/types';
import * as t from '@babel/types';
type TestContext$1 = {
id: string;
title: string;
name: string;
hasFailure?: boolean;
};
type PrepareContext = {
page: Page;
browserContext: BrowserContext;
testRunnerConfig: TestRunnerConfig;
};
type TestHook = (page: Page, context: TestContext$1) => Promise<void>;
type HttpHeaderSetter = (url: string) => Promise<Record<string, any>>;
type PrepareSetter = (context: PrepareContext) => Promise<void>;
interface TestRunnerConfig {
setup?: () => void;
/**
* @deprecated Use `preVisit` instead.
*/
preRender?: TestHook;
/**
* @deprecated Use `postVisit` instead.
*/
postRender?: TestHook;
/**
* Runs before each story is visited. By this point, the story is not rendered in the browser.
* This is useful for preparing the browser environment such as setting viewport size, etc.
* @see https://github.com/storybookjs/test-runner#previsit
*/
preVisit?: TestHook;
/**
* Runs after each story is visited. This means the story has finished rendering and running its play function.
* This is useful for taking screenshots, snapshots, accessibility tests, etc.
* @see https://github.com/storybookjs/test-runner#postvisit
*/
postVisit?: TestHook;
/**
* Adds http headers to the test-runner's requests. This is useful if you need to set headers such as `Authorization` for your Storybook instance.
*/
getHttpHeaders?: HttpHeaderSetter;
/**
* Overrides the default prepare behavior of the test-runner. Good for customizing the environment before testing, such as authentication etc.
*
* If you override the default prepare behavior, even though this is powerful, you will be responsible for properly preparing the browser. Future changes to the default prepare function will not get included in your project, so you will have to keep an eye out for changes in upcoming releases.
*/
prepare?: PrepareSetter;
/**
* Tags to include, exclude, or skip. These tags are defined as annotations in your story or meta.
* @see https://github.com/storybookjs/test-runner#filtering-tests-experimental
*/
tags?: {
include?: string[];
exclude?: string[];
skip?: string[];
};
/**
* Defines the log level of the test runner. Browser logs are printed to the console when reporting errors.
* @default 'info'
*/
logLevel?: 'info' | 'warn' | 'error' | 'verbose' | 'none';
/**
* Defines a custom function to process the error message. Useful to sanitize error messages or to add additional information.
*/
errorMessageFormatter?: (error: string) => string;
}
declare const setPreVisit: (preVisit: TestHook) => void;
declare const setPostVisit: (postVisit: TestHook) => void;
declare const getStoryContext: (page: Page, context: TestContext$1) => Promise<StoryContextForEnhancers>;
declare const waitForPageReady: (page: Page) => Promise<void>;
declare const getJestConfig: () => Config.InitialOptions;
declare const setupPage: (page: Page, browserContext: BrowserContext) => Promise<void>;
declare const getTestRunnerConfig: (configDir?: string) => TestRunnerConfig | undefined;
interface TestContext {
storyExport?: t.Identifier;
name: t.Literal;
title: t.Literal;
id: t.Literal;
}
type TemplateResult = t.Statement | t.Statement[];
type TestPrefixer = (context: TestContext) => TemplateResult;
declare const testPrefixer: TestPrefixer;
declare const transformPlaywright: (src: string, filename: string) => string;
export { HttpHeaderSetter, PrepareContext, PrepareSetter, TestContext$1 as TestContext, TestHook, TestRunnerConfig, getJestConfig, getStoryContext, getTestRunnerConfig, setPostVisit, setPreVisit, setupPage, testPrefixer, transformPlaywright, waitForPageReady };