node.js版本和path必须对齐,vscode终端报command not found主因是环境未匹配:需确保右下角node版本与which node一致,项目根目录配.nvmrc并执行nvm use,本地安装@playwright/test而非全局,调试时program指向${workspacefolder}/node_modules/.bin/playwright,args含test和${filebasename},加--debug参数才能attach worker进程。

Node.js 版本和 PATH 必须对得上 VSCode 终端
VSCode 集成终端找不到 npx 或报错 command not found: playwright,八成是 Node 环境没对齐。不是“装了就行”,而是 VSCode 启动时读取的 Node 路径必须包含你项目依赖的 node_modules/.bin。
- 检查右下角状态栏显示的 Node 版本,和你在终端里执行
which node(macOS/Linux)或where node(Windows)输出是否一致 - 如果用了
nvm,确保项目根目录有.nvmrc,且已执行nvm use;否则 VSCode 可能加载系统默认 Node(常为旧版) - 别全局安装
@playwright/test——npm install -g @playwright/test会导致playwright命令在某些 shell 中不可见,尤其搭配 pnpm 或 nvm 时 - 验证是否就绪:在 VSCode 内置终端运行
npx playwright test --version,能输出版本号才算真正通
launch.json 里 program 和 args 必须指向本地 CLI,不能只写 playwright
官方插件不接管调试逻辑,F5 调试本质是用 Node.js 调试器启动 playwright CLI 进程。写成 "program": "playwright" 会失败,因为系统 PATH 不一定生效,VSCode 也不保证从正确上下文调用。
使用Playwright API直接进行浏览器自动化。导航网站、与元素交互、提取数据、截图、生成PDF、录制视频,自动化复杂工作流程。比MCP方法更可靠。
-
program必须是绝对路径或工作区相对路径:"${workspaceFolder}/node_modules/.bin/playwright"(Windows 下用playwright.cmd) -
args至少含"test"子命令,否则 CLI 不知道你要干啥;加上"${fileBasename}"才能自动调试当前打开的.spec.ts文件 -
--project=chromium必须和playwright.config.ts里定义的 project 名完全一致,大小写、拼写都不能错 - 加
--debug参数(Playwright v1.40+)才能让调试器 attach 到 worker 进程,否则断点命中但page、browser显示为undefined
无头模式下看不到浏览器,但调试时要小心 --headed 和 --debug 冲突
默认无头运行没问题,但想单步调试又不想弹窗干扰?--headed 和 --debug 同时用可能卡住或行为异常 —— 前者启 GUI,后者启用 inspector 协议,两者在某些环境下抢资源。
- 日常调试优先用
--debug+ 无头模式:能看到 DevTools 的 Sources 面板、Network、Console,比弹窗更可控 - 真要可视化操作(比如定位元素失败),临时换用
--headed,但去掉--debug,避免冲突 - CI 环境或远程服务器上,
--headed会直接崩溃(无 DISPLAY),必须配 Xvfb 或用无头模式 - 录制脚本(
npx playwright codegen)必须用--headed,且首次运行前务必先npx playwright install chromium
playwright.config.ts 解析失败会导致 launch.json 白忙活
VSCode 调试器启动 playwright test 时,会尝试加载 playwright.config.ts。如果 TypeScript 编译失败(比如用了 import type 但 tsconfig.json 没开 verbatimModuleSyntax),整个调试流程就停在 “Cannot find module” 上,连断点都进不去。
- 最稳方案:把配置文件换成
playwright.config.js,绕过 TS 编译环节 - 若坚持用 TS,确保项目根目录有可用的
tsconfig.json,且compilerOptions.module设为nodenext或commonjs - 运行
npx playwright test --debug在终端手动测试一次,比盲调 launch.json 更快暴露配置问题 - 注意
testMatch和projects字段:如果testMatch没覆盖你的.spec.ts文件,${fileBasename}就找不到目标,调试直接退出










