@deploysentinel/cypress-debugger

中文文档
0.8.9发布于 2023/09/12UNLICENSEDTypeScript近 30 天下载 2651

启用 Cypress 从远程环境( ex. CI) 中运行的查看/调试 Cypress , 包含您习惯本地拥有的调试信息 .

中文使用文档
文档目录19 节
  1. 安装
  2. 使用量
  3. 添加支持文件
  4. 添加插件
  5. 添加 API 密钥
  6. 电子配置
  7. 正在本地验证所有工作
  8. 查看测试结果
  9. J股报告整合
  10. 抓取的数据
  11. 高级配置
  12. 网络请求过滤
  13. 启用特定文件的抓取
  14. Git 提交元数据
  15. 发送自定义事件到部署Sentinel [BETA]
  16. 网络固定器 发电机/拦截器 [BETA]
  17. 记录模式
  18. 截取模式
  19. 更改日志

部署 Sentinel Cypress 调试器

启用从远程环境( ex. CI) 运行的 Cypress 查看/调试 本地调试信息 .

浏览器兼容性说明: 控制台日志和网络捕获尚未完成 兼容 Microsoft Edge 或 Firefox.

安装

在您的 Cypress 项目中安装 Cypress 插件 .

npm install -D @deploysentinel/cypress-debugger

使用量

添加支持文件

在你的Cypress项目 支助 页:1. cypress/support/index.js增加:

// ❗ Must be declared at the top of the file ❗
import "@deploysentinel/cypress-debugger/support";

...
import "./commands";

添加插件

在你的Cypress项目 插件 页:1. cypress/plugins/index.js增加:

module.exports = (on, config) => {
  // ❗ Must be declared at the top of the function ❗
  [on, config] = require('@deploysentinel/cypress-debugger/plugin')(on, config);

  // Use 'on' and 'config' returned from the plugin
  // ...
};

注:插件返回补丁版本 on 财务报告和审定财务报表 config 改为 与其他插件和配置消除冲突。 。 。 .

添加 API 密钥

最后,将您的 API 密钥添加到一个 deploysentinel_key Cypress 环境变量。 。 。 . 您可以按下您的 API 键 登录编号 :报名 部署森蒂内尔并访问您的简介页面: https://depmousesentinel.com/ profile (中文(简体) )。 。 。 .

之后,您可以通过几种不同的方式指定密钥 :

备选案文1. Cypress 配置文件

在你身边 cypress.json 文件添加:

{
  ...
  "env": {
    ...
    "deploysentinel_key": "YOUR_API_KEY"
  }
}

备选案文2. OS 环境变量

在您环境中导出 OS 环境变量

CYPRESS_DEPLOYSENTINEL_KEY=YOUR_API_KEY

备选案文3. Cypress CLI 旗帜

cypress run --env deploysentinel_key=YOUR_API_KEY

备选案文4. 程序通过插件文件

只有在需要程序控制或自定义 API 密钥从 .

在你的Cypress项目 插件 页:1. cypress/plugins/index.js增加:

module.exports = (on, config) => {
  // Add this to specify the key programmatically, before calling the plugin
  config.env.DEPLOYSENTINEL_KEY =
    process.env.YOUR_CUSTOM_ENV_FOR_API_KEY || 'YOUR_API_KEY';

  // Import plugin as usual, after the key in the env is set above
  require('@deploysentinel/cypress-debugger/plugin')(on, config);

  // ❗ Important: The config needs to be returned in the end
  return config;
};

电子配置

如果你的测试套房在Electron运行, 你需要通过额外的 旗到 Cypress 打开一个远程调试端口供插件监听 网络和控制台日志.

指定远程调试端口 ELECTRON_EXTRA_LAUNCH_ARGS 环境变量。 端口号码可以是任何可用的有效端口号码 那个机器.

ELECTRON_EXTRA_LAUNCH_ARGS="--remote-debugging-port=40500" cypress run ...

