aishwaryshrivastav/vibe-testing
Code-aware browser testing and release QA for AI coding agents.
Changelog
All notable changes to vibe-test are documented here.
[0.4.6] — 2026-09-22
Added
- Portable Agent Plugin packaging. The repository now bundles the MCP server with a
release-qaAgent Skill for evidence-backed browser testing and release verdicts. It includes Agent Plugins 1.0, Claude Code, and marketplace manifests so the same QA workflow can be distributed beyond MCP directories. - Project configuration over MCP. The new
configuretool detects the framework, active local server, and authentication method before a run. The server now exposes 14 tools. - TanStack Router support. Static discovery understands pathless route groups, index routes, and dynamic segments. A bounded same-origin crawl can recover safe smoke scenarios when static discovery has no runnable scenarios.
- Canonical product site. Package and site metadata now use
https://vibetesting.tfgstudio.com, with a Pages CNAME, canonical tags, robots, sitemap, and SoftwareApplication structured data.
Fixed
- Installed CLI execution. Package-manager symlinks now run
helpandinitcorrectly throughnpx-style installs. - Truthful report metrics. Reports separate static routes, live pages, and executed scenario outcomes. Source test files are labeled as source evidence and are never presented as browser-tested routes.
- Bounded server and authentication detection. Configuration probes loopback HTML servers, recognizes Google OAuth and password flows, and returns diagnostics instead of stack traces when no safe scenario can run.
Verification
- The release candidate was installed into a disposable copy of AI Astrology Guru.
npx vibe-testing --helpand project-onlyinitcompleted, TanStack Router was detected, port8080was selected, and Google OAuth at/authwas identified. - The packed MCP server listed 14 tools and configured the project. Static analysis found 22 routes. A focused public-home scenario attempted 1 check, passed 1, failed 0, skipped 0, and generated
.vibe/report.html. The original Guruji working tree was unchanged.
[0.4.5] — 2026-09-15
Added
- Evidence-based QA verdicts. Reports now distinguish outcomes proved by explicit URL or element assertions from browser steps that completed without proving the expected product result.
- Verification details in HTML reports. Each scenario shows the assertion evidence behind its status so a builder can see what was checked and what still needs human review.
- Interactive init prompt.
initasks whether to install Chromium when running interactively while preserving predictable behavior in scripts and CI.
Fixed
- Heuristic checks no longer overclaim success. Expected error messages, SPA auth gates, and DOM error checks are reported as smoke checks unless an explicit assertion proves the outcome.
[0.4.4] — 2026-09-14
Added
- Reliable browser setup.
initinstalls the Chromium build required by its bundled Playwright version.install-browserrepairs or installs that exact build without relying on whichever Playwright versionnpxresolves globally. - Early browser check.
runandconvergenow stop before scanning when Chromium is missing and print one working recovery command. --skip-browser-installforinit. CI images and managed environments can skip the download explicitly.
Fixed
- Glama container evaluation. The Docker image now compiles from a clean checkout, installs Chromium with its system dependencies, and verifies the MCP handshake in CI.
server.jsonnow matches the published package version. - Assertions now affect the verdict. Selector visibility, visible text, and exact URL assertions execute in Playwright and fail the scenario when they do not match.
- Uploads now use the browser. Upload steps validate the local file and set it on the requested file input instead of returning success without interacting with the page.
- Empty runs fail clearly. A scan that discovers no runnable scenarios now exits with an error in both the CLI and MCP paths. Failed MCP runs also set
isError. - Default route scope covers real apps. The default
/**scope includes the root route and nested routes while treating regex metacharacters as literal path characters. - CLI and MCP share one runner. Both entry points now execute the same action and assertion logic, so the result no longer depends on how vibe-testing was started.
- Real-browser CI coverage. The test suite now installs Chromium and exercises browser assertions, uploads, empty-run failures, route matching, and MCP error results. Test count: 140.
[0.4.3] — 2026-09-14
Focus: turning vibe-test into a real assistant for AI coding tools — config you provide actually gets used, dynamic routes are testable, and auth detection catches modern Next.js/NextAuth patterns. No new heuristic noise; only fixes that make the existing browser execution honest.
Fixed
npx vibe-testing@latestnow resolves the CLI. The package keeps the existingvibe-testandvibe-test-mcpbinaries and adds avibe-testingCLI alias matching the package name, so npm can select the intended executable.- The installed
vibe-test-mcpbinary now starts with Node. The source lacked an executable shebang, so invoking the npm binary directly caused the shell to parse JavaScript as shell commands. config.auth.credentialsare now passed to the scenario generator. Previously the configured email/password were used only for the initialperformLogincall — the generated authenticated scenarios still filledvt...@gmail.com/Test1234!, so any project relying on real seeded test accounts (e.g.teacher.dev@dhyanhq.local) failed to log in. The credentials supplied invibe.config.jsonnow flow straight intorecommendations.saved_credentialsand into the login scenario steps.- Login route detection no longer hardcoded to substring
"login". Modern Next.js / NextAuth conventions use/signin,/sign-in,/log-in. All four are now recognized as login routes for scenario generation, redirect-to-login assertions, and the public-paths whitelist. auth.login_urlfrom config (orVIBE.md) now binds the login route explicitly. Useful for apps with non-standard login paths (e.g./access,/authenticate) that wouldn't be caught by keyword matching.- Broader auth-pattern detection in
inferAuthRequirement. AddedgetSessionUser,getCurrentUser(),currentUser(),clerkAuth,useUser(), andredirect('/signin' | '/sign-in')patterns. Pages using these now correctly getrequires_auth: trueinstead of being treated as public.
Added
-
scope.seed_routesconfig option. Lists concrete URLs that the static route parser can't enumerate (dynamic segments like/live/[slug]). Each seeded route inheritsrequires_authandfile_pathfrom its dynamic parent, so behaviour extraction still works. Required for testing any app with slug-based pages — chat sessions, live classes, blog posts, user profiles.{ "scope": { "seed_routes": ["/live/dev-mode-a-now", "/live/dev-mode-b-now"] } } -
7 new vitest cases covering credentials forwarding,
/signindetection, configurablelogin_url,seed_routesschema,getSessionUserauth detection, andredirect('/signin')auth detection. Test count: 56 → 63. -
2 package contract tests covering the default
npxalias and executable shebangs. Test count: 63 → 65. -
CLI feedback line — after
runandconvergecomplete, the CLI prints one dim line pointing to GitHub issues for feedback. -
docs/0.5.0-scope.md— scope document for the plannedvibe-scenarios.yamlfeature (AI-authored test plans as YAML, targeting 0.5.0).
Changed
- README repositioned around "code-aware browser testing" — leads with the regression diff (run it twice and it tells you what you broke) and the zero-LLM-calls architecture. Same technical content, sentence-case headings, ASCII throughout.
- MCP server version string reads from
package.json— was hardcoded to0.3.9, so MCP clients saw a stale server version. Now always matches the published package.
[0.4.2] — 2026-05-27
Changed
- Docs-only release — synced README, CHANGELOG, llms.txt, and CLAUDE.md with the 0.3.2 → 0.4.1 changes. No code changes.
[0.4.1] — 2026-05-27
Fixed
converge()now emits snapshot diff —run_convergeand theconvergeCLI now save run snapshots and report newly-passing/newly-failing routes, matchingrun()behaviour. Thesnapshot_difffield is included in theVibeRunResultreturned by both methods.
[0.4.0] — 2026-05-27
Added
- Route manifest diffing —
scan_codebasenow writes.vibe/route-manifest.jsonand compares against the previous scan. New and removed routes are logged inline and surfaced asroute_changes: { new_routes, removed_routes }on the returned product model. Lets the AI see "5 new routes since you last tested — should we cover them?" automatically. - Run snapshot regression detection — Each run writes
.vibe/run-snapshot.jsoncapturing per-route pass/fail status. The next run diffs against it and emitssnapshot_diff: { newly_passing, newly_failing, still_failing, new_routes, removed_routes }. Regressions and fixes are now visible without scrolling the report. routesconfig option —vibe.config.jsonacceptsroutes: 'auto' | 'config'(defaultauto) to control whether routes are discovered or read from config.- Manifest test suite — 11 new vitest tests covering route manifest diff and run snapshot diff behaviour.
[0.3.11] — 2026-05-27
Fixed
- MCP server defaults to headless browser — when launched as an MCP server, the browser now runs headless by default (was opening visible windows that disrupted editor sessions). CLI behaviour unchanged (still headed by default).
[0.3.10] — 2026-05-27
Added
- Dockerfile — multi-stage Node 20 + Chromium image for Glama.ai quality scoring. Ships compiled
dist/, installs Playwright Chromium, runs MCP server over stdio.
Fixed
- Improved MCP tool descriptions for Glama TDQS scoring — each tool now has a more discoverable, intent-rich description so the Glama registry tool-description-quality-score (TDQS) ranks the server higher.
[0.3.9] — 2026-05-27
Fixed
- CI: dropped Node 18 from test matrix — vitest 4.x requires Node 20+. CI now runs on Node 20 and 22 only. Local Node 18 builds may still work for the runtime but
npm testwill fail.
[0.3.8] — 2026-05-27
Added
- vitest test suite (44 tests) — covers config parsing, framework detection, route parsing, gap analysis, scenario enrichment, and memory recommendations. Run with
npm test. - Automated MCP Registry publishing — GitHub Actions workflow publishes to the official MCP Registry on git tag, using OIDC trusted publishing.
[0.3.7] — 2026-05-27
Changed
- Docs: clarified Vue + Vite requires vue-router — README and llms-full.txt now note that Vue route detection requires
vue-routerto be installed (no fallback for unrouted SPAs).
[0.3.6] — 2026-05-27
Fixed
- Resolved 5 critical gaps from full project audit — fixes covering selector escaping, scope filter edge cases, memory schema migration, error swallowing in explorer, and report generation when no scenarios are produced.
[0.3.5] — 2026-05-27
Fixed
- CLI version reads from package.json —
vibe-test --versionwas hardcoded to an old number. Now readspackage.jsonat runtime so the version always matches what npm shipped.
[0.3.4] — 2026-05-27
Fixed
- MCP Registry: added
titlefield — improves search discoverability on the official MCP Registry.
[0.3.3] — 2026-05-27
Fixed
mcpNamecase corrected —io.github.AishwaryShrivastav/vibe-testing(was lowercase). Required to match GitHub username casing for trusted publisher OIDC verification.
[0.3.2] — 2026-05-27
Added
- MCP Registry support — added
server.jsonandmcpNamefield inpackage.json. vibe-test is now listed in the official Model Context Protocol Registry, discoverable from any MCP-aware editor.
[0.3.1] — 2026-05-27
Fixed
- SvelteKit and Nuxt route detection — added proper
'sveltekit'and'nuxt'framework types with dedicated route parsers (+page.svelte,pages/*.vue,+server.ts,server/api/**). Previously returned'react-spa'and'nextjs-pages'respectively, producing 0 routes. - HTTP Basic Auth support — added
'basic'as a valid auth strategy. Sets credentials on the browser context viacontext.setHTTPCredentials()for preview-gated staging sites. Previously crashed with a raw Zod stack trace. - Auth login on forms without name/id attributes — login now tries cascading selectors:
[name],[type],#id,[placeholder*="email"],[aria-label*="email"],input[type="text"]:first-of-type. Previously timed out on React controlled components with no identifying attributes. - Phantom "text=Active" click scenarios — removed hardcoded
['All', 'Active']fallback in enricher'sfindFilterOptions. When no real filter tabs are found, no filter scenario is generated instead of producing guaranteed failures. - Package name consistency — replaced all
@aishwaryshrivastava/vibe-testreferences withvibe-testing@latestacross README, MCP-SETUP.md, CLAUDE.md, AGENTS.md template, and CLI init output.
Changed
- Updated
llms.txtandllms-full.txtto document all 13 MCP tools (was 11, missingget_contextandrun_converge).
[0.3.0] — 2026-05-22
Added
get_contextMCP tool — returns the most relevant source files for a given feature or route with relevance scoring. Gives the LLM real field names, selectors, and API endpoints before it writes test steps, eliminating selector guesswork. Ported from testpilot pattern.- Monorepo detection —
initandscan_codebasenow detect Turborepo, pnpm workspaces, yarn workspaces, and Lerna. Automatically finds the frontend app inapps/orpackages/by scoring dependencies. - Port auto-detection —
initreads.env.local→.env.development→.envforPORT=, thenvite.config.{ts,js}forport:, then falls back to framework defaults (Next.js: 3000, Vite/React: 5173). Writes the correct URL intovibe.config.jsonautomatically. - More frameworks in detector — Nuxt, SvelteKit, Fastify, Vue, and
src/app/src/pagesNext.js variants. - Global registration by default —
initnow registers vibe-test in global editor configs (~/.claude/settings.json,~/.cursor/mcp.json,~/.codeium/windsurf/mcp_config.json) by default, not just project-level. Every future session in any project has the tools available. Use--no-globalto opt out. - Correct Claude Code global path — fixed from
~/.claude.jsonto~/.claude/settings.json. - Windsurf gets
.windsurfrules— project-level instructions file created on init. - VS Code Copilot gets
.github/copilot-instructions.md— picked up automatically by GitHub Copilot. CLAUDE.mdshipped with package — included in npmfilesso it's available immediately after install.- GitHub Actions CI — builds and type-checks on Node 18, 20, 22. Dry-run publish on non-tagged commits, real publish on git tags.
.npmignore— keeps the npm package clean (excludessrc/,test/,.github/, etc.).MCP-SETUP.md— quick reference for manually adding vibe-test to any editor.
Changed
- Package name corrected to
vibe-test(was accidentally set tovibe-testingin a previous commit). init --globalflag flipped toinit --no-global— global is now the default.- Init output now shows
(global)next to globally registered configs. - Stronger mandatory language in all AI assistant templates:
MUST use,ALWAYS call,NEVER write manual Playwright tests. CLAUDE.mdtemplate (written to user projects) now includesget_contextstep in the required workflow.- Cursor rule (
alwaysApply: true) ensures the rule is injected into every Cursor conversation.
Fixed
- Claude Code global config path was
~/.claude.json— corrected to~/.claude/settings.json.
[0.2.0] — 2026-04-28
Added
convergecommand andrun_convergeMCP tool — iterative testing: baseline run, then automatic follow-up rounds from coverage gaps and failures until pass-rate / gap thresholds or max rounds.- Multi-editor
init— auto-detects Cursor, Claude Code, Windsurf, VS Code, Roo Code and configures all of them in one command. AGENTS.md— universal agent instructions file created on init (works with Codex, Devin, Zed).run_convergeMCP tool — exposes converge behavior to editor LLMs.
Changed
initnow createsvibe.config.jsonwith sensible defaults.- Cursor rules use
alwaysApply: trueto inject into every conversation.
[0.1.0] — 2026-04-10
Added
- Initial release.
- MCP server with 11 tools:
scan_codebase,login,scan_page_elements,explore_page,execute_scenario,get_coverage,suggest_tests,take_screenshot,generate_report,run_full_test,cleanup. - CLI:
vibe-test run,vibe-test reset,vibe-test report. - Framework detection: Next.js App Router, Next.js Pages Router, React SPA, Express.
- Static code analysis: routes, forms, buttons, dialogs, feature extraction.
- Playwright browser engine: scenario runner, page explorer, heuristic verifier.
- Memory system: persists selectors, credentials, flaky flows, run history.
- HTML report: self-contained, dark theme, embedded screenshots.
VIBE.mdsupport: project-specific login URL, credentials, blocklist, flaky routes.- Action blocklist: prevents destructive interactions during exploration.