mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-07 07:21:17 +08:00
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import type { Meta, StoryObj } from '@storybook/svelte';
|
|
import { within, userEvent, expect } from '@storybook/test';
|
|
|
|
import Page from './Page.svelte';
|
|
|
|
const meta = {
|
|
title: 'Example/Page',
|
|
component: Page,
|
|
parameters: {
|
|
// More on how to position stories at: https://storybook.js.org/docs/svelte/configure/story-layout
|
|
layout: 'fullscreen',
|
|
},
|
|
} satisfies Meta<Page>;
|
|
|
|
export default meta;
|
|
type Story = StoryObj<typeof meta>;
|
|
|
|
export const LoggedOut: Story = {};
|
|
|
|
// More on interaction testing: https://storybook.js.org/docs/svelte/writing-tests/interaction-testing
|
|
export const LoggedIn: Story = {
|
|
play: async ({ canvasElement }) => {
|
|
const canvas = within(canvasElement);
|
|
const loginButton = await canvas.getByRole('button', {
|
|
name: /Log in/i,
|
|
});
|
|
await expect(loginButton).toBeInTheDocument();
|
|
await userEvent.click(loginButton);
|
|
await expect(loginButton).not.toBeInTheDocument();
|
|
|
|
const logoutButton = await canvas.getByRole('button', {
|
|
name: /Log out/i,
|
|
});
|
|
await expect(logoutButton).toBeInTheDocument();
|
|
},
|
|
};
|