You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线运行Cypress测试时Chrome DevTools协议重连失败求助

Jenkins流水线运行Cypress有头Chrome测试时DevTools连接失败的解决方案

问题重现

在Windows 10 Jenkins代理上执行Cypress有头Chrome测试时,流水线失败并抛出以下错误:

Start generate report process
Read and merge jsons from "C:\jenkins\workspace\Shuttle-Online-UITests-Pipeline\cypress\reports\.jsons"
There was an error reconnecting to the Chrome DevTools protocol. Please restart the browser.

Error: connect ECONNREFUSED 127.0.0.1:55047
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16)

执行命令为:

npx cypress run --headed --spec "cypress/e2e/**/*.cy.ts" --env shuttle_webservice=https://xxxxxx/OnlineUITestsMaster.WebService/,version=5.7.0,think_time=1000,lang=en_US --reporter-options "configFile=cypress/config/reporter-chrome-config.js" --browser chrome

环境版本:Cypress 13.6.3、Node.js 18.15.0、Jenkins 2.452.1,已尝试重启浏览器和虚拟机,问题未解决。

解决方案

  • 指定固定调试端口并禁用沙箱
    Windows Jenkins代理运行有头Chrome时,沙箱机制或随机端口占用可能导致DevTools连接失败。修改执行命令,添加固定调试端口和沙箱禁用参数:

    npx cypress run --headed --spec "cypress/e2e/**/*.cy.ts" --env shuttle_webservice=https://xxxxxx/OnlineUITestsMaster.WebService/,version=5.7.0,think_time=1000,lang=en_US --reporter-options "configFile=cypress/config/reporter-chrome-config.js" --browser chrome --remote-debugging-port=9222 --no-sandbox
    

    固定端口可避免随机端口被占用,--no-sandbox解决Jenkins服务权限不足无法启动沙箱的问题。

  • 切换Jenkins代理为交互式服务模式
    Windows Jenkins代理默认以无桌面交互的服务模式运行,导致有头Chrome无法正常初始化DevTools连接:

    1. 打开Windows服务管理器,找到Jenkins代理服务
    2. 右键进入「属性」-「登录」选项卡
    3. 选择「此账户」,输入具备桌面权限的本地/域账户及密码
    4. 勾选「允许服务与桌面交互」,重启Jenkins代理服务
  • 增加Cypress浏览器启动超时
    Windows虚拟机资源不足可能导致Chrome启动缓慢,Cypress超时无法连接DevTools。在cypress.config.ts中增加启动超时配置:

    import { defineConfig } from "cypress";
    
    export default defineConfig({
      e2e: {
        setupNodeEvents(on, config) {
          // 保留原有配置
        },
        // 增加浏览器启动超时至120秒
        browserLaunchTimeout: 120000,
        defaultCommandTimeout: 10000,
        pageLoadTimeout: 60000
      },
    });
    
  • 排查端口占用
    错误中的55047端口可能被其他进程占用,在Jenkins代理上执行以下命令排查:

    netstat -ano | findstr :55047
    

    若找到占用进程,结束进程后重试流水线;也可在命令中指定未被占用的固定端口(如9222)。

  • 匹配Chrome与Cypress版本
    Cypress 13.6.3要求Chrome版本≥114,检查代理上的Chrome版本,若过低则升级至最新稳定版后重试。

内容的提问来源于stack exchange,提问作者Dhafer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:10:00