The Open Source Drop
ToolsExploreAlternativesThis Week
Subscribe
The Open Source Drop
ToolsExploreAlternativesThis Week
Subscribe
← All Categories

Testing

18 open source tools compared. Sorted by stars. Scroll down for our analysis.

By Erik Loyd, SaaS CEO and former COO/CFO of an AWS Premier Partner.

ToolStarsVelocityLanguageLicenseScore
Playwright

Web testing and automation framework

99.4k+589/wkTypeScriptApache License 2.091
Puppeteer

JavaScript API for Chrome and Firefox

95.8k+41/wkTypeScriptApache License 2.091
Storybook

Industry standard UI component workshop

91.5k+58/wkTypeScriptMIT License91
Cypress

Fast, reliable browser testing

51.0k+7/wkTypeScriptMIT License91
Jest

Delightful JavaScript testing

45.5k+1/wkTypeScriptMIT License88
Selenium

Browser automation framework

34.6k+8/wkJavaApache License 2.088
k6

Modern load testing tool

32.2k+88/wkGoGNU Affero General Public License v3.078
floci

Light, fluffy, and always free - The AWS Local Emulator alternative

30.7k+3346/wkJavaMIT License90
Locust

Scalable load tests in plain Python

28.3k+19/wkPythonMIT License88
promptfoo

Test your prompts, agents, and RAGs. Red teaming/pentesting/vulnerability scanning for AI. Compare performance of GPT, Claude, Gemini, DeepSeek, and more. Simple declarative configs with command line and CI/CD integration. Used by OpenAI and Anthropic.

26.9k+320/wkTypeScriptMIT License88
React Testing Library

React DOM testing utilities

19.7k+2/wkJavaScriptMIT License78
deepeval

The LLM Evaluation Framework

19.3k+133/wkPythonApache License 2.090
Vitest

Next-gen testing framework powered by Vite

17.3k+37/wkTypeScriptMIT License88
MailHog

SMTP testing tool

16.2k+7/wkGoMIT License63
Pytest

Scalable Python testing framework

14.7k+14/wkPythonMIT License88
pydoll

7.1k+2/wkPythonMIT76
bombadil

Property-based testing for web UIs: autonomously explores and validates correctness properties, finding real bugs.

1.6k+15/wkRustMIT License71
kumo

A lightweight AWS service emulator written in Go

1.5k+2/wkGoMIT License64

Stay ahead of the category

New tools and momentum shifts, every Wednesday.

Our Analysis

Playwright99.4k★

Playwright drives real browsers from code: Chromium, Firefox and WebKit through one API, for end-to-end tests, scraping, screenshots and PDFs. It auto-waits for elements, runs test files in parallel by default, and ships its own test runner, codegen and a trace viewer that replays every step of a failed run. It's from Microsoft, built by the team that made Puppeteer at Google, and it's Apache 2.0. Install with npm and it downloads browser builds, a few hundred MB by default; you can install a single browser or just the headless shell to keep CI lean. It now also ships a CLI and an MCP server aimed at AI coding agents. Version 1.63 in September 2026 added test locks so tests sharing a resource never run at the same time. The framework is free and nothing is gated. Microsoft does sell hosted browsers: Playwright Workspaces in Azure App Testing runs tests on cloud browsers at $0.01 per Linux test minute and $0.02 for Windows. On GitHub Actions, public repos run free and private repos get 2,000 free minutes a month on the free plan. Compare Cypress Cloud at $75 a month ($67 billed annually) or BrowserStack Automate from $59 a month billed annually. The catch: cross-browser means Safari's engine, not Safari itself, so a WebKit pass isn't a guarantee for real iPhones. And big suites need real parallel infrastructure, which is exactly what those paid services sell.

Puppeteer95.8k★

Puppeteer gives you a JavaScript API to drive Chrome (or Firefox) for scraping, PDF generation, screenshots, form automation, and UI testing. You write code, the browser does what you say. Apache 2.0, maintained by the Chrome DevTools team at Google. Puppeteer downloads a bundled Chromium and gives you full control: navigate to pages, click buttons, fill forms, intercept network requests, evaluate JavaScript in the page context. It's the foundation that many scraping and testing tools are built on. Everything is free. No paid tier. It's an npm package maintained by Google. The catch: Playwright has largely overtaken Puppeteer. Microsoft's Playwright supports Chrome, Firefox, and WebKit out of the box, has better auto-waiting, built-in test runner, and more active development. Puppeteer is Chrome-first (Firefox support is experimental). If you're starting a new project, Playwright is the better default. Puppeteer still makes sense if you specifically need Chrome-only automation or you're maintaining existing Puppeteer code. Also, headless browser automation is resource-heavy: each browser instance eats 200-500MB RAM.

