Introduction
Gauge is a test automation framework created by ThoughtWorks that takes a different approach to test specification. Tests are written in Markdown files, making them readable by non-technical stakeholders while remaining executable by developers through step implementations in their language of choice.
What Gauge Does
- Uses Markdown-based specifications for human-readable test documentation
- Supports step implementations in Java, JavaScript, Python, Ruby, C#, and Go
- Runs tests in parallel across specs and scenarios for faster feedback
- Generates HTML reports with screenshots and failure details
- Provides data-driven testing through table parameters in Markdown
Architecture Overview
Gauge separates test specifications from implementation. Markdown spec files contain scenarios with plain-text steps. The Gauge runner parses these specs and matches steps to implementations in a language runner plugin. Each language runner is a separate process communicating with the core via protocol buffers, enabling polyglot test projects.
Self-Hosting & Configuration
- Install the Gauge CLI via Homebrew, npm, Chocolatey, or direct download
- Initialize projects with gauge init for your chosen language
- Configure environment variables and properties in the env directory
- Set parallel execution streams with the -n flag
- Install IDE plugins for VS Code or IntelliJ for step autocomplete
Key Features
- Markdown specifications serve as both documentation and executable tests
- Multi-language support through a plugin architecture
- Parallel and multithreaded execution with configurable streams
- Data-driven testing using inline tables and external CSV files
- Extensible reporting with built-in HTML and XML output
Comparison with Similar Tools
- Cucumber — uses Gherkin syntax for BDD; Gauge uses free-form Markdown without strict Given/When/Then grammar
- Robot Framework — keyword-driven testing with tabular syntax; Gauge uses natural Markdown with code-backed steps
- Playwright Test — browser-focused testing; Gauge is protocol-agnostic and works with any test target
- Behave — Python BDD framework tied to Gherkin; Gauge supports multiple languages and a more flexible spec format
- SpecFlow — .NET BDD with Gherkin; Gauge provides similar capabilities with broader language support
FAQ
Q: What languages can I write step implementations in? A: Java, JavaScript/TypeScript, Python, Ruby, C#, and Go are supported through official language runner plugins.
Q: Can Gauge test web applications? A: Yes, combine Gauge with browser automation libraries like Selenium or Taiko in your step implementations.
Q: How does parallel execution work? A: Gauge distributes specs across multiple runner processes. Each stream gets its own language runner instance for isolation.
Q: Is Gauge suitable for API testing? A: Yes, step implementations can use any HTTP client library to test APIs while keeping specs readable.