- Remove unused @trpc/tanstack-react-query dependency - Document renderWithProviders tRPC provider omission (boundary constraint) - Implement deep merge in defineFactory (preserves nested sibling keys) - Document httpBatchLink<any> rationale in mock-trpc.ts - Align core-testing's own vitest.config with safety defaults (mockReset, unstubGlobals) - Add createMockTrpcClient usage example to AGENTS.md Reviewer: superpowers:code-reviewer (Task 1 of Plan 7). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
@repo/core-testing
Shared testing utilities. Tag: tooling. May be depended on by any package as a devDependency.
Subpath exports
@repo/core-testing/factory—defineFactory<T>(builder)for test data factories@repo/core-testing/contract—defineContractSuite<T>(name, suite)for cross-impl contract tests@repo/core-testing/react—renderWithProviders,createMockTrpcClientrenderWithProvidersdoes NOT include a tRPC provider. Consumers needing tRPC should wire their own TRPCProvider (from their app's tRPC client setup) and usecreateMockTrpcClientas the client. This constraint exists because tooling packages cannot importAppRouterfrom@repo/core-api.
@repo/core-testing/payload—stubPayloadConfig,mockPayloadModule@repo/core-testing/setup/jsdom— vitest setupFile (jest-dom + cleanup)@repo/core-testing/setup/node— vitest setupFile (no-op placeholder)
Adding a factory
import { defineFactory } from "@repo/core-testing/factory";
export const articleFactory = defineFactory<Article>(({ sequence }) => ({
id: `article-${sequence}`,
title: `Article ${sequence}`,
// stable defaults — overrides drive variation
}));
Using createMockTrpcClient
For component tests that consume tRPC procedures, mock the responses by procedure path (dot-separated):
import { createMockTrpcClient } from "@repo/core-testing/react";
import type { AppRouter } from "@repo/core-api"; // import in your app/feature, not in core-testing
const trpcClient = createMockTrpcClient<AppRouter>({
"blog.articleBySlug": { id: "1", title: "Hello", slug: "hello" },
"blog.listArticles": [],
});
Combine with your app's TRPCProvider for components that need a tRPC client in the render tree.
Adding a contract suite
See docs/guides/tdd-workflow.md §"Contract suite usage".