or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdjest-extensions.mdmonorepo-utilities.mdresolver-testing.mdserver-mocking.mdtypescript-validation.md
tile.json

tessl/npm-graphql-codegen--testing

Jest testing utilities for GraphQL Code Generator with custom matchers, TypeScript validation, and GraphQL server mocking

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@graphql-codegen/testing@3.0.x

To install, run

npx @tessl/cli install tessl/npm-graphql-codegen--testing@3.0.0

index.mddocs/

GraphQL Codegen Testing

GraphQL Codegen Testing provides comprehensive testing utilities specifically designed for the GraphQL Code Generator ecosystem. It extends Jest with custom matchers for comparing generated code output, includes utilities for mocking GraphQL servers, TypeScript compilation testing, and monorepo workspace management.

Package Information

  • Package Name: @graphql-codegen/testing
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install @graphql-codegen/testing
  • Peer Dependencies: jest-diff, typescript >= 3.0.0

Core Imports

import { 
  validateTs, 
  compileTs, 
  mockGraphQLServer, 
  useMonorepo,
  resolversTestingSchema,
  resolversTestingValidate
} from "@graphql-codegen/testing";

For CommonJS:

const { 
  validateTs, 
  compileTs, 
  mockGraphQLServer, 
  useMonorepo,
  resolversTestingSchema,
  resolversTestingValidate
} = require("@graphql-codegen/testing");

Important: Importing this package automatically extends Jest with custom matchers. The toBeSimilarStringTo matcher becomes globally available in all test files.

Basic Usage

import { validateTs, resolversTestingValidate } from "@graphql-codegen/testing";

// Validate TypeScript code generated by plugins
const generatedCode = `
  export interface User {
    id: string;
    name: string;
  }
`;

validateTs(generatedCode);

// Test resolver plugins with pre-built schema
const result = await plugin(resolversTestingSchema, [], config);
await resolversTestingValidate(result);

// Use Jest matcher for string comparisons
expect(actualCode).toBeSimilarStringTo(expectedCode);

Architecture

GraphQL Codegen Testing is built around several key components:

  • Jest Extensions: Custom matchers that extend Jest's assertion capabilities for code comparison
  • TypeScript Validation: Utilities for validating and compiling TypeScript code using the TypeScript compiler API
  • GraphQL Server Mocking: Integration with nock and graphql-helix for creating mock GraphQL servers
  • Test Schema: Pre-built GraphQL schema with comprehensive type definitions for resolver testing
  • Monorepo Utilities: Helpers for managing test environments in monorepo setups

Capabilities

Jest Testing Extensions

Custom Jest matchers for comparing generated code output with whitespace normalization and detailed diff reporting.

declare global {
  namespace jest {
    interface Matchers<R> {
      toBeSimilarStringTo(expected: string): R;
    }
  }
}

Jest Extensions

TypeScript Validation

Utilities for validating and compiling TypeScript code generated by GraphQL Codegen plugins, with comprehensive error reporting and customizable compiler options.

function validateTs(
  pluginOutput: Types.PluginOutput,
  options?: CompilerOptions,
  isTsx?: boolean,
  isStrict?: boolean,
  suspenseErrors?: string[],
  compileProgram?: boolean
): void;

function compileTs(
  contents: string,
  options?: CompilerOptions,
  isTsx?: boolean,
  openPlayground?: boolean
): void;

TypeScript Validation

GraphQL Server Mocking

Mock GraphQL server creation for integration testing, built on nock and graphql-helix for realistic GraphQL request/response handling.

function mockGraphQLServer(config: {
  schema: GraphQLSchema;
  host: string;
  path: string | RegExp | ((path: string) => boolean);
  intercept?: (obj: nock.ReplyFnContext) => void;
  method?: string;
}): nock.Scope | null;

GraphQL Server Mocking

Resolver Testing Schema

Pre-built GraphQL schema and validation utilities specifically designed for testing resolver plugins with comprehensive type coverage.

const resolversTestingSchema: GraphQLSchema;

function resolversTestingValidate(
  content: Types.PluginOutput,
  config?: any,
  pluginSchema?: GraphQLSchema,
  additionalCode?: string
): Promise<string>;

Resolver Testing

Monorepo Utilities

Utilities for managing test environments in monorepo setups, including process.cwd() mocking and project directory discovery.

function useMonorepo(options: { dirname: string }): {
  correctCWD(): void;
};

Monorepo Utilities

Types

import { Types } from '@graphql-codegen/plugin-helpers';
import { CompilerOptions } from 'typescript';
import { GraphQLSchema } from 'graphql';
import * as nock from 'nock';

// Re-exported types from dependencies
export { Types, CompilerOptions, GraphQLSchema };

// Plugin output types
interface ComplexPluginOutput {
  prepend?: string[];
  content: string;
  append?: string[];
}

type PluginOutput = string | ComplexPluginOutput;

// Mock server configuration
interface MockGraphQLServerConfig {
  schema: GraphQLSchema;
  host: string;
  path: string | RegExp | ((path: string) => boolean);
  intercept?: (obj: nock.ReplyFnContext) => void;
  method?: string;
}

// Monorepo utilities configuration
interface MonorepoOptions {
  dirname: string;
}

interface MonorepoHelpers {
  correctCWD(): void;
}

// Error types
interface ValidationError extends Error {
  name: 'ValidationError';
}

interface CompilationError extends Error {
  name: 'CompilationError';
  diagnostics?: string[];
}