VSCode调试WebdriverIO TypeScript测试框架反复失败求助
问题详情
调试基于WebdriverIO的TypeScript测试框架时,启动调试后仅输出- Waiting for the debugger to disconnect.,无法正常执行测试。仅在重启机器后的第一次调试能成功运行,后续重复尝试均出现相同问题。
我的launch.json配置:
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "skipFiles": [ "<node_internals>/**" ], "outputCapture": "std", "name": "Launch Program", "program": "${workspaceRoot}/node_modules/@wdio/cli/bin/wdio.js", "args": ["${workspaceRoot}/build/main/config/wdio.conf.js"], "preLaunchTask": null, "sourceMaps": true, "outFiles": [ "${workspaceFolder}/out/**/*.js" ], "resolveSourceMapLocations": [ //code to avoid 'Could not read sourcemaps' issues "${workspaceFolder}/**", "!**/node_modules/**" ] }] }
控制台日志:
C:\Program Files\nodejs\node.exe .\node_modules@wdio\cli\bin\wdio.js
C:\Automation\angular_ui-auto-framework/build/main/config/wdio.conf.jsDebugger attached. Execution of 1 workers started at
2022-12-21T15:25:32.199Z [2022-12-21 20:55:32:902] - DONE - File
'c:\Automation\angular_ui-auto-framework\src\osr_ui-automation\Results\testReport.json'
is deleted successfully Waiting for the debugger to disconnect...
解决方法
1. 检查并释放调试端口占用
Node调试默认使用9229端口,若测试结束后残留进程未释放端口,会导致后续调试失败。
- 打开命令提示符执行:
netstat -ano | findstr :9229 - 找到输出中的PID,打开任务管理器结束对应进程。
2. 修改launch.json配置优化调试行为
添加restart和console配置,确保调试器自动清理残留进程并正确输出:
{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "skipFiles": ["<node_internals>/**"], "outputCapture": "std", "name": "Launch Program", "program": "${workspaceRoot}/node_modules/@wdio/cli/bin/wdio.js", "args": ["${workspaceRoot}/build/main/config/wdio.conf.js"], "preLaunchTask": null, "sourceMaps": true, "outFiles": ["${workspaceFolder}/out/**/*.js"], "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ], "restart": true, "console": "integratedTerminal" }] }
3. 确保测试完成后终止进程
在wdio.conf.js中添加onComplete钩子,强制结束测试进程:
exports.config = { // 现有配置... onComplete: () => { process.exit(0); } };
4. 更新依赖版本
确保Node.js为稳定版,同时更新WebdriverIO及相关依赖:
npm update @wdio/cli @wdio/local-runner typescript
内容的提问来源于stack exchange,提问作者varun Raj

