jest-openapi is a Jest plugin that significantly enhances the standard Jest assertion capabilities by providing specialized matchers for validating API responses and data objects against an OpenAPI specification (supporting both v2 and v3). Its core purpose is to automate the verification that a server's actual runtime behavior precisely matches its documented API contract. The current stable version, 0.14.2, was last updated in January 2022, having seen several iterative improvements and fixes throughout 2021, indicating an actively maintained project with a practical, feature-driven release cadence. This library is indispensable for ensuring contract consistency and preventing silent discrepancies between backend service implementations and their public-facing documentation, thereby reducing integration issues for consuming clients. It stands out by offering broad compatibility with responses from various popular HTTP client libraries, including axios, request-promise, supertest, and superagent. Furthermore, it effortlessly processes OpenAPI specifications provided in either YAML or JSON formats, intelligently resolves $ref declarations within the spec, and delivers clear, diagnostic error messages when validation failures occur. For development teams utilizing testing frameworks that are built around Chai, a companion package, chai-openapi-response-validator, offers an equivalent set of validation utilities.
npm install jest-openapiVerified import paths — ran on the pinned version, not inferred.
Demonstrates initializing jest-openapi with an OpenAPI spec and using `toSatisfyApiSpec()` to validate an HTTP response and `toSatisfySchemaInApiSpec()` for an object.
Review your tests that assert on specific error messages or subtle validation edge cases, as they might need adjustments. Ensure your API still passes validation against the updated dependency.
Change `const jestOpenAPI = require('jest-openapi');` to `const jestOpenAPI = require('jest-openapi').default;`.Ensure `jestOpenAPI('path/to/your/spec.yml')` is executed once in your test setup (e.g., `setupFilesAfterEnv` in Jest config or at the top of a test file) before any tests run that use its matchers. Verify the path is correct and the file exists.Ensure `jestOpenAPI('path/to/spec.yml');` is called once in your test setup or at the beginning of the test file where the matchers are used. Also, check that the `import jestOpenAPI from 'jest-openapi';` or `const jestOpenAPI = require('jest-openapi').default;` statement is present.Inspect the detailed error message provided by jest-openapi. It will pinpoint which part of the response (e.g., status code, header, body property) violated the spec. You will then need to either adjust your API implementation to match the spec or update your OpenAPI specification to accurately reflect the API's current behavior.
Double-check the provided path string. Ensure it is absolute or correctly relative to the current working directory or the test file. Verify that the file exists, is readable, and contains valid YAML or JSON conforming to the OpenAPI specification. If providing an object, ensure it is a correctly structured OpenAPI definition.