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

Cypress执行测试时Chromium渲染进程崩溃问题求助

Cypress执行测试时Chromium渲染进程崩溃(Fatal JavaScript invalid size error)的解决办法

问题描述

执行cypress run执行单个登录测试时,遇到以下报错:

We detected that the Chromium Renderer process just crashed.

Fatal JavaScript invalid size error 169220804

#FailureMessage Object:  Electron Framework            v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16184648

已尝试场景:

  • 切换Chrome、Electron浏览器
  • 在Windows 11、MacOS Monterey系统测试
  • 使用--headless模式
  • 更换Node.js 14/16、Cypress 9.7/10.7.0版本

问题特征:仅项目主页面测试时崩溃,登录成功加载主页面几秒后触发;直接用Chrome访问主页面无异常,测试其他网页正常,疑似页面加载时内存压力导致。

解决办法

1. 增大Node.js内存限制

通过NODE_OPTIONS环境变量调整V8堆内存上限,缓解内存溢出问题:

NODE_OPTIONS="--max-old-space-size=4096" cypress run

(数值可根据机器配置调整,比如8192代表8GB)

2. 调整Cypress配置项

修改cypress.config.js(旧版本用cypress.json),禁用可能触发冲突的特性:

module.exports = defineConfig({
  e2e: {
    // 关闭Chrome安全策略,避免资源加载限制
    chromeWebSecurity: false,
    // 禁用实验性会话特性(若开启过)
    experimentalSessionAndOrigin: false,
    // 延长命令超时,给页面足够加载时间
    defaultCommandTimeout: 15000,
    // 配置浏览器启动参数,禁用沙箱和GPU加速
    browserLaunchOptions: {
      electron: {
        args: ['--no-sandbox', '--disable-gpu']
      },
      chrome: {
        args: ['--no-sandbox', '--disable-gpu']
      }
    }
  }
});

3. 优化测试逻辑

避免页面未完全加载时执行断言,优先等待核心元素渲染完成:

// 登录操作
cy.get('#username').type('test-user');
cy.get('#password').type('test-pass');
cy.get('#login-btn').click();

// 等待主页面核心元素出现,而非直接检查URL
cy.get('#main-dashboard').should('be.visible');
// 再验证URL
cy.url().should('include', '/dashboard');

4. 排查页面加载资源差异

在测试中添加日志监控,对比Cypress环境与正常浏览器的资源加载差异:

cy.visit('/dashboard', {
  onBeforeLoad(win) {
    // 监听控制台错误和警告
    cy.stub(win.console, 'error').as('consoleError');
    cy.stub(win.console, 'warn').as('consoleWarn');
  },
  onLoad(win) {
    // 打印捕获到的日志
    cy.get('@consoleError').then(errors => {
      console.log('Page load errors:', errors);
    });
    cy.get('@consoleWarn').then(warnings => {
      console.log('Page load warnings:', warnings);
    });
  }
});

重点关注是否有重复加载的脚本、内存泄漏的代码片段。

5. 调整依赖版本

  • 尝试升级Cypress至11.x或降级至8.x版本,避开10.x的兼容性问题
  • 测试Node.js 18版本(需确认项目依赖兼容)
  • 移除Cypress第三方插件(如自定义报告、拦截器),排查是否为插件冲突导致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:30:50