import type { Meta, StoryObj } from '@storybook/tanstack-react'; import { expect, userEvent, within } from 'storybook/test'; import { Route } from './Page'; import './page.css'; const meta = { title: 'Example/Page', parameters: { // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout layout: 'fullscreen', tanstack: { // Example of providing a custom route for a story. // The page component is extracted if a component is not set for the story. // More on mocking Tanstack Router at: https://storybook.js.org/docs/get-started/tanstack-react#routing router: { route: Route, }, }, }, } satisfies Meta; export default meta; type Story = StoryObj; export const LoggedOut: Story = {}; // More on component testing: https://storybook.js.org/docs/writing-tests/interaction-testing export const LoggedIn: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); const loginButton = canvas.getByRole('button', { name: /Log in/i }); await expect(loginButton).toBeInTheDocument(); await userEvent.click(loginButton); await expect(loginButton).not.toBeInTheDocument(); const logoutButton = canvas.getByRole('button', { name: /Log out/i }); await expect(logoutButton).toBeInTheDocument(); }, };