# @bazel/cypress 中文文档

规范地址：https://npmcn.com/package/%40bazel/cypress/

版本：5\.8\.1
npm 元数据更新时间：2023-02-16T23:56:47.829Z
中文译文更新时间：2026-11-07T18:44:38.550Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bazel/cypress
原文对照：https://npmcn.com/package/%40bazel/cypress/?lang=original
项目主页：https://github.com/bazelbuild/rules_nodejs#readme
源码仓库：https://github.com/bazelbuild/rules_nodejs

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：40.8 kB，10 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- peer 依赖：cypress \>=4\.7\.0
- 首次发布：2020-07-06T23:12:11.063Z
- 最新版本发布：2023-02-16T23:56:47.699Z
- 近 30 天下载量：14095（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：71（近 12 个月 0 个）

## 中文简介

在 Bazel 下运行 Cypress e2e 测试框架

## 安装

```sh
npm install @bazel/cypress
```

也可以使用：`pnpm add @bazel/cypress`、`yarn add @bazel/cypress`、`bun add @bazel/cypress`

## README

# Bazel 的 Cypress规则

Cypress规则在Cypress e2e测试框架下与Bazel运行测试.

## 安装

添加 `@bazel/cypress` 财务报告和审定财务报表 `cypress` npm 包给您的 `devDependencies` 内 `package.json`。 。 。 .

```
npm install --save-dev @bazel/cypress cypress
```

或使用线条

```
yarn add -D @bazel/cypress cypress
```

然后,加载和引用 `cypress_repositories` 在您内部 `WORKSPACE` 文档.

```python
load("@build_bazel_rules_nodejs//toolchains/cypress:cypress_repositories.bzl", "cypress_repositories")

# The name you pass here names the external repository you can load cypress_web_test from
cypress_repositories(name = "cypress", version = "MATCH_VERSION_IN_PACKAGE_JSON")
```

## Cypress web 测试的示例

这个例子假设您为节点的外部寄存器命名为 `npm` 和被电击为 `cypress`

```python
load("@npm//@bazel/concatjs:index.bzl", "ts_library")
load("@npm//@bazel/cypress:index.bzl", "cypress_web_test")

# You must create a cypress plugin in order to boot a server to serve your application. It can be written as a javascript file or in typescript using ts_library or ts_project.
ts_library(
    name = "plugin_file",
    testonly = True,
    srcs = ["plugin.ts"],
    tsconfig = ":tsconfig.json",
    deps = [
        "@npm//@types/node",
        "@npm//express",
    ],
)

# You can write your cypress tests a javascript files or in typescript using ts_library or ts_project.
ts_library(
    name = "hello_spec",
    testonly = True,
    srcs = ["hello.spec.ts"],
    tsconfig = ":tsconfig.json",
    deps = [
        "@npm//cypress",
    ],
)

cypress_web_test(
    # The name of your test target
    name = "test",
    srcs = [
        # Load javascript test files directly as sources
        "world.spec.js",
        # Load ts_library tests as a target to srcs
        ":hello_spec",
    ],
    # A cypress config file is required
    config_file = "cypress.json",
    # Any runtime dependencies you need to boot your server or run your tests
    data = [],
    # Your cypress plugin used to configure cypress and boot your server
    plugin_file = ":plugin_file",
)
```

## cypress tool链

**用户**

cypress\_toolchain([name](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_toolchain-name), [cypress\_bin](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_toolchain-cypress_bin), [cypress\_bin\_path](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_toolchain-cypress_bin_path), [cypress\_files](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_toolchain-cypress_files))

定义cypress工具链.