如果你的测试套房只在Chrome/Chrome ex运行的话. cypress run --browser chrome,那么这一步骤就没有必要。 联网和 目前不支持为Microsoft Edge和Firefox采集控制台日志.

正在本地验证所有工作

默认情况下,插件只在非交互模式(ex. cypress run),并且只会上传失败时的抓取. 验证插件 正在本地工作, 您可以强制它总是被启用和上传 通过启用下列环境变量来获取:

CYPRESS_DEPLOYSENTINEL_UPLOAD_ON_PASSES=true cypress run # or open

如果无法设置OS环境变量, 也可以设置 通过类似如何配置 API 密钥的 CLI 旗或配置文件( 见 以上"添加API键"部分.

查看测试结果

默认情况下, 测试失败时, 控制台日志中将会有运行的 URL 到运行失败日志。 可以在您的 CI 日志中访问 .

示例日志 :

  Running:  pages.js                                            (3 of 3)


  Pages
    ✓ generates complex slug with md extension (647ms)
    1) generates a slug with an index file
     DeploySentinel Debug URL: https://deploysentinel.com/ci/runs/712345677654321abcd00000
    ✓ generates a slug with a slash (672ms)

否则,运行可以从Sentinel Dashboard at https://depmoutsentinel.com/ci/dashboard 页面存档备份,存于互联网档案馆。 。 。 .

注意: 默认情况下, 当测试通过时, 插件将不会上传任何数据 如果测试以交互模式运行。 参见"校验一切在当地工作" 详情见上文.

J股报告整合

如果Cypress是带着 J股记者, (中文(简体) ), 插件将自动将“部署Sentinel URL”附加到 整个测试套件运行后测试失败的错误细节, 因此您可以 从您的 JUniversity 报告输出中轻松获取测试抓取 .

抓取的数据

启用时, 将自动抓取 Sentinel Cypress 调试器 cypress在测试中采取的行动,以及 DOM 捕获、控制台日志和 网络请求.

高级配置

网络请求过滤

默认情况下,调试器会捕获所有网络请求. 您可以指定一个 beforeNetworkSend 在过滤敏感网络请求的插件文件中 返回时 null 或者说 undefined。 。 。 .

require('@deploysentinel/cypress-debugger/plugin')(on, config, {
  beforeNetworkSend: event => {
    if (event.request.url.includes('wikipedia.org')) {
      return null;
    } else if ('ds-key' in event.request.headers) {
      return null;
    } else if (event.response?.statusCode === 400) {
      return null;
    }
    return event; // Don't filter out event
  },
});

注意: 更新/修改函数内的网络事件对象不会 修改实际记录的网络事件内容,我们可能允许在 未来通过这个API.

事件对象类型 :

{
  request: {
    url: string;
    method: string;
    headers: { [key: string]: string };
  };
  // optional
  response?: {
    statusCode: number;
    statusMessage: string;
    headers: { [key: string]: string };
    bodySize: number;
    body: string;
  };
}

信头会小写。 ưμ㼯A X-My-Header 将会是 可通过 event.headers["x-my-header"]。 。 。 .

启用特定文件的抓取

要抓取特定的测试, 您可以在 CYPRESS_DEPLOYSENTINEL_SPEC 环境变量,类似于 --spec Cypress CLI旗 (英语).

示例

CYPRESS_DEPLOYSENTINEL_SPEC="cypress/tests/ui/**, cypress/integration/**"

Git 提交元数据

默认情况下,调试器会自动发送元数据以显示 在仪表板UI。 如果我们不能自动调出信息, 您可以设置以下环境变量来手动指定承诺 资料:

branch: COMMIT_INFO_BRANCH
message: COMMIT_INFO_MESSAGE
email: COMMIT_INFO_EMAIL
author: COMMIT_INFO_AUTHOR
sha: COMMIT_INFO_SHA
timestamp: COMMIT_INFO_TIMESTAMP
remote: COMMIT_INFO_REMOTE

发送自定义事件到部署Sentinel [BETA]

