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

@testneo/cli

v0.3.0

Published

TestNeo CLI — .testneo runner, API Risk Discovery, PR validate, Engineering Memory, local-agent routing

Readme

@testneo/cli

Release assurance in your terminal — run .testneo files, pick cloud test cases, one-shot NL (try), API Risk Discovery (paste cURL), PR validation + Engineering Memory. Same backend as the TestNeo app and MCP.

| Surface | Use when | |---------|----------| | @testneo/cli (this) | Terminal & CI — humans + scripts | | @testneo/mcp-server | Cursor / Claude chat agents | | @testneo/playwright-ai-sdk | Playwright ai.run in Git |

Docs: testneo.ai/docs/testneo-cli.html


Install

npm install -g @testneo/cli

From monorepo (dev):

cd packages/testneo-cli
npm install && npm run build

# One-shot (safest — no alias):
node dist/cli.js api-risk --help

# Alias: expand pwd NOW (must run this line while cwd is packages/testneo-cli):
alias testneo="node $(pwd)/dist/cli.js"
type testneo   # must show an absolute .../packages/testneo-cli/dist/cli.js

# Replace stale global 0.1.x (needs write access to npm prefix):
#   sudo npm link
# Check: testneo --version   # expect 0.3.0+

If you see Cannot find module .../packages/testneo-cli/packages/testneo-cli/dist/cli.js, your alias is a relative path — unset it (unalias testneo) and recreate with the absolute form above.

testneo login                          # email/password → API key saved
# or:
testneo config set apiKey tn_your_key
testneo config set baseUrl https://app.testneo.ai
testneo config set webAppUrl https://app.testneo.ai
testneo config set projectId 47
testneo config set defaultEnvironment dev
testneo doctor

Commands (v0.3.0)

| Command | Description | |---------|-------------| | testneo doctor | Validate API key + list projects + agent routing hint | | testneo login | Interactive login → create tn_ key | | testneo run <file\|dir> | Run .testneo file(s) | | testneo run --pick | Browse project cases → multi-select → run | | testneo run --test-case 12,34 | Run by id (CI) | | testneo try "…" | One-shot NL → upsert + execute | | testneo agent status | Local agent online? (drives smart routing) | | testneo status <id> [--wait] | Poll execution | | testneo pr validate | Release Brief from local git + EM | | testneo pr validate --pr 142 | Server PR validation (GitHub connected) | | testneo pr validate --run-impacted --confirm | Execute impacted tests (write guard) | | testneo pr history | Recent validation workflows | | testneo memory list\|patterns\|match | Engineering Memory | | testneo api-risk scan | Dev team: paste cURL → discover + run (+ brief / promote) | | testneo api-risk discover\|run\|brief\|promote | Stepwise Risk Discovery (CI-friendly) | | testneo readiness | Release confidence summary | | testneo ask "…" | AI Assistant Q&A (same API as web chat + MCP) | | testneo ask --chat | Interactive multi-turn terminal chat | | testneo tui | Interactive home (pick → validate → run) |

Global flags

| Flag | Description | |------|-------------| | --json | Single JSON result (CI) | | --agent | NDJSON event stream for coding agents (output mode — not the same as local agent) |

Execution routing (local agent vs cloud)

By default (preferAgent: true), if you omit both flags the CLI prefers a local agent when online, else cloud. For docs and CI, pass --cloud or --use-agent explicitly so the destination is obvious.

| Control | Effect | |---------|--------| | --cloud | Always cloud / EC2 (recommended in examples & CI) | | --use-agent | Force local agent (must be online) | | (neither) | Probe agent → local if online, else cloud | | testneo config set preferAgent false | Always cloud unless --use-agent | | TESTNEO_PREFER_AGENT=false | Same as above (env) |

testneo agent status
testneo doctor

testneo run smoke.testneo --cloud --wait
testneo run smoke.testneo --use-agent --wait
testneo try "Verify login" --use-agent --wait

run / try flags

--project, --env, --wait, --fail-on-error, --use-agent, --cloud, --timeout


Quick recipes

File suite (CI — pin cloud):

testneo run tests/smoke/ --cloud --wait --fail-on-error

Pick & run (TTY):

testneo run --pick --cloud --wait --fail-on-error

One-shot NL:

testneo try --cloud --url https://www.saucedemo.com \
  "Enter username as standard_user
Enter password as secret_sauce
Click Login
Verify Products is visible" --wait

PR gate (before merge):

testneo pr validate --project 47
# with execution on cloud (explicit confirm):
testneo pr validate --run-impacted --confirm --cloud --wait --fail-on-error

Memory vs current diff:

testneo memory match --project 47

API Risk Discovery (dev team — paste cURL):

# Sample FakeStore cURL ships in the package
# One-shot: discover + run; fail CI if criticals
node dist/cli.js api-risk scan -p 6 -f examples/api-risk/fakestore-products.curl --cloud \
  --fail-on-critical --brief-out api-confidence.md --json

# Local agent (private / BFSI)
node dist/cli.js api-risk scan -p 6 --curl - --use-agent --max-variants 20 \
  < examples/api-risk/fakestore-products.curl

# Stepwise + promote failures to regression & Engineering Memory
node dist/cli.js api-risk discover -p 6 -f examples/api-risk/fakestore-products.curl --json > discover.json
node dist/cli.js api-risk run -p 6 --discovery-id "$(jq -r .discovery_id discover.json)" \
  --cloud --fail-on-critical --json > run.json
node dist/cli.js api-risk promote -p 6 --run-file run.json --confirm

Agent mode (Cursor / scripts — NDJSON):

testneo try "Verify login works" --wait --agent

.testneo format

# Test: Sauce Demo login
# Project: 47
# Environment: dev

Navigate to {{base_url}}
Enter username as "standard_user"
Enter password as "secret_sauce"
Click on Login button
Verify "Products" is visible

Environment variables

| Variable | Purpose | |----------|---------| | TESTNEO_BASE_URL | API origin | | TESTNEO_WEB_APP_URL | Dashboard links | | TESTNEO_API_KEY | Bearer token | | TESTNEO_PROJECT_ID | Default project | | TESTNEO_DEFAULT_ENV | Default environment | | TESTNEO_PREFER_AGENT | true (default) / false — smart local-agent routing |


Ask (AI Assistant)

Same API as the web AI Assistant and MCP testneo_ai_assistant_query. Answers come from your project data on the server — the CLI only forwards the question.

testneo ask --project YOUR_PROJECT_ID "How many test cases do I have?"
testneo ask --project YOUR_PROJECT_ID "What is my release readiness?"
testneo ask --project YOUR_PROJECT_ID --chat

License

MIT