use waitFor

This commit is contained in:
Kagami Sascha Rosylight 2023-07-12 23:57:26 +02:00
parent 0ba5edc6aa
commit 2184323ae7

View file

@ -1,10 +1,9 @@
/* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable @typescript-eslint/explicit-function-return-type */
import { expect } from '@storybook/jest'; import { expect } from '@storybook/jest';
import { userEvent, within } from '@storybook/testing-library'; import { userEvent, waitFor, within } from '@storybook/testing-library';
import { StoryObj } from '@storybook/vue3'; import { StoryObj } from '@storybook/vue3';
import MkAd from './MkAd.vue'; import MkAd from './MkAd.vue';
import { i18n } from '@/i18n'; import { i18n } from '@/i18n';
import { tick } from '@/scripts/test-utils.js';
const common = { const common = {
render(args) { render(args) {
return { return {
@ -37,8 +36,7 @@ const common = {
const i = buttons[0]; const i = buttons[0];
await expect(i).toBeInTheDocument(); await expect(i).toBeInTheDocument();
await userEvent.click(i); await userEvent.click(i);
await tick(); await waitFor(() => expect(a).not.toBeInTheDocument());
await expect(a).not.toBeInTheDocument();
await expect(i).not.toBeInTheDocument(); await expect(i).not.toBeInTheDocument();
buttons = canvas.getAllByRole<HTMLButtonElement>('button'); buttons = canvas.getAllByRole<HTMLButtonElement>('button');
await expect(buttons).toHaveLength(args.__hasReduce ? 2 : 1); await expect(buttons).toHaveLength(args.__hasReduce ? 2 : 1);
@ -51,11 +49,10 @@ const common = {
await expect(back).toBeInTheDocument(); await expect(back).toBeInTheDocument();
await expect(back).toHaveTextContent(i18n.ts._ad.back); await expect(back).toHaveTextContent(i18n.ts._ad.back);
await userEvent.click(back); await userEvent.click(back);
await tick(); await waitFor(() => expect(back).not.toBeInTheDocument());
if (reduce) { if (reduce) {
await expect(reduce).not.toBeInTheDocument(); await expect(reduce).not.toBeInTheDocument();
} }
await expect(back).not.toBeInTheDocument();
const aAgain = canvas.getByRole<HTMLAnchorElement>('link'); const aAgain = canvas.getByRole<HTMLAnchorElement>('link');
await expect(aAgain).toBeInTheDocument(); await expect(aAgain).toBeInTheDocument();
const imgAgain = within(aAgain).getByRole('img'); const imgAgain = within(aAgain).getByRole('img');