Storybook91.5k★

Storybook gives you a dedicated workshop for developing and testing UI components (buttons, forms, cards, modals) in isolation. You write 'stories' that render your components in different states, and Storybook serves them in a browsable catalog. It's a workbench where you see every component in every possible state. Everything is free under MIT. The core tool, all framework integrations (React, Vue, Angular, Svelte, Web Components), addons for accessibility testing, viewport switching, and interaction testing, all open source. Chromatic (their hosted visual testing service) is a separate paid product. The catch: Storybook adds build complexity. It's another build tool, another config file, another thing that can break when you upgrade your framework. For small projects with 10 components, the overhead isn't worth it. It shines when your design system has 50+ components and multiple developers need to understand what exists and how it works.

Cypress51.0k★

Cypress runs end-to-end tests in a real browser with a UI that shows each step as it happens. No Selenium, no driver headaches: you write JavaScript, it clicks things, you watch it live. The test runner is MIT licensed and gives you time-travel debugging (step backward through a test), automatic waiting, network stubbing, component testing, and screenshots and video on failure. Cypress Cloud is where the money is. It records CI runs and adds parallelization, Test Replay, flake detection and analytics. The free Starter plan includes all of that for up to 10 users and 500 recorded test results a month. A test result is one test case recorded from CI; local runs don't count. Team is $75 a month, or $799 a year (about $67 a month), with 50 users and 120,000 test results a year; Business is $300 a month or $3,199 a year; extra results cost $6 per 1,000. Solo devs: the free runner and Starter are plenty. A team running 50 tests on 100 CI builds a month records 5,000 results and is well past Starter, so budget for Team. Playwright (microsoft/playwright) runs tests in parallel for free with no cloud required. The catch: Cypress only tests what runs in a browser, so no native mobile, and it can't drive multiple browser tabs. And 500 results a month disappears fast once real CI starts recording.

Jest45.5k★

It's the default testing framework for React, and most JavaScript projects use it whether they chose it or not: Create React App, Next.js, and dozens of starter templates include it. Jest bundles everything: test runner, assertion library, mocking, code coverage, and snapshot testing. You don't need to wire together Mocha + Chai + Sinon + Istanbul; Jest includes all of it. Write a file ending in .test.js, run jest, and it finds and runs your tests automatically. Snapshot testing is Jest's signature feature. Render a component, Jest saves the output. Next run, it compares. If something changed, the test fails and shows you the diff. Great for catching unintended UI changes. The catch: Jest is showing its age. It's slow compared to Vitest, which uses Vite's transform pipeline and runs significantly faster on modern projects. Jest's config can be painful, especially with ESM modules, TypeScript transforms, and custom module resolution. The project's development pace has slowed since Meta reduced its open source investment. For new projects in 2026, Vitest is the better choice. For existing projects with thousands of Jest tests, the migration cost probably isn't worth it yet.

Selenium34.6k★

Selenium is the browser automation tool that started it all: clicking buttons, filling forms, scraping pages, running tests. It drives real browsers (Chrome, Firefox, Safari, Edge) programmatically, and it works with practically every programming language: Java, Python, C#, Ruby, JavaScript. Selenium WebDriver talks directly to browser engines through standardized protocols. Write a test in Python, it opens Chrome, navigates to your app, clicks through your checkout flow, and tells you if something broke. The WebDriver protocol it pioneered is now a W3C standard that every browser implements. Selenium Grid lets you run tests in parallel across multiple browsers and machines. For CI pipelines testing against Chrome, Firefox, and Safari simultaneously, Grid is the standard approach. The catch: Selenium feels its age. Setup is fiddly: you need browser drivers that match your browser versions, and version mismatches cause cryptic errors. Tests are slower than modern alternatives because they drive full browsers through an HTTP protocol. Flaky tests are a known pain point. Playwright (from Microsoft) does everything Selenium does with better auto-waiting, built-in browser management, and faster execution. If you're starting fresh, Playwright or Cypress are better choices. Selenium's advantage is ecosystem size and language support: if you're in Java or C#, the alternatives are thinner.

