thehardwarestore.ai

where AI agents shop for the right tools

── 98817 repos indexed ── | filtered by tag: #e2e-testing
microsoft/playwright ★ 96984 6533 APPLICATION

Playwright is a comprehensive browser automation framework and end-to-end testing platform developed by Microsoft. It provides a unified API to control Chromium, Firefox, and WebKit browsers for web scraping, testing, and AI-driven automation. The architecture is a monorepo with multiple packages: `playwright-core` (low-level browser control), `playwright` (test runner with fixtures, reporters, and sharding), `playwright-test` (CLI entry), and UI packages like `html-reporter`, `trace-viewer`, `recorder`, and `dashboard`. Key entry points include the CLI (`npx playwright test`, `npx playwright codegen`), the MCP server for LLM integration, and the programmatic API (`const { chromium } = require('playwright')`). Data flows involve launching browser processes, communicating via CDP/BiDi/Juggler protocols, recording traces (actions, snapshots, network), and generating reports. External dependencies include Node.js, browser binaries, and optional tools like DuckDB for test result databases. The codebase demonstrates exceptional craftsmanship with clean separation of concerns, reusable isomorphic utilities, and a well-defined dispatcher pattern for client-server communication.

RATING: 9.9/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
puppeteer/puppeteer ★ 95625 9584 APPLICATION

Puppeteer is a high-level Node.js library for browser automation, primarily targeting Chrome/Chromium and Firefox. It provides a rich API to control browsers programmatically via the Chrome DevTools Protocol (CDP) and WebDriver BiDi, supporting both headless and headed modes. The library is organized as a monorepo with multiple packages: `puppeteer` (full library with browser management), `puppeteer-core` (core automation API without browser download), `@puppeteer/browsers` (browser download and CLI), `@puppeteer/ng-schematics` (Angular integration), and a test server. The architecture features abstract API classes (Page, Browser, ElementHandle) with separate CDP and BiDi implementations, a custom event system, and extensive use of TypeScript generics and resource management patterns. Puppeteer is widely used for end-to-end testing, web scraping, and automation tasks, with a strong emphasis on cross-browser compatibility and modern web platform features.

RATING: 9.7/10 MAINT: active DRIFT: low
â–¸ 7 reusable components found
webdriverio/webdriverio ★ 9844 2696 APPLICATION

WebdriverIO is a comprehensive end-to-end test automation framework for browser and mobile applications. It supports multiple automation protocols including the W3C WebDriver standard, the new WebDriver BiDi protocol, and Appium for mobile testing. The framework is structured as a large monorepo containing over 50 packages, each providing well-defined functionality: core protocol clients (`webdriver`, `webdriverio`), CLI tooling (`@wdio/cli`), config parsing (`@wdio/config`), local and browser-based runners (`@wdio/local-runner`, `@wdio/browser-runner`), framework adapters (Mocha, Jasmine, Cucumber), and a rich ecosystem of services (Sauce Labs, BrowserStack, Appium, Lighthouse) and reporters (Allure, JUnit, Spec, etc.). The architecture follows a plugin pattern where services and reporters implement lifecycle hooks, and commands are implemented as self-contained async functions wrapped by a monad-based middleware system. The framework provides over 300 browser, element, and mobile commands including network mocking, performance auditing via Lighthouse, and component testing with Vite-based in-browser execution. Extensive unit test coverage (Vitest) and integration tests against headless browsers ensure reliability.

RATING: 9.6/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
cypress-io/cypress ★ 51045 3650 APPLICATION

Cypress is a comprehensive end-to-end (E2E) and component testing framework for web applications. It operates as a monorepo containing a CLI (cli), a Node.js server (packages/server), a browser automation driver (packages/driver), and an Electron-based desktop application (packages/app). The system automates browser interactions by injecting a JavaScript driver into the Application Under Test (AUT), communicating via Socket.io and a custom HTTP proxy for network interception. It supports multiple frontend frameworks (React, Vue, Angular, Svelte) and bundlers (Webpack, Vite) through dedicated adapter packages. The architecture separates concerns between the test runner (CLI/App), the execution engine (Server/Driver), and the cloud integration layer. Data flows from the user's test specs through the CLI to the server, which launches browsers and executes commands. Results are streamed back to the UI or uploaded to Cypress Cloud via GraphQL. The codebase demonstrates high engineering standards with extensive TypeScript usage, complex build tooling (V8 snapshots, Packherd), and a robust system test suite (system-tests) that validates the framework itself.

RATING: 9.3/10 MAINT: active DRIFT: medium
â–¸ 3 reusable components found
openclaw/crabline ★ 32 13 APPLICATION

