diff options
| author | zyoshoka <107108195+zyoshoka@users.noreply.github.com> | 2024-06-08 18:00:54 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-08 18:00:54 +0900 |
| commit | 9849aab40283cbde2184e74d4795aec8ef8ccba3 (patch) | |
| tree | 913efa935d00b01f9936794e74e410283ba1dbc5 /packages/frontend/src/components/MkCwButton.stories.impl.ts | |
| parent | feat: 通報を受けた際にメールまたはWebhookで通知を送出出... (diff) | |
| download | sharkey-9849aab40283cbde2184e74d4795aec8ef8ccba3.tar.gz sharkey-9849aab40283cbde2184e74d4795aec8ef8ccba3.tar.bz2 sharkey-9849aab40283cbde2184e74d4795aec8ef8ccba3.zip | |
test(#10336): add `components/MkC.*` stories (#13830)
* test(storybook): add `components/MkC.*` stories
* test(storybook): add some tests
* test: add sleep
* test: comment-out flaky test
* test(storybook): add test for `MkChannelFollowButton`
* chore(storybook): tweak sleep duration in `MkChannelFollowButton` story test
* fix(chromatic): add delay to `MkChannelList`
* chore: replace `mswDecorator` with `mswLoader`
* fix(storybook): tweak some parameters
* chore: serve static files
* fix(chromatic): add delay to `MkCwButton`
* chore: delete logging for debug
* fix: add right click in `MkContextMenu` play
* refactor: remove unused imports
Diffstat (limited to 'packages/frontend/src/components/MkCwButton.stories.impl.ts')
| -rw-r--r-- | packages/frontend/src/components/MkCwButton.stories.impl.ts | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkCwButton.stories.impl.ts b/packages/frontend/src/components/MkCwButton.stories.impl.ts new file mode 100644 index 0000000000..05c6001552 --- /dev/null +++ b/packages/frontend/src/components/MkCwButton.stories.impl.ts @@ -0,0 +1,89 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +/* eslint-disable import/no-default-export */ +import { StoryObj } from '@storybook/vue3'; +import { action } from '@storybook/addon-actions'; +import { expect, userEvent, within } from '@storybook/test'; +import { file } from '../../.storybook/fakes.js'; +import MkCwButton from './MkCwButton.vue'; +import { i18n } from '@/i18n.js'; +import { semaphore } from '@/scripts/test-utils.js'; + +function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +const s = semaphore(); + +export const Default = { + render(args) { + return { + components: { + MkCwButton, + }, + data() { + return { + showContent: false, + }; + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...this.args, + }; + }, + events() { + return { + 'update:modelValue': action('update:modelValue'), + }; + }, + }, + template: '<MkCwButton v-model="showContent" v-bind="props" v-on="events" />', + }; + }, + args: { + text: 'Some CW content', + }, + async play({ canvasElement }) { + await s.acquire(); + await sleep(1000); + const canvas = within(canvasElement); + const buttonElement = canvas.getByRole<HTMLButtonElement>('button'); + await expect(buttonElement).toHaveTextContent(i18n.ts._cw.show); + await expect(buttonElement).toHaveTextContent(i18n.tsx._cw.chars({ count: 15 })); + await userEvent.click(buttonElement); + await expect(buttonElement).toHaveTextContent(i18n.ts._cw.hide); + await userEvent.click(buttonElement); + s.release(); + }, + parameters: { + chromatic: { + // NOTE: テストが終わるまで待つ + delay: 5000, + }, + layout: 'centered', + }, +} satisfies StoryObj<typeof MkCwButton>; +export const IncludesTextAndDriveFile = { + ...Default, + args: { + text: 'Some CW content', + files: [file()], + }, + async play({ canvasElement }) { + const canvas = within(canvasElement); + const buttonElement = canvas.getByRole<HTMLButtonElement>('button'); + await expect(buttonElement).toHaveTextContent(i18n.tsx._cw.chars({ count: 15 })); + await expect(buttonElement).toHaveTextContent(' / '); + await expect(buttonElement).toHaveTextContent(i18n.tsx._cw.files({ count: 1 })); + }, +} satisfies StoryObj<typeof MkCwButton>; |