k632.2k★

k6 lets you write load tests in JavaScript and run them from the command line. No JMeter XML, no clunky GUI. Write a script, run k6 run script.js, and get latency and error numbers back in seconds. Go, AGPL v3, owned by Grafana Labs since 2021. It speaks HTTP, WebSockets, gRPC and real browsers, and streams results to Prometheus, Datadog, InfluxDB, OpenTelemetry and most other observability stacks. Self-hosted has no cap on virtual users or test length beyond your hardware, and the official k6-operator spreads one test across a Kubernetes cluster when a single machine can't generate enough load. Grafana Cloud k6 is the paid route when you want traffic from multiple regions without running the machines. Free gets 500 virtual user hours a month, and a 30-minute test at 100 virtual users burns 50 of them. Pro is $19/mo with the same 500 included, then $0.15 per hour. Enterprise starts at a $25,000/yr commit. Solo and small teams: the CLI in CI is all you need. Medium teams: Pro once you need geographic spread. Large teams: k6-operator or Enterprise. The catch: AGPL. Running tests internally is fine. Building a testing product on a modified k6 means publishing your changes, so talk to a lawyer first.

floci30.7k★

Floci does what LocalStack used to: it emulates AWS on your laptop so you can build and test cloud apps without an AWS account, real credentials, or a cloud bill. It stands up 65 services on localhost:4566, from S3 and DynamoDB to Lambda, RDS, and ECS. MIT licensed, no auth token, no feature gates. The tagline is "light, fluffy, and always free," and for once that is accurate. This exists because LocalStack's free Community edition was sunset in March 2026 and its paid tiers now require an auth token. Floci is the drop-in escape hatch: same port, same dummy credentials, same endpoint patterns, so most existing setups work unchanged. It starts in milliseconds against LocalStack's few seconds, ships a 90MB image against roughly a gigabyte, and runs real Docker containers for services like RDS and ECS instead of faking them. Setup is docker compose up or a floci start command. Anyone who tests against AWS locally should look at this, especially teams stung by LocalStack going pay-to-play. Solo devs and small teams get something free forever and lighter than what they are probably running now. Larger teams with CI pipelines will appreciate the Testcontainers integration for isolated per-test instances. The catch: it is young, and an emulator is a promise about behavior. 65 services is a big claim, and the gap between "supported" and "behaves exactly like real AWS" is where local emulators always bite you. Trust it for development, but verify the edge cases against real AWS before you ship.

Locust28.3k★

Define user behavior as Python code, point Locust at your endpoint, and scale up to millions of simulated users. The web UI shows real-time results: requests per second, response times, failure rates. The reason developers love this: it's just Python. No special syntax, no config files, no learning a testing DSL. If you can write a Python function, you can write a load test. Need to test a complex multi-step flow with authentication? It's just Python code. MIT. Fully free. No paid tier, no cloud service. The homepage links to PyPI, not a commercial product. The catch: Locust is CPU-bound because of Python's GIL. For high-throughput testing (10K+ requests/sec), you need to run distributed across multiple workers. Tools like k6 (Go-based) handle higher throughput per instance. Also, the web UI is functional but basic. If you want fancy dashboards, you'll need to export metrics to Grafana.

promptfoo26.9k★

Promptfoo tells you whether a prompt or model change improved your AI app or quietly broke it. You write test cases in YAML, run them against OpenAI, Anthropic, Bedrock, Ollama and others side by side, and it also red-teams your app for prompt injection, jailbreaks and data leaks. It's a CLI and Node library, MIT licensed and free. Setup is npx promptfoo@latest init, or npm, brew or pip. No server for the core workflow: evals run locally and drop into CI like unit tests. You still pay your model provider for every call. The optional self-hosted sharing server is SQLite with no login, so keep it internal. Community is free with every eval feature and 10,000 red-team probes a month. Enterprise is quote-only and adds team sharing, SSO, monitoring and more probes, with an on-prem tier above it. Solo and small teams: free. Security teams: Enterprise. For hosted eval dashboards, look at LangSmith or Braintrust. The catch is ownership and defaults. OpenAI agreed to buy Promptfoo in March 2026; the code stays MIT, but your red-team tool now belongs to a model vendor. Red teaming also sends test generation to Promptfoo's servers by default, and telemetry is on.

React Testing Library19.7k★

