Windows下Protractor集成protractor-retry 2.0.1 测试无法重跑报JScript编译错误
Windows环境下protractor-retry 2.0.1自动重跑功能异常
基础运行与复现信息
- 环境配置:Windows 10 19041版本,Node.js v14.16.1,npm v6.14.12,基于Protractor测试框架集成2.0.1版本的protractor-retry插件实现测试失败自动重跑能力
- 复现范围:相同配置环境下,同组同事可完整复现全部异常现象
核心异常表现
- 首轮测试执行完成后,未触发预期的失败自动重跑流程,同时抛出Microsoft JScript编译错误,错误提示可参考截图:

- 经定位,异常发生在插件触发自动重跑环节:插件自动执行的重跑命令与首次启动测试的命令完全一致,但执行失败;手动在终端执行
npm run e2e时,测试流程可正常运行 - 插件自动拉起的失败进程为
C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -Command npm run e2e,最终以退出码1终止运行 - 公开渠道仅能检索到2011年前后的零散相关帖子,无落地可参考的解决方案
附npm运行日志
20 verbose cwd C:\Users\Scott Floyd\projects\site2\st-site 21 verbose Windows_NT 10.0.19041 22 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "run" "e2e" 23 verbose node v14.16.1 24 verbose npm v6.14.12 25 error code ELIFECYCLE 26 error errno 1 27 error st-site@0.0.0 e2e: `ng e2e iccmNA-e2e` 27 error Exit status 1
可落地排查方向
- 排查Windows非交互式PowerShell的执行策略影响:插件拉起的PowerShell进程不会继承用户手动打开终端的会话上下文,系统默认的非交互式执行策略可能拦截未签名的脚本命令,直接触发JScript类编译报错
- 核对插件对含空格项目路径的转义逻辑:当前项目路径
C:\Users\Scott Floyd\projects\site2\st-site本身带空格,protractor-retry 2.0.1版本对Windows平台的命令拼接如果没做全量转义处理,会导致PowerShell拆分解析命令,直接执行失败 - 绕开中间PowerShell调用层做验证:把插件默认通过PowerShell调起npm的重跑逻辑,替换为直接调用node运行protractor启动入口的方式,验证是不是shell层的兼容问题导致的执行失败
- 提取重跑环节的全量日志:定位JScript编译错误对应的具体脚本行,确认是否存在脚本编码不匹配,导致PowerShell误将非JScript脚本按对应语法解析的问题
内容的提问来源于stack exchange,提问作者Scott Floyd
相关产品推荐
相关产品推荐

