npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@e2epilot/cli

v1.2.1

Published

E2Epilot — AI-powered E2E test automation orchestrator

Readme

E2Epilot — Fix broken E2E tests. Diagnoses every failing test with real DOM, network, and console evidence — then writes the fix. Autonomous. npm version npm downloads Website · Privacy Policy · Terms of Service

Quick Start

npx -y @e2epilot/cli

Run it from your terminal — a local UI opens in your browser.

To run the non-interactive Fix All flow:

npx -y @e2epilot/cli fix --project ./path/to/tests

Useful options include --framework, --base-url, --headed, --max-concurrent-investigators, and --fixer-file-batch-size. Run npx -y @e2epilot/cli --help for the complete list. If you install the package globally, the shorter e2epilot command is also available.

Features

  • Diagnoses every failure — captures DOM, network, console, and action timeline to explain why a test broke
  • Suggests reviewable fixes — proposes targeted code changes you review and merge, never silent rewrites
  • Learns from every fix — each diagnosis becomes a reusable pattern stored locally, applied instantly next time

Supported Frameworks

| Framework | Language | Version | |---|---|---| | Playwright | TypeScript | 1.45+ | | Cypress | TypeScript | 13+ | | WebDriverIO | TypeScript | 8+ | | Selenium JavaScript | TypeScript | 4+ | | Selenium Java | Java | Maven / Gradle | | SeleniumBase | Python | pytest |

How It Works

E2Epilot runs a multi-agent system where specialized AI agents collaborate:

  1. Run your test suite and capture results
  2. Diagnose failures with full evidence (DOM snapshots, network logs, console output)
  3. Fix broken tests with validated, reviewable code changes
  4. Learn — save the fix as a reusable pattern for future runs

Requirements

  • Node.js 20.1.x, 22.x, or 24+
  • A supported test framework configured in your project

Learned patterns and other application state are stored under ~/.e2epilot by default. Set E2EPILOT_DATA_DIR to use a different location. Pattern records in that user-level store carry an opaque project scope, so project-specific fixes are never reused in an unrelated repository. The package’s curated seed patterns are read-only and remain separate from learned data.

Links

License

Proprietary. See Terms of Service for usage terms.

Copyright © 2026 Kaizen Yutani Ltd.

Jira tickets

Paste a Jira Cloud ticket link into the composer and press Plan. AmbientQA imports the description and requirement fields automatically, then uses the normal test-plan approval flow. There is no Jira import dialog. Initial Atlassian authorization uses the same tab and restores the ticket request on return.

After the full approved ticket plan is written and its generated-test folders pass verification, AmbientQA moves the issue to Done through an available Jira transition. Failed, cancelled, partially approved, already-covered, or unverified work leaves Jira unchanged. Changed ticket requirements, required transition fields, and uncertain update responses are reported inline instead of claiming success or repeating a write.

The Jira composer button opens inline connection settings. OAuth credentials and imported-source/update records stay under the private local data directory (~/.e2epilot/connections/jira by default), outside project configuration; credentials are never sent to the model. Disconnect removes the local grant. Atlassian account settings control server-side revocation.

The connector uses the official Atlassian MCP v2 endpoint and requests Jira read/update permissions. Its only write operation is the verified-workflow transition to Done; it does not add comments, edit descriptions, or create issues.

Verified locally with CPG-7: automatic import, generated Appium test, iOS/Safari scoped and folder passes, then a confirmed Done transition. The Appium capture adapter preserves declared mobile capabilities and resolves folder scopes without substituting desktop Chrome.

Jira-generated test names use a stable issue-key prefix, for example [CPG-7] User signs in with a valid PIN. The prefix appears in proposed plans and is carried into the individual it()/test() name.

Generated UI test quality

JavaScript/TypeScript UI writers (Playwright, WDIO/Appium, Cypress and Selenium JS) validate source before saving tests and revalidate on-disk output against the current page objects before execution.

  • Put selector construction in page objects and call semantic actions such as login() or openCards() from tests. Clicking a page-object getter from a test is rejected.
  • Assert requested amounts, currency, names, error feedback and counts against the relevant UI field. Container visibility, non-empty text, self-comparisons and unrelated API status checks do not satisfy those value requirements.
  • Await asynchronous UI assertions. Comments, uncalled helpers and swallowed assertion failures do not count as proof.
  • Genuine visibility smoke tests, API/domain tests and unmodified legacy cases remain valid. New or changed UI cases receive the new checks. Shared POM changes are checked again before runtime verification.
  • WDIO script-timeout configuration is allowed; fixed sleeps and swallowed UI-action failures remain blocked.

These are bounded static checks for common JS/TS assertion patterns, not a proof of every natural-language business requirement. Runtime verification and plan review still apply. Other test languages retain their existing checks and writer guidance.