React Testing Library forces you to test your components the way users interact with them: clicking buttons, filling forms, reading text on screen. Instead of testing implementation details (state, props, lifecycle), you test what the user sees and does. MIT licensed, created by Kent C. Dodds. This is the default testing approach for React. Create React App ships with it. The React docs recommend it. Most React job postings expect you to know it. Fully free. It's an npm package. No paid tier, no service. The catch: the philosophy is opinionated and that's the point. You can't easily test internal component state or mock child components, by design. If you're coming from Enzyme, the transition is a mindset shift. Some complex UI interactions (drag-and-drop, canvas, virtual scrolling) are hard to test with this approach. And for end-to-end testing (real browser, real clicks), you still need Playwright or Cypress. React Testing Library runs in jsdom, not a real browser.

deepeval19.3k★

DeepEval is Pytest for LLM apps. Write test cases, attach metrics like hallucination, answer relevancy or whether an agent called the right tool, and run them in CI so a prompt change can't quietly break your product. The library is Apache 2.0, one pip install away, and free. Most metrics are LLM-as-a-judge, so every "free" run still bills your model provider. A local Ollama model (deepeval set-ollama) takes that to zero, trading some judge quality. Run history no longer needs the cloud: results save locally to JSON or SQLite. Confident AI, the company behind it, sells the hosted layer. Free covers 2 seats, 1 project and 5 test runs a week. Starter is $200/month per organization with unlimited seats; Team is $2,000/month for SSO, SOC2 and RBAC. Solo: free. Small teams: free until you want shared dashboards. Larger teams: Starter or Team. Promptfoo and Ragas are the open source rivals; LangSmith and Braintrust the hosted ones. The catch: telemetry is on by default. DeepEval sends event names, metric names and your IP to PostHog until you set DEEPEVAL_TELEMETRY_OPT_OUT=1. The README also pushes deepeval login, which logs every test case to Confident AI's cloud. Skip both before testing on customer data.

Vitest17.3k★

Vitest is the testing framework that makes Jest feel like last decade. Same familiar API (describe, it, expect) but instant startup, native TypeScript support, and hot module reloading for your tests. What's free: Everything. MIT license. The entire testing framework, all matchers, mocking, coverage, UI mode, browser mode. All free. Vitest's speed comes from Vite's transformation pipeline. No separate TypeScript compilation step, no Babel config, no jest.config.js with 40 lines of transform rules. Point it at your code and it works. The compatibility with Jest's API means migrating is often just changing imports. The --ui mode gives you a browser-based test explorer that's useful. The catch: if you're not in the Vite ecosystem, some of the speed advantages diminish. The browser testing mode is still maturing. And while the Jest API compatibility is high, it's not 100%. Some Jest plugins and custom matchers need adaptation. For non-Vite projects with heavy Jest customization, the migration cost might not be worth it.

MailHog16.2k★

MailHog catches all outgoing email from your development environment and displays it in a web UI instead of actually delivering it. Point your app's SMTP at localhost:1025, and every email lands in MailHog instead of going anywhere. It's a fake mailbox for development. MIT license, Go. Single binary, zero configuration. Start it, configure your app's SMTP to point at it, done. The web UI at port 8025 shows every email with headers, body, HTML rendering, and attachments. Has a JSON API for automated testing: verify emails were sent in your CI pipeline. Fully free. No paid tier, nothing to pay for. It's a development tool, not a production service. Every developer who builds email-sending features: use this. Solo to enterprise, the setup is identical: docker run mailhog/mailhog or download the binary. Takes 30 seconds. The catch: MailHog is essentially unmaintained. The last commit was years ago. It works fine for basic SMTP testing, but don't expect updates or new features. For a maintained alternative, Mailpit is a drop-in replacement that's actively developed. Also, MailHog is development-only. Never expose it to the internet, there's no authentication on the web UI.

Pytest14.7k★

Pytest is the Python test framework that makes writing tests feel natural. Pytest is the one. It's what the Python community converged on, and for good reason: you write plain functions with assert statements, and pytest figures out the rest. No boilerplate classes, no self.assertEqual nonsense. Write def test_something:, use a normal assert, and pytest gives you rich failure output showing exactly what went wrong. The fixture system is powerful: dependency injection for tests that keeps setup clean. The plugin ecosystem (1,000+ plugins) covers everything from parallel execution to coverage to Django integration. Completely free. MIT license. No paid tier, no hosted version. Just pip install pytest. Every Python developer should use this. Solo, team of 5, team of 500, it scales. The fixture system actually gets MORE useful as your test suite grows because you can share setup across modules without inheritance hierarchies. The catch: fixtures have a learning curve. Scope, autouse, and parameterization can get confusing fast. And if you're coming from unittest, the magic can feel uncomfortable at first.