用户可将自定义事件发送到 Sentinel 以附加额外的调试 测试中的信息。 (例如用 DB 或 app 调试错误和片段) 州立垃圾场) 要使用它,只需将自定义数据传递给命令 cy.dsAddEvent。 。 。 .

Cypress.on('fail', e => {
  // As an example, fetch data from Firebase
  cy.callFirestore('get', 'myData').then(r => {
    cy.dsAddEvent(r);
  });
  throw e;
});

说明:对于每个有效载荷,应当能够用 JSON.stringify (无圆形依赖关系) 大小必须小于 4 个 MB。 。 。 .

键入符配置

如果你用Typescript与 Cypress, 你需要添加 @deploysentinel/cypress-debugger 页:1 cypress/tsconfig.json 文件 :

{
  "compilerOptions": {
    "types": ["cypress", "@deploysentinel/cypress-debugger"]
  }
}

网络固定器 发电机/拦截器 [BETA]

启动后, 自动丢弃生成器 网络在测试完成后向本地磁盘请求数据.

另一方面,部署Sentinel Cypress网络拦截器,在启用时, 将使用固定装置在测试运行时自动拦截网络请求 由Fixtures发电机生成.

记录模式

一旦启用了记录模式,调试器将把网络文物倾倒到 /cypress/fixtures 带有文件名前缀 ds-network-mock 以 JSON 为格式

要启用记录模式, 设置 CYPRESS_DEPLOYSENTINEL_NETWORK_MOCK_MODE 环境变量改为 record

CYPRESS_DEPLOYSENTINEL_NETWORK_MOCK_MODE=record

(备选) 您可以指定 networkMock 在要过滤未使用的插件文件中 网络文物

require('@deploysentinel/cypress-debugger/plugin')(on, config, {
  networkMock: {
    mode: 'record', // optional
    methods: ['GET', 'POST'], // default to ["GET", "PATCH", "POST", "PUT", "HEAD", "DELETE"]
    includeUrls: ['https://example.com/**', 'https://api.example.com/users/**'], // default to ['**']
    excludeUrls: ['https://example.com/**'], // inverse of 'includeUrls', default to []
  },
});

截取模式

启用截取模式时, 调试器会先前读取定着值 从记录模式生成( in) /cypress/fixtures)和截取 使用 cy.intercept

要启用截取模式, 设置 CYPRESS_DEPLOYSENTINEL_NETWORK_MOCK_MODE 环境变量改为 intercept

CYPRESS_DEPLOYSENTINEL_NETWORK_MOCK_MODE=intercept

注意: 截取模式将创建一个 fixtures/.ds-network-cache 文件夹 暂时存储网络模拟。 此文件夹应该被指定为源 真理来源于 fixtures/ds-network-mock-*

更改日志

查看我们的 我们的网站上直接有更改日志。 。 。 .

版本与发布记录

@deploysentinel/cypress-debugger 共发布 91 个版本,首次发布于 2022/04/27;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.8.9latest2023/09/123 年前
0.8.82023/07/273 年前
0.8.72023/07/273 年前
0.8.7-next.0next2023/07/193 年前
0.8.62023/07/013 年前
0.8.52023/06/263 年前

关于 @deploysentinel/cypress-debugger 的常见问题

@deploysentinel/cypress-debugger 是什么?

启用 Cypress 从远程环境( ex. CI) 中运行的查看/调试 Cypress , 包含您习惯本地拥有的调试信息 .

如何安装 @deploysentinel/cypress-debugger?

在项目目录运行 npm install @deploysentinel/cypress-debugger,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 ds,可以用 npx ds 直接运行。

@deploysentinel/cypress-debugger 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@deploysentinel/cypress-debugger 可以商用吗?

@deploysentinel/cypress-debugger 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@deploysentinel/cypress-debugger 的下载量有多少?

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

@deploysentinel/cypress-debugger 还在维护吗?

最新版本 0.8.9 发布于 2023/09/12(3 年前);至今共发布 91 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/04/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。