创建第一个 Cypress 应用后使用命令行 npx Cypress open 报错的原因分析

简介: 大多数测试工具(如 Selenium)通过在浏览器外部运行并通过网络执行远程命令来运行。Cypress 正好相反。 Cypress 在与 Web 应用程序相同的运行循环(run loop)中执行。Cypress 背后是一个 Node 服务器进程。 Cypress 和 Node 进程彼此不断通信、同步和执行任务。访问这两个部分(也就是对应的前后台操作)使我们能够实时响应 Web 应用程序的事件,同时在浏览器之外执行需要更高权限的任务。

大多数测试工具(如 Selenium)通过在浏览器外部运行并通过网络执行远程命令来运行。Cypress 正好相反。 Cypress 在与 Web 应用程序相同的运行循环(run loop)中执行。


Cypress 背后是一个 Node 服务器进程。 Cypress 和 Node 进程彼此不断通信、同步和执行任务。访问这两个部分(也就是对应的前后台操作)使我们能够实时响应 Web 应用程序的事件,同时在浏览器之外执行需要更高权限的任务。


Cypress 还通过直接在网络层运行,可以动态读取和更改网络流量。这使 Cypress 不仅可以修改进出浏览器的所有内容,还可以更改可能干扰其自动操作浏览器能力的代码。


Cypress 最终控制了从上到下的整个自动化过程,这使其处于能够理解浏览器内外发生的一切的独特位置。


由于 Cypress 安装在测试开发人员的机器上,因此它还可以接入操作系统以执行自动化任务。这使得执行诸如截屏、录制视频、一般文件系统操作和网络操作等任务成为可能。


执行命令行 npx cypress open, 遇到错误消息:


$ npx cypress open
It looks like this is your first time using Cypress: 10.4.0
Cypress failed to start.
This may be due to a missing library or dependency. https://on.cypress.io/required-dependenc:Please refer to the error below for more details.
[0815/165943.734:FATAL:v8_initializer.cc(525)] Error loading V8 startup snapshot file
Platform: win32-x64 (10.0.19044)Cypress Version: 10.4.0


package-lock.json 文件里看出,使用的 Cypress 版本是 10.4.0



我们从 gitcode 能查到 v8_initializer.cc 的源代码:

https://gitcode.net/mirrors/chromium/chromium/-/blob/lkgr-android-internal/gin/v8_initializer.cc


// static
void V8Initializer::LoadV8SnapshotFromFile(
    base::File snapshot_file,
    base::MemoryMappedFile::Region* snapshot_file_region,
    V8SnapshotFileType snapshot_file_type) {
  if (g_mapped_snapshot)
    return;
  if (!snapshot_file.IsValid()) {
    LOG(FATAL) << "Error loading V8 startup snapshot file";
    return;
  }

我看了一下 SAP 电商云 Spartacus UI 的 Cypress package.json 设置,发现用的是 8.5.0 版本:



我自己的 Cypress 工程也切换成这个版本后,问题消失:


相关文章
|
6天前
|
测试技术
如何用命令行执行cypress?
如何用命令行执行cypress?
|
5月前
|
编解码
解决VScode安装Babel转码器报错:无法将“cnpm“项识别为cmdlet\函数、脚本文件或可运行程序的名称的问题
解决VScode安装Babel转码器报错:无法将“cnpm“项识别为cmdlet\函数、脚本文件或可运行程序的名称的问题
|
7月前
|
前端开发 JavaScript 编译器
【前端异常】vscode:无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称,Cannot find module ”webpack“
【前端异常】vscode:无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称,Cannot find module ”webpack“
367 0
Cypress 好用的用法
大家好,我是阿萨。之前学习了cypress的最基本的用法。可是有些同学还是反馈不会写cypress,怎么办? 今天就列举一些常见的cypress的写法。
219 0
|
XML JSON JavaScript
【cypress】6. cypress的默认文件结构介绍
【cypress】6. cypress的默认文件结构介绍
【cypress】6. cypress的默认文件结构介绍
|
JavaScript 前端开发 Ubuntu
【cypress】2. 安装Cypress(windows系统),以及cypress open报错解决。
【cypress】2. 安装Cypress(windows系统),以及cypress open报错解决。
【cypress】2. 安装Cypress(windows系统),以及cypress open报错解决。
|
JavaScript 前端开发 安全
|
测试技术
创建第一个 Cypress 应用后使用命令行 npx Cypress open 报错的原因分析
创建第一个 Cypress 应用后使用命令行 npx Cypress open 报错的原因分析
127 0
创建第一个 Cypress 应用后使用命令行 npx Cypress open 报错的原因分析
|
资源调度 索引
Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解
Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解
341 0
Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解
|
Web App开发 资源调度 测试技术
Cypress系列(44)- 命令行运行 Cypress
Cypress系列(44)- 命令行运行 Cypress
628 0
Cypress系列(44)- 命令行运行 Cypress