```ts // MyComponent.stories.ts|tsx import { userEvent, waitFor, within } from '@storybook/testing-library'; // Replace your-framework with the name of your framework import type { Meta, StoryObj } from '@storybook/your-framework'; import { MyComponent } from './MyComponent'; const meta: Meta = { title: 'WithAsync', component: MyComponent, }; export default meta; type Story = StoryObj; /* See https://storybook.js.org/docs/7.0/react/writing-stories/play-function#working-with-the-canvas * to learn more about using the canvasElement to query the DOM */ export const ExampleAsyncStory: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); const Input = canvas.getByLabelText('Username', { selector: 'input', }); await userEvent.type(Input, 'WrongInput', { delay: 100, }); // See https://storybook.js.org/docs/7.0/react/essentials/actions#automatically-matching-args to learn how to setup logging in the Actions panel const Submit = canvas.getByRole('button'); await userEvent.click(Submit); await waitFor(async () => { await userEvent.hover(canvas.getByTestId('error')); }); }, }; ```