使用量见 [https://docs.bazel.building/versions/main/toolchains.html#定义-工具链](https://docs.bazel.build/versions/main/toolchains.html#defining-toolchains)。 。 。 .

**捐款**

#### 名称

(单位:千美元)_[名称](https://bazel.build/docs/build-ref.html#name),强制_:这个目标的独有名称.

#### cypress bin (韩语)

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_:一个为目标平台所下载的可执行cypress可执行二进制.

默认为 `None`

#### cypress bin 路径

(单位:千美元)_字符串_:用于目标平台的现有cypress可执行文件的路径.

默认为 `""`

#### cypress 文件

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_:为目标平台下载了所有cypress 二进制文件的hermetic上下集. 设定cypress bin时必须设置 .

默认为 `None`

## cypress web 测试

**用户**

cypress\_web\_test([name](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-name), [chdir](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-chdir), [config\_file](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-config_file), [configuration\_env\_vars](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-configuration_env_vars), [cypress\_npm\_package](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-cypress_npm_package), [data](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-data),
                 [default\_env\_vars](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-default_env_vars), [entry\_point](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-entry_point), [env](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-env), [expected\_exit\_code](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-expected_exit_code), [link\_workspace\_root](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-link_workspace_root),
                 [plugin\_file](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-plugin_file), [srcs](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-srcs), [templated\_args](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-templated_args), [toolchain](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_web_test-toolchain))

页:1 `nodejs_binary`,但此选项可用于 `bazel test` 还有. 当二进制返回零退出代码时,测试通过;否则失败.

`nodejs_test` 是一种以运行为基础写作新型测试的方便方式 你自己的测试跑者。 例如 `ts-api-guardian` 库有一个方法 维护 TypeScript 程序的公开 API,并使用 `nodejs_test` 这里: [https://github.com/angular/angular/blob/master/tools/ts-api-guardian/index.bzl 互联网档案馆的存檔,存档日期2014-12-22](https://github.com/angular/angular/blob/master/tools/ts-api-guardian/index.bzl)

如果您只想使用 npm 的测试跑取器进行标准测试, 请使用生成的 npm install/yarn install创建的测试目标,例如 `mocha_test`。 。 。 . 一些测试跑者如卡玛和茉莉有带有附加特征的自定义规则,例如. `jasmine_node_test`。 。 。 .

默认情况下, Bazel 在工作空间根上运行带有工作目录的测试 . 使用 `chdir` 属性以在程序开始前更改工作目录.

为了调试一个节点.js测试,我们建议在"配置"中一起保存一组旗帜. 把这个放进你的 `tools/bazel.rc` 所以它与你的团队分享:

```python
# Enable debugging tests with --config=debug
test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results
```

现在你可以添加 `--config=debug` 对任意 `bazel test` 命令行. 运行时间会在执行程序前暂停,允许您连接一个 远程调试器 .

您也可以更改发送到节点的默认参数 。 这可以通过一面旗帜来实现. 默认是 -- preserve- symlinks 时的任意 可以通过。 旗帜为-@rules nodejs//nodejs:default args=" 如:bazel test-@rules nodejs///nodejs:default args="- preserve-symlinks-no-warnings"///:goal. 这将通过 -- preserve- symlinks 和 -- no-warnings 旗帜到节点。 可用节点旗可在此找到 : [https://nodejs.org/api/cli.html (中文(简体) )](https://nodejs.org/api/cli.html)。 。 。 .

**捐款**

#### 名称

(单位:千美元)_[名称](https://bazel.build/docs/build-ref.html#name),强制_:这个目标的独有名称.

#### 颜色

(单位:千美元)_字符串_: 相对于工作空间运行二进制或测试的工作目录. 默认情况下,Bazel总是在工作空间根中运行. 由于实施的细节,这个论点必须放在这个软件包目录下.

要在包含 `nodejs_binary` 编号 : `nodejs_test`,使用时

```
chdir = package_name()
```

(或者如果你在一个宏,使用) `native.package_name()`(中文(简体) )

警告: 这将影响其他路径, 无论是作为参数还是配置文件, 是工作空间相对的. 你也许需要 `../../` 区块,使这些路径与新的工作目录重新相对应.

默认为 `""`

#### 配置文件( f)

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels),强制_:cypress.json配置文件. 见 [https://docs.cypress.io/指向/参考/confignation](https://docs.cypress.io/guides/references/configuration)

#### 配置 env vars

(单位:千美元)_字符串列表_:将这些配置环境变量传递到产生的二进制. 选择配置环境变量的子集(取自 `ctx.var`))),该词也 包含通过 -- define 旗帜指定的任何内容. 说明,这可能导致本条规则产生的不同产出.

默认为 `[]`

#### cypress npm 包装

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: Cypress npm软件包. 如果您安装了 cypress 作为对等依赖, 则无需设置 .

默认为 `//cypress:cypress`

#### 数据

(单位:千美元)_[标签列表](https://bazel.build/docs/build-ref.html#labels)_: 执行过程中可能加载的运行时依赖性.

默认为 `[]`

#### 默认( env vars)

(单位:千美元)_字符串列表_: 添加到其中的默认环境变量 `configuration_env_vars`。 。 。 .

这是与默认的 `configuration_env_vars` 这样用户就可以设置 `configuration_env_vars` 而不损失大多数情况下应当设置的默认值.

默认环境变量集为:

-   `VERBOSE_LOGS`: 使用一些规则工具打开日志中的调试输出( t)
-   `NODE_DEBUG`: 被节点.js本身用于打印更多日志
-   `RUNFILES_LIB_DEBUG`: 打印 Bazel runfile.bash 帮助器的诊断信息

默认为 `["VERBOSE_LOGS", "NODE_DEBUG", "RUNFILES_LIB_DEBUG"]`

#### 输入点( c)

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 输入点 JS文件 哪个拖住 Cli

默认为 `@npm//@bazel/cypress/internal:run-cypress.js`

#### 环境

(单位:千美元)_[词典:字符串 - > 字符串](https://bazel.build/docs/skylark/lib/dict.html)_: 指定目标执行时要设置的其他环境变量,但须视位置而定 并进行可变扩展.

默认为 `{}`

#### 需要退出 代码

(单位:千美元)_整数_:测试的预期出站代码. 默认为 0.

默认为 `0`

#### 链接 工作空间 root

(单位:千美元)_布尔_: 将工作空间根链接到 bin dir 支持绝对要求, 如“ my wksp/ path/ to/ file ” . 如果需要源文件,则可以复制到bin dir并复制到 bin.

默认为 `False`

#### 插件 文件

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_: 您的cypress插件文件 。 见 [https://docs.cypress.io/指向/工具/插件-指向](https://docs.cypress.io/guides/tooling/plugins-guide)

默认为 `@npm//@bazel/cypress/internal:plugins/base.js`

#### 弧线

(单位:千美元)_[标签列表](https://bazel.build/docs/build-ref.html#labels)_:测试文件列表. 见 [https://docs.cypress.io/guides/core-concepts/writing-和-orgizing-tests# Test-files 页面存档备份,存于互联网档案馆](https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests#Test-files)

默认为 `[]`

#### 模板( arg)

(单位:千美元)_字符串列表_: 被传递给程序每次执行的参数. 要通过一个节点启动选项, 请预置它 `--node_options=`,比如说. `--node_options=--preserve-symlinks`。 。 。 .

以“ make variable” 为替代 。 见 [https://docs.bazel.building/versions/main/be/make-valtables.html 页面存档备份,存于互联网档案馆](https://docs.bazel.build/versions/main/be/make-variables.html)。 。 。 .

1.  受预定义源/输出路径变量替代的约束.

预定义变量 `execpath`, (中文(简体) ), `execpaths`, (中文(简体) ), `rootpath`, (中文(简体) ), `rootpaths`, (中文(简体) ), `location`,以及 `locations` 带 标签参数(例如). `$(execpath //foo:bar)`)并替换由该标签所表示的文件路径.

见 [https://docs.bazel.building/versions/main/be/make-valtables.html#被预先定义 label vatables (中文(简体) )](https://docs.bazel.build/versions/main/be/make-variables.html#predefined_label_variables) 需要更多信息.

NB: 此 $( location) 子stitution 返回显示的文件路径, 路径不同于 {binary & & { test} (原始内容存档于2013-10-12). args and genrule bazel substituties. 这一点将在未来的主要发行中固定下来. 见文件字符串 `expand_location_into_runfiles` 宏在 `internal/common/expand_into_runfiles.bzl` 需要更多信息.

建议的办法是现在使用 `$(rootpath)` 用于您先前使用的$(位置) .

为了从一个 `$(rootpath)` 到绝对路径 `$$(rlocation $(location))` 返回时,您可以使用 `$$(rlocation $(rootpath))` 如果你们在 `templated_args` 页:1 `nodejs_binary` 或者说 `nodejs_test`数字 :

BUILD. 贝泽尔:

```python
nodejs_test(
    name = "my_test",
    data = [":bootstrap.js"],
    templated_args = ["--node_options=--require=$$(rlocation $(rootpath :bootstrap.js))"],
)
```

或者如果您在 .js 脚本的背景中, 您可以将$( rootpath) 传递给脚本作为参数 并使用 javascript runfile 帮助解析绝对路径 :

BUILD. 贝泽尔:

```python
nodejs_test(
    name = "my_test",
    data = [":some_file"],
    entry_point = ":my_test.js",
    templated_args = ["$(rootpath :some_file)"],
)
```

我的测试.js

```python
const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']);
const args = process.argv.slice(2);
const some_file = runfiles.resolveWorkspaceRelative(args[0]);
```

NB: Bazel 如果看到单美元符号 $( 位置路径) 在 `templated_args` 因为它会尝试 扩展 `$(rlocation)` 因为我们现在扩展预定义的“ make” 变量, 如 `$(COMPILATION_MODE)`, (中文(简体) ), `$(BINDIR)` 打开 `$(TARGET_CPU)` 使用 `ctx.expand_make_variables`。见 [https://docs.bazel.building/versions/main/be/make-valtables.html 页面存档备份,存于互联网档案馆](https://docs.bazel.build/versions/main/be/make-variables.html)。 。 。 .

防止扩大 `$(rlocation)` 写成 `$$(rlocation)`巴泽尔明白 `$$` 将会是 字符串文字 `$` 和扩张的结果 `$(rlocation)` 转而作为标注通过 正在扩大. `$(rlocation)` 然后通过bash节点发射台脚本进行评估,并调用 页:1 `rlocation` 函数在 runfile.bash 帮助中。 例如,模板参数 `$$(rlocation $(rootpath //:some_file))` 由 Bazel 扩展为 `$(rlocation ./some_file)` 哪个 然后在bash中转换为绝对路径 `//:some_file` 在 runfile.bash 帮助器的运行文件中 之前被传递作为程序的一个论据.

NB: nodejs binary 和 nodejs test 将保留遗留行为 `$(rlocation)` 这样用户就不会 需要更新到 `$$(rlocation)`。这在未来可能会改变.

2.  受预定义变量和自定义变量替换的约束.

扩大 $( COMPIATION MODE) 和 $( TRGET CPU) 等预定义的“ make” 变量. 见 [https://docs.bazel.building/versions/main/be/make-valtables.html#预定义-可变量](https://docs.bazel.build/versions/main/be/make-variables.html#predefined_variables)。 。 。 .

自定义变量也得到扩展,包括由-define=SOME VAR=SOME VALUE通过Bazel CLI设置的变量. 见 [https://docs.bazel.building/versions/main/be/make-valtables.html#风俗 可变](https://docs.bazel.build/versions/main/be/make-variables.html#custom_variables)。 。 。 .

在此语境中不支持预先定义的等分变量 .

默认为 `[]`

#### 工具链

(单位:千美元)_[标签](https://bazel.build/docs/build-ref.html#labels)_(中文(简体) )

默认为 `None`

## cypress 仓库

**用户**

cypress\_repositories([name](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-name), [version](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-version), [linux\_urls](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-linux_urls), [linux\_sha256](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-linux_sha256), [darwin\_urls](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-darwin_urls), [darwin\_sha256](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-darwin_sha256),
                     [darwin\_arm64\_urls](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-darwin_arm64_urls), [darwin\_arm64\_sha256](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-darwin_arm64_sha256), [windows\_urls](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-windows_urls), [windows\_sha256](https://npmcn.com/package/%40bazel/cypress/#readme-cypress_repositories-windows_sha256))

```
Repository rule used to install cypress binary.
```

**摄影师**

#### 名称

Cypress 二进制居住的外部工作空间名称

#### 版本

要使用的 Cypress 二进制版本 。 应该符合套件. json

#### linux urls

(可选) URL,其中可以下载linux的 linux 二进制. 如果省略,则, [https://cdn.cypress.io/desktop 页面存档备份,存于互联网档案馆](https://cdn.cypress.io/desktop) 将被使用.

默认为 `[]`

#### linux sha256 (韩语)

(可选) Linux cypress 二进制的 SHA-256

默认为 `""`

#### 汉字

(可选) URL,其中可下载达尔文的cypress 二进制. 如果省略,则, [https://cdn.cypress.io/desktop 页面存档备份,存于互联网档案馆](https://cdn.cypress.io/desktop) 将被使用.

默认为 `[]`

#### 达文-沙256

(可选) Darwin cypress 二进制的 SHA-256

默认为 `""`

#### 达尔文 arm64 urls

(可选) URL,其中可下载Darwin arm64的cypress 二进制. 如果省略,则, [https://cdn.cypress.io/desktop 页面存档备份,存于互联网档案馆](https://cdn.cypress.io/desktop) 将会被使用(注:截至此写作(11/2021),Cypress没有本地的arm64建筑,这个URL将链接到x86 64建筑在Rosetta下运行).

默认为 `[]`

#### 达尔文 arm64 sha256

(可选) Darwin arm64 cypress 二进制的 SHA-256

默认为 `""`

#### 窗口urls

(可选) URL,其中可以下载linux的窗口distros的cypress 二进制. 如果省略,则, [https://cdn.cypress.io/desktop 页面存档备份,存于互联网档案馆](https://cdn.cypress.io/desktop) 将被使用.

默认为 `[]`

#### 窗口 sha256

(可选) SHA-256 窗口cypress 二进制

默认为 `""`

## 常见问题

### @bazel/cypress 是什么？

在 Bazel 下运行 Cypress e2e 测试框架

### 如何安装 @bazel/cypress？

在项目目录运行 npm install @bazel/cypress，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：cypress（\>=4\.7\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @bazel/cypress 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/bazel\_\_cypress 是否存在。

### @bazel/cypress 可以商用吗？

@bazel/cypress 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @bazel/cypress 的下载量有多少？

根据 npm 官方下载统计，@bazel/cypress 在 2026/10/08 – 2026/11/06 这 30 天内被下载 14,095 次，日均约 470 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @bazel/cypress 还在维护吗？

最新版本 5\.8\.1 发布于 2023/02/17（3 年前）；至今共发布 71 个版本，其中过去 12 个月发布了 0 个；首次发布于 2020/07/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

