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/MkClickerGame.stories.impl.ts | |
| parent | feat: 通報を受けた際にメールまたはWebhookで通知を送出出... (diff) | |
| download | misskey-9849aab40283cbde2184e74d4795aec8ef8ccba3.tar.gz misskey-9849aab40283cbde2184e74d4795aec8ef8ccba3.tar.bz2 misskey-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/MkClickerGame.stories.impl.ts')
| -rw-r--r-- | packages/frontend/src/components/MkClickerGame.stories.impl.ts | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkClickerGame.stories.impl.ts b/packages/frontend/src/components/MkClickerGame.stories.impl.ts new file mode 100644 index 0000000000..8378010f8b --- /dev/null +++ b/packages/frontend/src/components/MkClickerGame.stories.impl.ts @@ -0,0 +1,79 @@ +/* + * 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 { HttpResponse, http } from 'msw'; +import { action } from '@storybook/addon-actions'; +import { expect, within } from '@storybook/test'; +import { commonHandlers } from '../../.storybook/mocks.js'; +import MkClickerGame from './MkClickerGame.vue'; + +function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +export const Default = { + render(args) { + return { + components: { + MkClickerGame, + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...this.args, + }; + }, + }, + template: '<MkClickerGame v-bind="props" />', + }; + }, + async play({ canvasElement }) { + await sleep(1000); + const canvas = within(canvasElement); + const count = canvas.getByTestId('count'); + // NOTE: flaky なので N/A も通しておく + await expect(count).toHaveTextContent(/^(0|N\/A)$/); + // FIXME: flaky + // const buttonElement = canvas.getByRole<HTMLButtonElement>('button'); + // await userEvent.click(buttonElement); + // await expect(count).toHaveTextContent('1'); + }, + parameters: { + layout: 'centered', + msw: { + handlers: [ + ...commonHandlers, + http.post('/api/i/registry/get', async ({ request }) => { + action('POST /api/i/registry/get')(await request.json()); + return HttpResponse.json({ + error: { + message: 'No such key.', + code: 'NO_SUCH_KEY', + id: 'ac3ed68a-62f0-422b-a7bc-d5e09e8f6a6a', + }, + }, { + status: 400, + }); + }), + http.post('/api/i/registry/set', async ({ request }) => { + action('POST /api/i/registry/set')(await request.json()); + return HttpResponse.json(undefined, { status: 204 }); + }), + http.post('/api/i/claim-achievement', async ({ request }) => { + action('POST /api/i/claim-achievement')(await request.json()); + return HttpResponse.json(undefined, { status: 204 }); + }), + ], + }, + }, +} satisfies StoryObj<typeof MkClickerGame>; |