Adds @repo/core-testing (tag: tooling) with:
- factory/defineFactory: monotonic-sequence object factories with overrides
- contract/defineContractSuite: shared test suites runnable against multiple impls
- react/renderWithProviders + createMockTrpcClient: RTL helpers
- payload/stubPayloadConfig + mockPayloadModule: Payload mocking helpers
- setup/{jsdom,node}: vitest setup files
Spec: docs/superpowers/specs/2026-05-05-tdd-foundation-design.md §5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
877 B
TypeScript
30 lines
877 B
TypeScript
import type { PropsWithChildren, ReactElement } from "react";
|
|
import { render } from "@testing-library/react";
|
|
import type { RenderResult } from "@testing-library/react";
|
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
|
|
export interface RenderOptions {
|
|
queryClient?: QueryClient;
|
|
}
|
|
|
|
export function renderWithProviders(
|
|
ui: ReactElement,
|
|
options: RenderOptions = {},
|
|
): RenderResult & { queryClient: QueryClient } {
|
|
const queryClient =
|
|
options.queryClient ??
|
|
new QueryClient({
|
|
defaultOptions: {
|
|
queries: { retry: false },
|
|
mutations: { retry: false },
|
|
},
|
|
});
|
|
|
|
const Wrapper = ({ children }: PropsWithChildren) => (
|
|
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
|
|
);
|
|
|
|
const result = render(ui, { wrapper: Wrapper });
|
|
return Object.assign(result, { queryClient });
|
|
}
|