WireMock is an open source tool for mocking HTTP services, written primarily in Java and available at https://wiremock.org/. According to the README, it achieves over 6 million downloads per month and serves as the foundation for WireMock Cloud, a commercial offering. The project was started in 2011 by Tom Akehurst as a Java library and has since expanded to support multiple programming languages and technology stacks.
The core purpose of WireMock is to enable developers to create stable test and development environments by mocking external APIs, isolating systems from unreliable third-party services, and simulating APIs that do not yet exist. The tool supports multiple deployment models, running as a library within unit tests, as a standalone process, or as a containerized service. Configuration can be managed through a fluent Java API, JSON files, or JSON over HTTP, and the tool includes record and playback capabilities for capturing HTTP traffic proxied to another destination.
WireMock's matching system allows incoming requests to be evaluated against complex and precise criteria across URLs, headers, and body content patterns. Responses can be dynamically generated using a Handlebars-based templating system, enabling sophisticated response customization. The platform includes request verification capabilities, fault injection, response delay simulation, per-request conditional proxying, browser proxying for request inspection and replacement, and stateful behavior simulation. The tool is designed for extensibility with numerous extension points and comprehensive APIs to integrate into existing workflows.
The project maintains a contributing guide and actively encourages community participation. The README explicitly notes that WireMock only uses log4j in test dependencies, with neither the thin nor standalone JAR depending on or embedding log4j, ensuring users can safely use version 2.32.0 and above without exposure to log4j vulnerabilities. The project includes a breaking-change report mechanism using japicmp to track binary-incompatible changes to classes annotated with PublicAPI, helping maintainers communicate API stability to users. Community support is provided through a dedicated Slack workspace for questions and discussion.