From 356fd72603ad09737d82c65aea90baef70bcda7c Mon Sep 17 00:00:00 2001 From: "Acid Chicken (硫酸鶏)" Date: Sat, 25 Mar 2023 23:32:47 +0900 Subject: build(#10336): interactions --- .../src/components/global/MkA.stories.impl.ts | 46 ++++++++++++++++++++++ .../frontend/src/components/global/MkA.stories.ts | 25 ++++++++++-- 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 packages/frontend/src/components/global/MkA.stories.impl.ts (limited to 'packages/frontend/src/components/global') diff --git a/packages/frontend/src/components/global/MkA.stories.impl.ts b/packages/frontend/src/components/global/MkA.stories.impl.ts new file mode 100644 index 0000000000..b1a88be5a3 --- /dev/null +++ b/packages/frontend/src/components/global/MkA.stories.impl.ts @@ -0,0 +1,46 @@ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +import { expect } from '@storybook/jest'; +import { userEvent, within } from '@storybook/testing-library'; +import { StoryObj } from '@storybook/vue3'; +import MkA from './MkA.vue'; +import { tick } from '@/scripts/test-utils'; +export const Default = { + render(args) { + return { + components: { + MkA, + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...args, + }; + }, + }, + template: 'Text', + }; + }, + args: { + to: '#test', + }, + parameters: { + layout: 'centered', + }, +} satisfies StoryObj; +export const ContextMenu = { + ...Default, + async play({ canvasElement }) { + const canvas = within(canvasElement); + const a = canvas.getByRole('link'); + await expect(a.href).toMatch(/^https?:\/\/.*#test$/); + await userEvent.click(a, { button: 2 }); + await tick(); + const menu = canvas.getByRole('menu'); + await expect(menu).toBeInTheDocument(); + }, +} satisfies StoryObj; diff --git a/packages/frontend/src/components/global/MkA.stories.ts b/packages/frontend/src/components/global/MkA.stories.ts index 91ea368263..ce648f2d57 100644 --- a/packages/frontend/src/components/global/MkA.stories.ts +++ b/packages/frontend/src/components/global/MkA.stories.ts @@ -1,11 +1,17 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable import/no-default-export */ -import { Meta, StoryObj } from '@storybook/vue3'; -import MkA from './MkA.vue'; +import { Meta } from '@storybook/vue3'; const meta = { title: 'components/global/MkA', component: MkA, } satisfies Meta; +export default meta; +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +import { expect } from '@storybook/jest'; +import { userEvent, within } from '@storybook/testing-library'; +import { StoryObj } from '@storybook/vue3'; +import MkA from './MkA.vue'; +import { tick } from '@/scripts/test-utils'; export const Default = { render(args) { return { @@ -24,11 +30,22 @@ export const Default = { }; }, }, - template: '', + template: 'Text', }; }, + async play({ canvasElement }) { + const canvas = within(canvasElement); + const a = canvas.getByRole('link'); + await expect(a.href).toMatch(/^https?:\/\/.*#test$/); + await userEvent.click(a, { button: 2 }); + await tick(); + const menu = canvas.getByRole('menu'); + await expect(menu).toBeInTheDocument(); + }, + args: { + to: '#test', + }, parameters: { layout: 'centered', }, } satisfies StoryObj; -export default meta; -- cgit v1.3.1-freya