name: create-tests description: This skill should be used when the user asks to "create tests", "write tests", "add unit tests", "add e2e tests", "test this component", or mentions testing, Vitest, Playwright, or test coverage. Covers unit tests with Vitest and e2e tests with Playwright including organization logic.
import { describe, expect, it, vi } from "vitest";
import { screen, waitFor } from "@testing-library/react";
import { setup } from "@test/setup";
describe("ComponentName", () => {
it("should render correctly", async () => {
const { user } = setup(<ComponentName />);
expect(screen.getByText("Expected Text")).toBeInTheDocument();
});
});
Run: pnpm test:ci
import { expect, test } from "@playwright/test";
import { createTestAccount } from "./utils/auth-test";
test("user flow description", async ({ page }) => {
const userData = await createTestAccount({
page,
callbackURL: "/orgs",
});
await page.waitForURL(/\/orgs\/.*/);
expect(page.url()).toMatch(/\/orgs\/.*/);
});
Run: pnpm test:e2e:ci
pnpm test:ci- Unit tests (non-interactive)pnpm test:e2e:ci- E2E tests (headless)
NEVER use interactive commands (pnpm test, pnpm test:e2e)
Unit tests: Fast, isolated, mock dependencies E2E tests: Real browser, real database, full user journeys
@/lib/prisma- Database mock@/lib/auth-client- Auth client mock@/lib/auth/auth-user-getUser,getRequiredUser@/lib/organizations/get-org-getCurrentOrg,getRequiredCurrentOrgsonner- Toast notificationsnext/navigation- Router mocks
Use createTestSearchParams() for URL params testing.
references/unit-tests.md- Complete unit testing patterns with Vitestreferences/integration-tests.md- E2E testing patterns with Playwright