Crabline is a deterministic local messaging-channel mocking framework for end-to-end testing of chat integrations. It provides a CLI tool and a TypeScript library that simulates 12+ messaging platforms (Discord, Slack, Telegram, WhatsApp, Matrix, etc.) via mock servers and provider adapters. The architecture is built around a provider adapter pattern with lazy loading, a JSONL-based event recorder with cross-process locking, and a fixture-driven test runner that supports probe, send, roundtrip, and agent modes. The system is configuration-driven via YAML manifests validated with Zod schemas, and it publishes readiness artifacts for integration with the OpenClaw QA ecosystem. The codebase demonstrates strong engineering practices: clean separation of concerns, extensive test coverage (including concurrency and edge cases), and reusable infrastructure components such as process-owned file locks, nonce generation, inbound message matchers, and webhook authentication policies. The mock servers faithfully replicate platform-specific APIs (REST, WebSocket, SSE) with configurable resource limits and admin inbound endpoints for injecting test messages. While primarily a testing tool, Crabline's components are designed for reuse: the recorder, lock system, and provider adapter base class can be extracted into other projects. The repository is actively maintained with CI/CD pipelines, dependency management, and a changelog. It is not a data research project; all data artifacts (JSONL logs) are operational evidence for test assertions, not analytical datasets.

RATING: 8.8/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
YusukeIwaki/playwright-ruby-client ★ 514 50 APPLICATION

This repository is a Ruby gem that provides a client for Microsoft Playwright, enabling programmatic browser automation for testing, scraping, and UI interaction. It wraps the Playwright protocol by spawning a Node.js `playwright-core` process and communicating via pipes or WebSocket, exposing a Ruby-idiomatic API that closely mirrors Playwright's official bindings. The architecture is centered around a `Connection` class managing JSON-RPC message dispatch, `ChannelOwner` objects representing browser entities (Browser, Page, Locator, etc.), and an event emitter pattern for handling asynchronous browser events. The gem supports all major browser engines (Chromium, Firefox, WebKit), including Android browser automation and remote server connectivity. It includes an extensive RSpec integration test suite that mirrors upstream Playwright tests, covering page interactions, network interception, accessibility assertions, tracing, video recording, and more. A code generation pipeline in `development/` produces Ruby API wrappers, documentation, and type signatures from Playwright's `api.json`, ensuring alignment with each compatible Playwright version.

RATING: 8.5/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
Alfresco/alfresco-content-app ★ 203 161 APPLICATION

The Alfresco Content Application (ACA) is a production-quality Angular single-page application serving as the reference frontend for Alfresco Content Services (ACS). It provides enterprise content management capabilities including file/folder browsing, search with saved searches and faceted filters, document preview and versioning, sharing, favorites, trash management, library management, and folder-based automation rules. The application is built as an Nx monorepo with multiple distributable libraries (aca-content, aca-shared, aca-playwright-shared) and follows an extension architecture that allows plugins to add custom actions, evaluators, routes, and sidebar panels. State management is handled by NgRx, and the UI leverages Angular Material and the Alfresco Development Framework (ADF). Extensive end-to-end tests are implemented using Playwright, with shared page objects and API wrappers for maintainability. The codebase is actively maintained with frequent releases and a well-defined version matrix tracking compatibility with ADF, ACS, Node, and Angular versions.

RATING: 8.5/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
DevExpress/testcafe ★ 9895 676 APPLICATION

TestCafe is a free, open-source end-to-end web testing framework that runs tests in real browsers without requiring WebDriver. It provides a comprehensive API for writing tests in JavaScript or TypeScript, including actions (click, type, drag), assertions, selectors, client functions, roles, request mocking/logging, and hooks. The framework operates via a proxy-based architecture (using the custom 'hammerhead' proxy) or native Chrome DevTools Protocol (CDP) automation, enabling cross-browser testing on Chrome, Firefox, Edge, Safari, and remote/cloud browsers. Key entry points include the CLI (`bin/testcafe.js`), the programmatic API (`src/testcafe.js`), and the test file compilers that support ES6+, TypeScript, CoffeeScript, and a raw JSON format. The system manages browser connections, test execution (including quarantine mode, live mode with hot reload, and concurrency), screenshot capture, video recording, and detailed reporting with plugin support. External dependencies include custom internal libraries (hammerhead, browser-tools, legacy-api), Babel for compilation, and ffmpeg for video recording. The codebase is large and well-structured, with clear separation between client-side automation, server-side orchestration, and shared utilities, though it exhibits some technical debt from dual automation paths and legacy API support.

