ワンクリックで
nachui-testing-playbook
Use when writing or running automated tests inside packages/ui or verify regressions in NachUI.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when writing or running automated tests inside packages/ui or verify regressions in NachUI.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when modifying or extending CLI commands, prompts, build configurations, or API integrations in packages/cli.
Use when creating, modifying, or refactoring React components in the packages/ui directory of NachUI.
Use when building, extending, or consuming compound components — components made of multiple sub-parts assembled via dot notation (e.g. Dialog.Trigger, Card.Header, Accordion.Item).
Use when styling, designing, or adjusting UI layout, colors, variables, typography, and visual assets in NachUI.
Use when modifying documentation pages, routing, next-intl translations, MDX schemas, or AI functionality in apps/docs.
Use when consuming, importing, or integrating NachUI components inside apps/web or any app that depends on @repo/ui.
| name | nachui-testing-playbook |
| description | Use when writing or running automated tests inside packages/ui or verify regressions in NachUI. |
You are writing and executing tests for the NachUI library. All components must be thoroughly tested using Vitest and React Testing Library (RTL).
.test.ts or .test.tsx file extension.Do NOT use cd into packages. Run test commands from the root directory using pnpm workspace filters:
# Run tests in watch mode (interactive)
pnpm --filter @repo/ui test
# Run a full CI-style run (single run)
pnpm --filter @repo/ui test:run
# Generate test coverage reports
pnpm --filter @repo/ui test:coverage
# Launch Vitest's visual UI dashboard
pnpm --filter @repo/ui test:ui
Run targeted test suites or filters using the native vitest CLI arguments directly:
# Run tests for a specific utility
pnpm --filter @repo/ui vitest run src/lib/cn.test.ts
# Run tests matching a specific component and description
pnpm --filter @repo/ui vitest run src/components/button.test.tsx -t "renders loading state"
@testing-library/user-event over fireEvent to accurately simulate real browser interactions.getByRole('button', { name: /submit/i })) over generic querySelector or test IDs.beforeEach or afterEach.import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';
import { Button } from './button';
describe('Button Component', () => {
it('renders correctly with default values', () => {
render(<Button>Click me</Button>);
const button = screen.getByRole('button', { name: /click me/i });
expect(button).toBeInTheDocument();
});
it('triggers onClick handler when clicked', async () => {
const handleClick = vi.fn();
render(<Button onClick={handleClick}>Click me</Button>);
const button = screen.getByRole('button', { name: /click me/i });
await userEvent.click(button);
expect(handleClick).toHaveBeenCalledTimes(1);
});
it('does not trigger onClick when disabled', async () => {
const handleClick = vi.fn();
render(<Button onClick={handleClick} disabled>Click me</Button>);
const button = screen.getByRole('button', { name: /click me/i });
await userEvent.click(button);
expect(handleClick).not.toHaveBeenCalled();
});
});