Tool discovery pilot

Optional Playwright tool discovery, bounded MCP evidence, and gateway preparation are documented in MCP tool discovery.

Workspace UI and Jev browsing

npm run dev builds and serves the AmbientQA-Jev-Browser workspace design with the existing AmbientQA core. Connect a local project in the sidebar, set its target in Project setup, and use the bottom composer to explore. The composer can switch to a project task; Run, Inspect, Fix, Write test, Reports, coverage, saved cases, questions, plan approval, account settings, and Jira use the existing core APIs. The agents timeline is hidden. /legacy retains the previous workspace.

Browsing requires TYPESAFE_API_KEY in the ignored root .env; it does not require the coding gateway. Jev selects observed actions and Playwright executes them. Cart completion requires matching product, variant, and quantity evidence. Partial exploration remains incomplete, and approval stays separate from observed success. Writing a scenario uses a durable case and the original writer and verification pipeline; discovery alone never marks repository tests as passed.

Browser, viewport, and timeout controls apply to exploration and step capture. The other displayed execution preferences are saved; existing tests continue to use their repository Playwright configuration. Browser data, reports, catalogs, and settings are isolated per project under E2EPILOT_DATA_DIR/browser (default ~/.e2epilot/browser). Browsing and core mutations cannot overlap for a project. Restarting the server marks interrupted browsing honestly instead of resuming unverified actions.

Build with npm run build:workspace, check with npm run typecheck, and run the imported browser and UI contracts with npm run test:workspace. Keep the root Playwright runtime pinned to the supported stable version: the official MCP backend has its own nested version, which must not replace the writer's runtime.

Jev decisions in the existing core

Add TYPESAFE_API_KEY=<your key> to your ignored .env, then restart with npm run dev. Open your test project, set its app URL, and use a specific Plan request that explores a scenario, or record a flow. Normal AmbientQA sign-in and the existing model gateway are still required.

Jev click help is opt-in (E2EPILOT_JEV_BROWSER=1): in 388 traces it handed control back to the Explorer in 755 of 756 decisions, and each call is awaited between Explorer rounds. When on, Jev selects up to three clicks between completed Explorer tool batches, with a 12-click session limit. Native Playwright tools execute them in the same browser and retain flow/evidence recording. The Explorer handles typing, dropdowns, scrolling, missing context, recovery, and final verification. Inventory-only exploration stays with the Explorer. Look for Jev browser decision in the run trace.

The local server sends a bounded, redacted goal and control context directly to TypeSafe. The key stays server-side; input values are omitted from observations and remembered entered values are redacted from Jev requests and telemetry. Leave E2EPILOT_JEV_BROWSER unset (or 0) to use the existing Explorer path. Missing keys, provider errors, confidence below 0.9, stale controls, dialogs, and unsupported pages return to the Explorer. Bounded free-text requests targeting known tests also try Jev before the existing model fallback. E2EPILOT_JEV_ROUTING=0 disables that layer. Explicit Run, Inspect, Fix, Write, case dispatch, and plan authority bypass it; Jev cannot grant write permission or certify repairs or coverage.

Optional settings: TYPESAFE_MODEL (default jev-latest) and E2EPILOT_JEV_TIMEOUT_MS (default 5000). TypeSafe usage is recorded separately in the trace; it is not part of the gateway's account-usage percentage.

Other Jev decisions in the write flow, each with an opt-out: the writer's prompt keeps the recorded flows relevant to the scenario and names the rest (E2EPILOT_JEV_FLOW_SELECTION=0 keeps every flow); when no test title resembles the scenario, Jev reads the test files for one that asserts it under another name, and only the source precheck's requirement-by-requirement proof can end the spec as covered (E2EPILOT_JEV_WRITE_RECALL=0); and the library marks a suggested test that describes the same behavior as an earlier suggestion with Overlaps (E2EPILOT_JEV_LIBRARY=0 turns off the comparison).

When Jev stops answering, two failures in a row (a timeout, a network error, HTTP 5xx or 429) pause it for 30 seconds, then one request tests whether it is back; a failed test doubles the pause up to 5 minutes. Decisions use the rule-based fallbacks meanwhile, no request is sent and no usage row is written for a skipped ask, and the run trace shows Jev paused and Jev resumed. Set E2EPILOT_JEV_BREAKER=0 to keep asking regardless.

Browser guard checks can be run explicitly with E2EPILOT_JEV_BROWSER_TESTS=1 npx vitest run tests/integration/jev-browser-bridge.test.ts. The full native-tool/recording test is tests/integration/jev-browser-control.test.ts. It uses mocked decisions by default; set E2EPILOT_JEV_LIVE_TESTS=1 (with E2EPILOT_JEV_BROWSER=1) and load .env to exercise the real TypeSafe client with a simulated Explorer fallback step.