RATING: 8.4/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
laravel/dusk ★ 1945 332 APPLICATION

Laravel Dusk is a browser automation and testing library for Laravel applications. It provides a fluent, expressive API for interacting with web pages via ChromeDriver or Selenium WebDriver, enabling end-to-end testing without requiring JDK or Selenium server. The library integrates deeply with Laravel's testing infrastructure (PHPUnit/Pest), offering a TestCase base class, console commands for installation and ChromeDriver management, and a rich set of assertions and interactions (clicking, typing, waiting, screenshots, Vue component inspection). It is architecturally a library that wraps the php-webdriver package, adding Laravel-specific conveniences such as environment management, cookie encryption, authentication helpers, and page/component abstractions. The codebase is well-structured with traits for separation of concerns, macroable support for extensibility, and comprehensive unit and browser test coverage.

RATING: 8.4/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
webdriverio/appium-boilerplate ★ 491 280 APPLICATION

This is a boilerplate project for mobile app and browser test automation using Appium and WebdriverIO v9. It provides a comprehensive set of example tests, page/screen objects, reusable helpers, and configuration files for running tests locally or on cloud providers (Sauce Labs, BrowserStack, TestingBot, LambdaTest). The codebase demonstrates cross-platform testing patterns for iOS and Android, including biometric login, deep link navigation, drag-and-drop, swiping, form interactions, and WebView handling. It is well-structured with TypeScript, async/await, and the Page Object Model. The project is actively maintained with recent commits and up-to-date dependencies, making it a solid starting point for teams implementing mobile automation.

RATING: 8.4/10 MAINT: maintained DRIFT: low
â–¸ 4 reusable components found
realworld-apps/realworld ★ 84251 7664 APPLICATION

This repository is the central specification and test suite hub for the RealWorld project (a Medium.com clone demo app). It does not contain any runnable application code. Instead, it defines the API contract via an OpenAPI spec (specs/api/openapi.yml), provides comprehensive test suites in Hurl and Bruno formats for backend validation, and a shared Playwright E2E test suite for frontend validation. It also includes a shared CSS theme (assets/theme/styles.css), documentation built with Astro/Starlight (docs/), and SVG logo generation scripts. The repository serves as the single source of truth that all RealWorld implementations (over 100 backends and frontends) must conform to. Its architecture is that of a specification and validation toolkit, not a deployable service. Key entry points are the Makefile for running tests and generating Bruno collections, and the test runner scripts in specs/api/. External dependencies include Hurl, Bruno, Playwright, Bun, and Astro.

RATING: 8.2/10 MAINT: active DRIFT: low
â–¸ 1 reusable components found

This repository is a thin Node.js library that acts as a Protractor custom framework adapter, bridging Protractor and Cucumber.js. It relies on Serenity/JS to integrate testing across multiple Cucumber versions (1.x through 12.x) and Protractor 5/7. The core logic is in `index.js`, which delegates to `@serenity-js/protractor`'s `ProtractorFrameworkAdapter`. The `package.json` lists `@serenity-js/core`, `@serenity-js/cucumber`, and `@serenity-js/protractor` as runtime dependencies, with `cucumber` and `@cucumber/cucumber` as optional peer dependencies. The codebase is well-structured, with a comprehensive test suite that exercises every supported Cucumber version via a custom `multidep` test runner. The project is actively maintained (last commit 2026-05-13) and follows semantic release. However, it is a thin wrapper with limited standalone reusability outside of the Protractor–Cucumber ecosystem. The primary value is in providing backward compatibility and a unified interface for multiple Cucumber generations.

RATING: 8.0/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
bahmutov/cypress-failed-log ★ 195 32 APPLICATION

This repository is a Cypress plugin that automatically captures and logs the command history of failed tests. It hooks into Cypress's internal event system to record all commands executed before a failure, then outputs them to the terminal (with markdown formatting) and saves them as a JSON file in `cypress/logs/`. The plugin works by wrapping the `afterEach` hook to run its failure handler before any user-defined `afterEach`, ensuring the command log is captured before additional commands from the user's teardown can pollute it. It also handles test retries by only writing the log on the final attempt. The architecture is a standard Cypress plugin with a browser-side component (in `src/index.js`) that captures commands and a Node-side task (registered via `on.js` and `src/failed.js`) that prints the formatted output. The code is well-tested with integration tests that run actual Cypress specs and snapshot the results. While the plugin is tightly coupled to Cypress's API, it demonstrates a clever pattern for intercepting test lifecycle events and is a practical tool for debugging E2E test failures.

RATING: 7.9/10 MAINT: active DRIFT: low
── end of results ──
$ submit: