{"data":[{"slug":"vitest","name":"Vitest","tagline":"MIT Vite-native unit/integration test runner","category":"libraries","url":"https://vitest.dev","github":"https://github.com/vitest-dev/vitest","pricing":"open-source","hook":"Vitest is the test runner when your app already lives in Vite and Jest feels like a second bundler tax.","whatsGood":"MIT. Jest-compatible API, Vite transform pipeline, watch mode, TypeScript/ESM first-class, browser mode options. Shares config/plugins with Vite. Fast feedback in Vite apps and libraries.","theCatch":"Vs Vite: Vite-native test runner; not the bundler. Not full E2E browser suites. Closest when Vite is already the toolchain.","verdict":"MIT Vite test runner. Free forever; Vite itself is the bundler gem.","addedAt":"2026-09-06","featured":false,"domain":"Libraries","subSpecialty":"Testing","subcategory":"Testing","tags":["self-host","permissive","testing","active"],"capabilities":["test","vite"],"surfaces":["Self-host"],"ecosystem":["Node.js","Browser"],"licenseModel":"OSS/MIT","githubStars":17262,"starsPerWeek":68,"access":"free","archived":false,"repo":{"createdAt":"2021-12-03","pushedAt":"2026-10-19","license":"MIT","archived":false,"checkedAt":"2026-10-19"},"links":{"self":"/api/gems/vitest","html":"/gems/vitest","markdown":"/gems/vitest.md"}},{"slug":"playwright","name":"Playwright","tagline":"Apache-2.0 cross-browser library and CLI","category":"libraries","url":"https://playwright.dev","github":"https://github.com/microsoft/playwright","pricing":"open-source","hook":"Playwright is the cross-browser library when tests and scripts need Chromium, Firefox, and WebKit from one API.","whatsGood":"Apache-2.0. Auto-waits, tracing, codegen, parallel projects. Official browsers and a strong CLI. Default for modern E2E in Node/.NET/Java/Python.","theCatch":"Vs Playwright MCP gem: library/CLI lane; not the MCP wrapper. Heavier than unit tests. Browser downloads and CI images are real ops. Not Stagehand/Browserbase.","verdict":"Apache-2.0 browser library. Free; MCP wrapper is a separate gem.","addedAt":"2026-09-06","featured":false,"domain":"Libraries","subSpecialty":"Testing","subcategory":"Testing","tags":["cli","api","sdk","self-host","permissive","browser-automation","testing","active"],"capabilities":["e2e","browser","cli"],"surfaces":["CLI","API","Self-host"],"ecosystem":["Node.js","Browser"],"licenseModel":"Apache-2.0","githubStars":98037,"starsPerWeek":271,"access":"free","archived":false,"repo":{"createdAt":"2019-11-15","pushedAt":"2026-10-18","license":"Apache-2.0","archived":false,"checkedAt":"2026-10-19"},"links":{"self":"/api/gems/playwright","html":"/gems/playwright","markdown":"/gems/playwright.md"}},{"slug":"hurl","name":"Hurl","tagline":"Apache-2.0 plain-text HTTP tests powered by curl","category":"devops","url":"https://hurl.dev","github":"https://github.com/Orange-OpenSource/hurl","pricing":"open-source","hook":"Hurl is plain-text HTTP sessions when you want chained requests and asserts in a file, not a GUI collection or a one-shot CLI.","whatsGood":"Apache-2.0. Orange-OpenSource/hurl. Rust CLI on libcurl: `.hurl` files that chain requests, capture values, and assert status/headers/JSONPath/XPath. CI reports (JUnit, TAP, HTML). Single binary. Homepage hurl.dev; source github.com/Orange-OpenSource/hurl.","theCatch":"Vs xh/HTTPie (interactive HTTP CLIs) and Bruno/Hoppscotch (API *clients*): Hurl is the *plain-text test runner*, not a REPL client and not a collections GUI. You author `.hurl` files; it is not Postman-shaped collaboration. libcurl semantics apply.","verdict":"Apache-2.0 HTTP test files. Free forever; commit the session, run it in CI.","addedAt":"2026-09-13","featured":false,"domain":"DevOps","subSpecialty":"Testing","subcategory":"Testing","tags":["cli","api","self-host","permissive","testing","active"],"capabilities":["http","cli","ci"],"surfaces":["CLI","API","Self-host"],"ecosystem":["Rust","Multi-platform"],"licenseModel":"Apache-2.0","githubStars":19262,"starsPerWeek":60,"access":"free","archived":false,"repo":{"createdAt":"2020-08-25","pushedAt":"2026-10-19","license":"Apache-2.0","archived":false,"checkedAt":"2026-10-19"},"links":{"self":"/api/gems/hurl","html":"/gems/hurl","markdown":"/gems/hurl.md"}},{"slug":"odiff","name":"ODiff","tagline":"MIT SIMD image diff for screenshot and visual-regression tests","category":"libraries","url":"https://github.com/dmtrKovalenko/odiff","github":"https://github.com/dmtrKovalenko/odiff","pricing":"open-source","hook":"ODiff compares two images pixel by pixel in milliseconds and writes a diff image, which makes it a fast check for visual-regression tests and for coding agents that need to verify a UI change from before/after screenshots.","whatsGood":"MIT (dmtrKovalenko/odiff), release v4.5.0 (2026-07-23), maintained since 2020, now written in Zig with SSE2, AVX2, AVX512 and NEON paths. Compares across formats (png, jpg, webp, tiff), detects anti-aliasing, can ignore regions and handles images with different layouts. Use it as a CLI, from Node via odiff-bin, or in server mode that answers JSON requests over stdio so a long-running test runner avoids a process spawn per image. playwright-odiff adds a toHaveScreenshotOdiff matcher, and a community plugin covers Cypress. Without an output path it shows the diff inline in terminals with the kitty graphics protocol. ★~3.3k.","theCatch":"It only answers whether two images differ and where: there is no baseline storage, review UI or approval flow — you still need your test runner or a service for that. Diff output is PNG only. Pixel-exact comparison means fonts, GPU rendering and animations can make tests flaky unless you pin the browser environment and set thresholds or ignore regions.","verdict":"Drop-in fast pixel diff for screenshot tests and agent UI checks — bring your own baseline workflow.","addedAt":"2026-10-17","featured":false,"domain":"Libraries","subSpecialty":"Testing","subcategory":"Testing","tags":["self-host","permissive","coding-agents","testing","active"],"capabilities":["image-diff","visual-regression","screenshots"],"surfaces":["Self-host"],"ecosystem":["Node.js","Multi-platform"],"licenseModel":"OSS/MIT","githubStars":3273,"starsPerWeek":11,"access":"free","archived":false,"repo":{"createdAt":"2020-11-04","pushedAt":"2026-10-13","license":"MIT","archived":false,"checkedAt":"2026-10-19"},"links":{"self":"/api/gems/odiff","html":"/gems/odiff","markdown":"/gems/odiff.md"}}],"meta":{"total":4,"count":4,"offset":0,"limit":null,"sort":"curated","sorts":["curated","catalog","new","stars","trending","name"],"filters":{"subcategory":"testing"},"next":null,"categories":["agents","nextjs","python","shopify","databases","devops","design","observability","rust","payments","comms","notifications","libraries"],"tags":["mcp","cli","tui","api","sdk","desktop-app","web-ui","editor-plugin","self-host","local-first","free-tier","paid-only","paid-led","permissive","copyleft","source-available","license-unclear","coding-agents","local-llm","rag","memory","evals","browser-automation","scraping","sandbox","skills","voice","security","auth","payments","realtime","postgres","vector","kubernetes","containers","observability","testing","workflows","graphics-3d","git","active","stale","archived","young-repo","fast-stars"]}}