mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
### What? Updated the example `with-storybook`, by upgrading storybook to version 8.0.9 (the latest) which required bumping the version of next.js to 14 from 13 in order to make them work together. ### Why? The motivation for this change is that we now have better the lastest features of storybook such as chromatic and visual testing. As of previous updates, it is still treated as its own framework and so users can specify the `storybook` framework as well as custom build command `build-storybook` in order to get near zero-config support. --------- Co-authored-by: Sam Ko <[email protected]>
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import type { Meta, StoryObj } from "@storybook/react";
|
|
import { within, userEvent, expect } from "@storybook/test";
|
|
|
|
import { Page } from "./Page";
|
|
|
|
const meta = {
|
|
title: "Example/Page",
|
|
component: Page,
|
|
parameters: {
|
|
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
layout: "fullscreen",
|
|
},
|
|
} satisfies Meta<typeof Page>;
|
|
|
|
export default meta;
|
|
type Story = StoryObj<typeof meta>;
|
|
|
|
export const LoggedOut: Story = {};
|
|
|
|
// More on interaction 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();
|
|
},
|
|
};
|