
Vibe Test — Browser Testing Agent
io.github.AishwaryShrivastav由 GitHub 帳號 AishwaryShrivastav 發布v0.4.6更新於 Oct 24, 2026
Code-aware browser testing agent — 14 Playwright tools for AI code editors via MCP
概覽
為 AI 程式編輯器提供 14 個 Playwright 工具,可掃描程式碼庫、對本機或預備環境 URL 執行瀏覽器測試並回報回歸。
- 可以做什麼
- vibe-testing 是一個本機 MCP 伺服器,向 AI 編輯器提供 14 個瀏覽器測試工具。它會讀取原始碼以推導路由、表單與真實欄位名稱,再驅動真實的 Playwright Chromium 瀏覽器登入、探索頁面、執行情境、截圖並產生 HTML 報告。每次執行的結果會記錄在 .vibe 目錄中,因此會與上一次執行比對差異,回報新通過、新失敗與新增的路由。驗證採用啟發式方式(URL 變化、提示訊息、API 錯誤),工具內部不呼叫 LLM,也不需要 API 金鑰。
- 適用情境
- 當你希望 AI 程式代理在不必手寫測試案例的情況下測試正在運作的網頁應用時使用,特別適合變更後的回歸檢查,或找出哪些路由與流程已損壞。適用於 Next.js、React、Vue、Nuxt、SvelteKit 以及 Express/Fastify 專案,並需要可連線的本機或預備環境 URL。
- 執行需求
- 需要 Node.js 20 或更新版本,以及由 init 或 install-browser 安裝的 Playwright Chromium。受測應用需執行於如 的 URL。測試登入憑證透過 VIBE.md 或 vibe.config.json 提供。另提供 Docker 映像檔。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Vibe Test — Browser Testing Agent,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
vibe-testing
[npm version] [npm downloads] [GitHub stars] [Node.js] [MCP] [License: MIT] [CI]
Code-aware browser testing for AI coding agents.
Product site · npm · MCP Registry · Smithery · Privacy · Launch status
Listed in Awesome MCP Servers. The download badge shows npm's cumulative package downloads; npx package fetches contribute to that total.
vibe-testing reads your codebase so tests use your real routes and field names, runs them in a real Playwright browser, remembers what broke, and tells you what your last change fixed or regressed. It works as an MCP server that gives your editor (Claude Code, Cursor, Windsurf, VS Code Copilot, Roo Code) 14 testing tools, or as a standalone CLI.
The repository is also an Agent Plugin with a release-qa skill. Compatible agents get both the testing tools and a senior-QA workflow for coverage, evidence, regression checks, and a clear release verdict.
Then open your editor and say:
"Scan this codebase and test it against http://localhost:3000"
What code-aware testing adds
Playwright MCP gives your agent hands. vibe-testing gives it a testing workflow: code-derived scenarios, memory across runs, and a report. Two things a stateless browser tool cannot do:
1. Run it twice and it tells you what you broke. Every run writes .vibe/run-snapshot.json and diffs it against the previous run. Every scan writes .vibe/route-manifest.json and diffs your routes. The second run prints regressions and fixes instead of a wall of results:
The same diff reaches your editor as snapshot_diff on run_full_test and run_converge, and as route_changes on scan_codebase, so the agent can flag "checkout broke after that commit" without anyone scrolling a report. Flaky routes, working selectors, and measured timeouts are also remembered between runs.
2. Zero LLM calls inside the tool. Pass/fail verification is heuristic: URL changes, toast detection, API errors. Your editor's model decides what to test; vibe-testing does the browsing and checking. No API key, no per-run cost beyond the editor subscription you already pay for.
Contents
- How it works
- MCP setup (per editor)
- MCP tools reference
- Recommended workflow
- init command
- CLI commands
- VIBE.md, project guidance
- Configuration (vibe.config.json)
- Supported frameworks
- Memory and regression detection
- FAQ
How it works
No test cases to write. The AI reads your source code to understand real field names and routes, opens a browser, tests everything, and shows you what's broken.
init also:
- Detects which AI editors you have installed
- Registers vibe-test in global editor configs (
~/.claude/settings.json,~/.cursor/mcp.json, and so on) so the tools are available in every project, every session - Creates project-level MCP configs and AI instruction files
- Auto-detects your app's URL (reads
.env,vite.config, framework defaults) - Creates
VIBE.md(edit with your test credentials) andvibe.config.json - Installs the matching Playwright Chromium build
MCP setup
Agent Plugin
Install this repository as a plugin when your agent supports the Agent Plugins standard. It includes the portable release-qa skill and starts the published npm MCP server with no API key.
-
Cursor: submit or install
https://github.com/AishwaryShrivastav/vibe-testingas an Agent Plugin. -
Claude Code:
-
Other compatible agents: load the repository root containing
plugin.json,skills/, andmcp.json.
The direct MCP and CLI setup below remains available for editors without plugin support.
MCPB bundle
Claude Desktop and other MCPB hosts can install one local bundle. Build and validate it from this repository:
The artifact is written to artifacts/vibe-testing-<version>.mcpb. See the MCPB distribution guide for the bundle contents, validation steps, Smithery handoff, and the one-time Playwright Chromium prerequisite.
Option 1: automatic (recommended)
Detects and configures all installed editors. Done.
Option 2: manual per editor
Claude Code
Add to ~/.claude/settings.json (global, works in every project):
Or add to .mcp.json in your project root (project-level only):
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
VS Code (GitHub Copilot)
Add to .vscode/mcp.json in your project:
Roo Code / Cline
Add to .roo/mcp.json:
From local build (development)
MCP tools reference
14 tools available to your AI editor after setup:
Tool inputs
scan_codebase
get_context
login
scan_page_elements / explore_page
execute_scenario
Step actions: navigate, fill, click, select, wait, assert, upload
CLI and MCP use the same scenario runner. An assert step evaluates every
supplied condition:
selector: the target must be visible. CSS,text=,label=, andplaceholder=are supported; the named locators match exactly.value: visible text must contain this string, on the selected element or on the page body when no selector is supplied.url: the current URL must exactly match this absolute URL or path resolved against the configured base URL, including query and fragment.
For example:
These checks wait up to the step timeout (default 15000 ms per check). A failed
assertion stops the scenario, records a failed step and reason, and returns
status: "fail"; MCP also sets isError: true. Explicit conditions are used as
the verdict after the existing authentication and form API checks. The
description and expected_outcome prose are not executable assertions.
Without selector, value, or url, assert only checks page health: at least
10 characters of visible body text and no nonempty visible error indicators.
This compatibility check does not prove a described business outcome.
upload requires a file-input selector and a nonempty file path in value.
Relative paths resolve against the codebase root. Hidden file inputs are
supported. A missing file, directory, missing target, or target that is not a
file input returns status: "error". The action selects one file using
Playwright; add an assertion of the resulting UI to verify application-side
processing. It does not automate native file-picker dialogs.
Scenarios must contain at least one step. Unknown actions are errors.
take_screenshot
run_full_test
run_converge
Recommended workflow
Full test session
Tell your AI editor:
The AI will:
scan_codebase, to understand routes, forms, existing testsget_context("login"), to read the actual login form source codelogin, to authenticate in a real browserexplore_page("/dashboard"), clicking everything and observing what breaksexplore_page("/settings"), samesuggest_tests, to find coverage gapsexecute_scenariox N, running targeted test flowsgenerate_report, HTML report opens automaticallycleanup, closing browsers
Test a specific feature
The AI will:
scan_codebase(if not already done)get_context("checkout"), readingCheckoutForm.tsx,api/orders/route.tsand so onloginexecute_scenario, filling the real form fields from source codegenerate_report
Verify a bug fix
The AI will:
login, testing the login flowtake_screenshot, visual confirmation of the post-login state- Report back what it sees
Find what's broken
The AI will run explore_page on every route, collecting API errors, broken elements, and failed interactions, then suggest_tests with the broken items marked as high priority.
init command
What it creates:
Options:
After init, edit VIBE.md with your login URL and test credentials.
CLI commands
run options
run and converge fail with a nonzero exit when no scenarios are discovered
or an execution batch is empty. MCP run_full_test and run_converge return
isError: true for these cases. Empty runs do not write a successful run
snapshot or replace the prior report.
converge options
VIBE.md, project guidance
Create VIBE.md in your project root. vibe-testing reads it automatically on every run.
See VIBE.example.md for the full template.
Configuration
vibe.config.json
Created automatically by init with auto-detected URL. Edit as needed:
Supported frameworks
Existing test files are also read to build a coverage map: Jest, Vitest, Playwright, and Cypress suites are all parsed.
Memory and regression detection
vibe-testing learns across runs and stores state in .vibe/:
- Working selectors: remembers
[name='email']worked on/login, uses it next run - Route timings: adjusts timeouts based on measured load times
- Auth credentials: saved after first login, reused automatically
- Flaky routes: tracks high fail-rate routes, marks them for retry
- Skip routes: routes that consistently error (need URL params) are auto-skipped
- Route manifest (
.vibe/route-manifest.json): every scan diffs against the previous one; new and removed routes surface asroute_changesonscan_codebaseresults so the AI can cover them immediately - Run snapshot (
.vibe/run-snapshot.json): every run captures per-route pass/fail and diffs against the prior run;snapshot_diffflagsnewly_passing(fixes),newly_failing(regressions),still_failing, plus added and removed routes
run_converge returns the same shape, so iterative runs in your editor highlight what you just broke.
Reset with npx vibe-testing@latest reset to start fresh.
What a session looks like
When you ask your editor to "test the login flow", here is what it does:
FAQ
Does vibe-testing use an LLM internally? No. It uses heuristic verification (URL changes, toast detection, API errors). Your editor's model is the brain: it sees screenshots and decides what to test next. Runs have no API cost.
What's the difference between explore_page and execute_scenario?
explore_page is broad: it clicks every button and input it finds and reports the results. execute_scenario is precise: you give it specific steps and it follows them exactly. Use explore_page to find what's on a page, then execute_scenario to test specific flows.
What's get_context for?
It returns the actual source code for a feature, so the AI knows [name='email'] instead of guessing #email-input. Always call it before writing test steps for a specific feature.
Does it handle SPAs with client-side routing? Yes. Playwright navigates the real browser, so client-side routing (React Router, Vue Router, and the rest) works naturally.
Does it handle login / authentication?
Yes. The login tool fills credentials in a real browser, captures auth tokens from localStorage/cookies, and keeps that session alive for authenticated tests. Credentials are persisted in .vibe/memory/ and reused automatically.
Will it click "Delete Account" or other destructive buttons?
No. Set never_interact in vibe.config.json or VIBE.md to blocklist dangerous actions. Any button whose text or selector matches is skipped during exploration.
Can I use it without an AI editor?
Yes. vibe-test run https://your-app.com runs standalone. It scans, generates scenarios, executes them, and produces an HTML report without needing an editor.
How do I test a staging environment?
Set url in vibe.config.json to your staging URL, or pass it as a CLI argument: npx vibe-testing@latest run https://staging.myapp.com.
Does it work with monorepos?
Yes. init detects Turborepo/pnpm/yarn workspaces and finds the frontend app automatically.
Requirements
- Node.js >= 20 (the test suite uses vitest 4.x which requires Node 20+)
- Playwright Chromium.
initinstalls the matching build. To install or repair it directly:
run and converge check for the browser before scanning your project and print the same recovery command when it is missing.
Docker
A Node 20 + Chromium image is included for environments that prefer container-based MCP servers:
Contributing
See CHANGELOG.md for version history. Bug reports and feature requests: GitHub issues.
License
MIT, Aishwary Shrivastav
Links
- npm: https://www.npmjs.com/package/vibe-testing
- GitHub: https://github.com/AishwaryShrivastav/vibe-testing
- Issues: https://github.com/AishwaryShrivastav/vibe-testing/issues
- Official MCP registry: listed as
io.github.AishwaryShrivastav/vibe-testingat https://registry.modelcontextprotocol.io - [mcpindex]
- Model Context Protocol
- Playwright
來源:README.md,提交 a451c84
工具
0版本歷史
2- v0.4.6最新Sep 21, 2026
- v0.4.5Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分