UNPKG

2.11 kBJavaScriptView Raw
1import { axe } from 'jest-axe';
2import React from 'react';
3import renderer from 'react-test-renderer';
4import { composeStories } from '@storybook/testing-react';
5import { screen } from '@testing-library/react';
6import { defaultContext, TypeaheadContext, } from '../core/Context';
7export { axe };
8export * from '@storybook/testing-react';
9export * from '@testing-library/react';
10export { default as userEvent } from '@testing-library/user-event';
11export function noop() { }
12export function prepareSnapshot(element) {
13 return renderer.create(element).toJSON();
14}
15export function generateSnapshots(stories) {
16 const composed = composeStories(stories);
17 Object.entries(composed).forEach(([storyName, Story]) => {
18 if (Story.parameters?.snapshot?.skip)
19 return;
20 test(`${storyName} story renders snapshot`, async () => {
21 expect(prepareSnapshot(React.createElement(Story, null))).toMatchSnapshot();
22 });
23 });
24}
25export const HintProvider = ({ children, ...context }) => {
26 return (React.createElement(TypeaheadContext.Provider, { value: {
27 ...defaultContext,
28 ...context,
29 } }, children));
30};
31export function getHint(container) {
32 return container.getElementsByClassName('rbt-input-hint')[0];
33}
34export async function findInput(multiple = false) {
35 const role = multiple ? 'textbox' : 'combobox';
36 return screen.findByRole(role);
37}
38export function getInput() {
39 return screen.queryByRole('combobox') || screen.queryByRole('textbox');
40}
41export async function findItems() {
42 return screen.findAllByRole('option');
43}
44export function getItems() {
45 return screen.getAllByRole('option');
46}
47export async function findMenu() {
48 return screen.findByRole('listbox');
49}
50export function getMenu() {
51 return screen.queryByRole('listbox');
52}
53export async function findPaginator() {
54 const items = await findItems();
55 return items[items.length - 1];
56}
57export function getTokens(container) {
58 return container.getElementsByClassName('rbt-token');
59}
60export async function waitForOverlay() {
61 await findMenu();
62}