30 open-source projects similar to onsi/ginkgo, ranked by shared indexed features. Tags may describe platforms or build tools rather than the same primary purpose. Check each project’s use case, license, and deployment requirements before treating it as a replacement.
Jasmine is a JavaScript testing framework and test runner designed for behavior-driven development. It provides a comprehensive toolset for writing and executing descriptive test suites that verify code behavior in both web browsers and Node.js environments. The framework is distinguished by its integrated mocking library, which allows for dependency isolation through spies and stubs, as well as the ability to simulate time and timing functions to test asynchronous logic synchronously. It also includes a mechanism to enforce test uniqueness, preventing duplicate names for tests and suites. I
TUnit is a comprehensive C# testing framework, mocking library, and fluent assertion tool. It utilizes source generation for test discovery and mock creation, ensuring compatibility with Native AOT and IL trimming by eliminating the need for runtime reflection and proxies. The framework provides specialized capabilities for integration testing, including the management of distributed application lifecycles, isolated database schemas, and the correlation of telemetry and logs across process boundaries via OTLP. It also includes an HTTP testing utility to intercept network exchanges and mock AP
Jest is a JavaScript testing framework designed for writing and running automated test suites to verify the correctness of JavaScript and TypeScript code. It functions as a comprehensive toolset that integrates a test runner, a mocking and spying library, a snapshot testing tool, and a code coverage tool. The framework distinguishes itself through snapshot testing, which records the serialized state of data structures to detect regressions in future executions. It also includes a mocking and spying library for simulating external dependencies and tracking function calls to isolate code during
Vitest is a high-performance testing framework designed for JavaScript and TypeScript applications. It provides an integrated environment that supports unit, integration, and browser-based testing, allowing developers to execute test suites natively without requiring separate build steps or complex configuration. The project distinguishes itself through a highly optimized execution model that leverages worker-thread isolation and on-demand module transformation to provide rapid feedback. It includes a comprehensive suite of mocking and spying utilities that allow for the interception of depen
Ava is a test runner for JavaScript and TypeScript designed to execute test suites with a focus on concurrency and isolation. It serves as a concurrent test executor that runs test files in parallel across multiple processes to reduce total runtime and prevent state leakage between suites. The project features a built-in snapshot testing framework that saves large data structures to disk and compares subsequent executions to detect regressions via diffs. It is also compatible with the Test Anything Protocol, allowing it to export results for use with external reporting tools. Its capability
doctest is a lightweight C++ unit testing framework and assertion library. It provides a single-header implementation that eliminates complex build dependencies, allowing developers to write and execute test cases directly within their source code. The framework is distinguished by its focus on compile-time performance and binary overhead. It uses conditional compilation guards to strip all testing logic and metadata from production binaries. Additionally, it features hierarchical subcases that re-execute parent setup code to isolate different execution paths within a single test case. Its c
Mocha is a JavaScript test runner and framework designed to execute automated test suites across multiple runtimes, including Node.js and web browser environments. It functions as a pluggable testing tool for organizing and validating unit, integration, and functional tests. The project distinguishes itself through a plugin-based extension interface that allows for custom functionality and reporting. It supports a multi-runtime approach, enabling the same test suite to run in different JavaScript environments, and includes a watch mode that monitors the filesystem to trigger automatic test re
Maestro is a declarative mobile and web UI automation framework designed for end-to-end testing. It operates by querying the native accessibility tree of an application, allowing for black-box testing without requiring source code instrumentation or platform-specific dependencies. The framework distinguishes itself through a unified command syntax that abstracts interactions across Android, iOS, and web environments. It features a dynamic synchronization engine that automatically pauses test execution to account for non-deterministic animations and network-dependent content loading, ensuring
QUnit is a JavaScript unit testing framework designed to verify code behavior using assertions and lifecycle hooks across browsers and server runtimes. It functions as a browser-based test runner with an HTML interface for reporting results, an asynchronous test orchestrator for coordinating callbacks, and a utility for isolating and verifying document object model changes. The framework distinguishes itself through specialized DOM testing capabilities, allowing for the isolation and resetting of the document object model between tests to ensure atomicity. It also features a system for detect
WebDriverIO is a Node.js test automation framework used for automating functional tests across web browsers and mobile applications. It acts as a WebDriver protocol client that manages remote browser sessions and executes commands against WebDriver and Appium servers to perform end-to-end testing. The framework is distinguished by its ability to control both native and hybrid mobile applications and its support for running automated suites across local machines, remote grids, and cloud device providers. It includes specialized capabilities for coordinating multi-browser interactions and estab
pytest is a testing framework for Python that provides a command-line runner for discovering and executing test suites. It is built on a modular architecture that uses standard language assertions to verify code correctness, automatically inspecting expressions to provide detailed failure reports without requiring specialized assertion methods. The framework distinguishes itself through a dependency injection system that manages setup and teardown logic by automatically resolving and injecting resources into test functions. It also features a hook-based plugin architecture that allows for dee
Playwright is a comprehensive browser automation framework designed for end-to-end testing and web workflow automation. It provides a unified API to drive web applications across multiple browser engines, enabling developers to simulate complex user interactions, perform web scraping, and validate application behavior in consistent, isolated environments. The framework distinguishes itself through a web-first testing paradigm that prioritizes stability and resilience. By utilizing an auto-waiting actionability engine and accessibility-tree-based locators, it eliminates common sources of test
Chai is an assertion library for Node.js and browser-based JavaScript applications. It functions as both a behavior-driven development and test-driven development framework, providing a system to verify code outputs, application state, and general logic. The project is an extensible validation engine that uses a plugin-based system to allow the registration of custom assertions and specialized data checks. It supports multiple modular assertion styles to accommodate different validation philosophies. The library covers a broad range of data validation capabilities, including the inspection o
Kotest is a comprehensive testing framework for Kotlin designed for writing and executing tests across various styles and platforms. It serves as a multiplatform test runner and a fluent assertion library, providing a toolset for both unit and integration testing in Kotlin applications. The framework supports multiple testing methodologies, including behavior-driven development with nested test hierarchies, property-based testing using automated data generation, and data-driven testing. It also includes snapshot testing to detect regressions by comparing current outputs against stored referen
BATS is a testing framework and verification tool designed for Bash scripts and Unix programs. It serves as a test runner that validates the behavior of command line utilities by verifying exit statuses and command output. The framework functions as a TAP compliant test runner, producing output that follows the Test Anything Protocol for integration with reporting tools and continuous integration pipelines. The tool provides test automation capabilities including isolated test execution in separate subprocesses and lifecycle management via setup and teardown functions. It covers result aggre
Pester is a PowerShell testing framework and behavior-driven development tool used to write and run automated tests for scripts and modules. It defines and verifies software behavior through human-readable specifications to validate that code behaves as expected. The project includes a native mocking library that replaces real functions and commands with controlled implementations, allowing for the isolation of code and verification of command invocations without altering the system environment. It also functions as a code coverage tool that measures the percentage of executed lines during te
Swift Testing is a testing framework for the Swift programming language that provides a structured environment for validating code behavior. It utilizes compile-time macro discovery to register test functions and organizes them into hierarchical suites, allowing for granular control over test execution and metadata tagging. The framework distinguishes itself through native integration with Swift concurrency models, enabling parallel test execution to reduce verification time. It supports parameterized testing, which allows developers to run identical logic across multiple input values, and pr
Goleak is a diagnostic utility designed to identify and report leaked goroutines within Go applications. By integrating directly with standard testing frameworks, it validates that background tasks terminate correctly after the completion of individual test cases, packages, or entire test suites. The tool functions by capturing snapshots of active execution threads and comparing them against a baseline to isolate newly spawned processes. To ensure accuracy and reduce noise, it provides mechanisms to filter specific stack traces, ignore known background tasks, and perform retries to account fo
This project is a specialized test harness and mocking utility designed for unit testing React hooks in isolation. It provides a simulated component environment that executes hook logic and tracks returned values without requiring a full user interface. The library enables the verification of hook lifecycles, including mounting, updating, and unmounting phases. It features mechanisms for injecting properties to force re-renders and an asynchronous waiting system to ensure state updates are processed before assertions are run. The toolset covers state management verification, automated lifecy
Allure is a test reporting framework that normalizes execution data from multiple test frameworks across different programming languages into a common intermediate format. It aggregates results from multiple sources into a shared directory of JSON files and generates self-contained HTML reports through a modular plugin pipeline. The architecture includes a hierarchical step tree model to represent test execution, metadata annotation injection to enrich results at runtime, and directory-watch incremental rendering that regenerates reports in real time as new data arrives. Unlike generic report
Pest is a testing framework for PHP that provides a comprehensive suite for executing unit, integration, and end-to-end tests. It functions as an automated testing tool that prioritizes developer experience and readability through a concise, expressive syntax for defining test suites. By wrapping an established testing foundation, it maintains compatibility with existing ecosystem tools while offering a specialized interface for writing and organizing automated tests. The framework distinguishes itself through integrated support for parallel test execution, which distributes suites across mul
This project is a parallel test runner and shell command executor designed to reduce total runtime by executing test suites across multiple CPU cores. It functions as a test suite load balancer and a CI test process manager that coordinates global setup, teardown, and exit codes for continuous integration pipelines. The tool acts as a test database orchestrator by creating and managing unique database instances mapped to parallel processes, which prevents data collisions. It distributes tests into balanced groups based on file size or recorded runtimes to optimize execution time and avoid bot
Kiwi is a behavior-driven development framework and specification library for iOS. It functions as a wrapper for XCTest, allowing developers to define and execute software requirements as automated tests to verify application logic. The framework utilizes a domain-specific language to organize test cases into a nested hierarchy of descriptions. It includes a mocking system that employs runtime message interception and dynamic proxies to record invocations and return stubbed values. The system provides a fluent assertion interface to evaluate object states and uses a block-based engine to exe
TestCafe is a Node.js end-to-end web testing framework used to automate browser tests with JavaScript or TypeScript. It serves as a cross-browser testing tool and a command-line execution engine designed for integration into continuous integration pipelines. The framework supports behavior-driven development by mapping human-readable Gherkin syntax to automation logic. It also includes an integrated web accessibility auditor to identify violations within web applications. The toolset covers a broad range of automation capabilities, including parallel test execution across multiple browser in
Quick is a behavior-driven development framework and testing tool for Swift and Objective-C. It functions as both a testing framework and an assertion library, providing the structures necessary to write and run automated tests. The project focuses on organizing test suites into nested, human-readable requirements to define expected software behavior. This approach allows developers to structure tests in a descriptive format that translates technical requirements into readable specifications. The framework covers functional validation and quality assurance for Apple platform development. It
rspec-rails is a testing framework that integrates RSpec with Ruby on Rails to provide behavior-driven development tools. It serves as a suite for defining application behavior through a conversational syntax, providing a specialized toolkit for creating behavioral specifications for models, controllers, and views. The project distinguishes itself through automated test generation, providing a command-line interface to create boilerplate specification files for Rails components such as models, controllers, and background jobs. It further differentiates its capabilities with a comprehensive mo
doctest is a unit testing framework and assertion library for C++ delivered as a single-header library. It provides a test runner with a command line interface to execute tests, filter test suites, and generate execution reports. The framework supports in-source unit testing and allows for the complete removal of testing logic from compiled binaries via preprocessor stripping to eliminate performance overhead in production environments. It also enables cross-binary test registry sharing, allowing one executable to utilize the test runner of another. Capabilities include parameterized testing
Ava is a concurrent test runner for Node.js that executes test files in parallel using worker thread isolation to prevent global state leakage. It functions as a TAP-compliant tool, exporting results via the Test Anything Protocol for integration with external reporting systems. The framework distinguishes itself through a focus on execution speed and clarity, utilizing worker threads to run multiple test files simultaneously across CPU cores. It includes stack trace simplification to filter out internal framework noise and a value comparison utility that provides syntax-highlighted diffs for
Jest is a JavaScript testing framework that integrates a test runner, an assertion library, and a snapshot testing tool. Its primary purpose is to provide a comprehensive environment for writing and running automated JavaScript tests to verify software correctness. The framework is distinguished by its snapshot testing capabilities, which capture the state of large objects or rendered components to detect regressions over time. It also features a reactive watch mode that monitors file changes and automatically executes only the tests related to modified code. The project covers a broad range
Codeception is a full-stack testing framework for PHP applications that provides a unified interface for unit, functional, and acceptance testing. It serves as a tool for automating real desktop and mobile browsers via the WebDriver protocol and acts as a client for testing REST and SOAP APIs. The framework is distinguished by its support for Behavior-Driven Development, allowing users to write human-readable test specifications in Gherkin language to align technical tests with business requirements. It implements actor-based action mapping to connect these natural language steps to executabl