共计 1239 个字符,预计需要花费 4 分钟才能阅读完成。
大多数测试工具(如 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/require… 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/c…
// 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 工程也切换成这个版本后,问题隐没: