UNPKG

react-bootstrap-typeahead

Version:
63 lines (62 loc) 2.11 kB
import { axe } from 'jest-axe'; import React from 'react'; import renderer from 'react-test-renderer'; import { composeStories } from '@storybook/testing-react'; import { screen } from '@testing-library/react'; import { defaultContext, TypeaheadContext, } from '../core/Context'; export { axe }; export * from '@storybook/testing-react'; export * from '@testing-library/react'; export { default as userEvent } from '@testing-library/user-event'; export function noop() { } export function prepareSnapshot(element) { return renderer.create(element).toJSON(); } export function generateSnapshots(stories) { const composed = composeStories(stories); Object.entries(composed).forEach(([storyName, Story]) => { if (Story.parameters?.snapshot?.skip) return; test(`${storyName} story renders snapshot`, async () => { expect(prepareSnapshot(React.createElement(Story, null))).toMatchSnapshot(); }); }); } export const HintProvider = ({ children, ...context }) => { return (React.createElement(TypeaheadContext.Provider, { value: { ...defaultContext, ...context, } }, children)); }; export function getHint(container) { return container.getElementsByClassName('rbt-input-hint')[0]; } export async function findInput(multiple = false) { const role = multiple ? 'textbox' : 'combobox'; return screen.findByRole(role); } export function getInput() { return screen.queryByRole('combobox') || screen.queryByRole('textbox'); } export async function findItems() { return screen.findAllByRole('option'); } export function getItems() { return screen.getAllByRole('option'); } export async function findMenu() { return screen.findByRole('listbox'); } export function getMenu() { return screen.queryByRole('listbox'); } export async function findPaginator() { const items = await findItems(); return items[items.length - 1]; } export function getTokens(container) { return container.getElementsByClassName('rbt-token'); } export async function waitForOverlay() { await findMenu(); }