pydoll7.1k★

Pydoll controls Chromium browsers using the Chrome DevTools Protocol directly, without needing a WebDriver binary like Selenium does. The pitch: faster startup, lower overhead, no driver version mismatches. MIT license, Python. It's async-first (built on asyncio), which means you can control multiple browser tabs concurrently without threading. Supports page navigation, screenshots, PDF generation, network interception, and cookie management. Fully free. No paid tier, no hosted version. Pure Python library. The honest take: Pydoll is the new kid in a crowded space. At and growing, there's clear interest, but Playwright (by Microsoft) has a far larger community, better documentation, and handles Firefox and WebKit in addition to Chromium. Pydoll's advantage is simplicity. It's a lighter abstraction if you specifically want CDP control without Playwright's full framework. Solo developers experimenting with browser automation: try it, the API is clean. Teams building production scrapers or test suites: Playwright is the safer bet for now. The catch: Chromium-only. No Firefox, no Safari/WebKit. The documentation is early-stage. And 'no WebDriver needed' sounds great until you realize Playwright also doesn't need a separate WebDriver and supports three browser engines. Pydoll needs to find a stronger differentiator as it matures.

bombadil1.6k★

Bombadil explores your UI on its own and checks that your correctness rules still hold. It is property-based testing pointed at interfaces: you define what "correct" means, and it hunts for every way the app violates that. MIT licensed, written in Rust, from the team at Antithesis. Traditional end-to-end tests replay paths you scripted. Bombadil takes paths you never thought of. It clicks, types, and navigates, checking your invariants at every step, and when something breaks it hands back the exact sequence of actions that broke it. That reproduction case is the part that saves you the afternoon. Free and open source with no paid tier. It covers web and terminal UIs now, and it is moving fast, with releases through 2026 and a version number still in the zeros. Solo and small teams: worth pointing at one flow you actually care about. Larger teams: treat it as a supplement to the existing suite rather than a replacement, at least until the API settles. The catch is that property-based testing makes you do the thinking. You have to define properties like "no console errors", "this element always exists", "this form never submits empty". Writing good ones is a skill, and bad ones either cry wolf or quietly miss real bugs. Autonomous exploration of a large app is also slow, so a full run is not something you drop into every pull request.

kumo1.5k★

Kumo is a single-binary AWS service emulator written in Go. It mocks 76 AWS services (S3, DynamoDB, Lambda, SQS, KMS, IAM) for local development and CI testing. No authentication required, AWS SDK v2 compatible, optional persistence. The pitch is LocalStack with less weight and no Docker dependency. Setup is downloading a binary or running a container. Point your AWS SDK at the local endpoint and you get an emulator that does not ask for credentials. CI integration is straightforward because there is no auth dance and the binary boots fast. Set KUMO_DATA_DIR to keep state across restarts. Solo developers: use it for CI tests and local dev without an AWS sandbox account. Small and mid-sized teams: a free way to keep AWS-dependent tests fast and predictable. Large teams: LocalStack Pro is still ahead on coverage breadth and edge case fidelity, so this is more of a niche pick than a wholesale replacement. The catch: 76 services sounds like a lot, but coverage depth varies. Kumo is solid for the common cases (S3, DynamoDB, SQS) and weaker on niche APIs. Verify your specific use case before committing.

The Open Source Drop

Open source tools worth knowing about.

hello@opensourcedrop.com
ToolsExploreAlternativesLicensesScoringSuggest a ToolAboutTerms

Buying guides

AI Agent FrameworksOpen Source Agent FrameworksOpen Source Claude Code & Codex SkillsOpen Source Agent Runtimes & SandboxesOpen Source Multi-Agent SystemsPython Developer ToolsLLM Inference ToolsDevOps & Infrastructure ToolsCLI ToolsOpen Source MCP ServersAll buying guides

The Open Source Drop provides informational summaries of open source tools and their licenses. This is not legal advice. Always review the full license text on each tool's repository before using it in your project. Product names and logos mentioned on this site are trademarks of their respective owners. The Open Source Drop is not affiliated with or endorsed by any proprietary software vendor. Terms of use.