Files
agentic-dev/packages/core-testing/AGENTS.md
Danijel Martinek a533be3c3a fix(core-testing): address code review feedback for Task 1
- 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>
2026-05-05 13:50:32 +02:00

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/factorydefineFactory<T>(builder) for test data factories
  • @repo/core-testing/contractdefineContractSuite<T>(name, suite) for cross-impl contract tests
  • @repo/core-testing/reactrenderWithProviders, createMockTrpcClient
    • renderWithProviders does NOT include a tRPC provider. Consumers needing tRPC should wire their own TRPCProvider (from their app's tRPC client setup) and use createMockTrpcClient as the client. This constraint exists because tooling packages cannot import AppRouter from @repo/core-api.
  • @repo/core-testing/payloadstubPayloadConfig, 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".