DevTools 节点测试

除了 mochitests 和 xpcshell 测试之外,DevTools 中的一些面板还使用节点测试库来运行单元测试。例如,几个面板使用 Jest 来运行 React 组件单元测试。

在 Try 上查找节点测试

DevTools 节点测试任务,node(devtools),在 Linux 64 opt 平台上运行。它是一个 1 级作业,这意味着任何失败都会导致回退。

在 Try 上运行测试

要在 try 上运行 DevTools 节点测试,可以使用 ./mach try fuzzy 并查找名为 source-test-node-devtools-tests 的作业。

在使用“devtools”预设时,它们也会运行:./mach try --preset devtools

节点测试 try 作业定义

这些 try 作业的定义可以在 taskcluster/kinds/source-test/node.yml 中找到。

该定义还包含将触发节点测试作业的文件列表。目前,当修改 devtools/clientdevtools/shared 下的任何文件时,devtools 测试都会运行。

你需要安装 yarn 才能运行 DevTools 测试。请参阅 https://yarn.npmjs.net.cn/getting-started

要运行 DevTools 测试,最简单的方法是依赖于与在 try 上运行测试时使用的相同脚本。

> node devtools/client/bin/devtools-node-test-runner.js --suite={suitename}

在撰写本文时,此脚本支持的套件为

  • aboutdebugging

  • accessibility

  • application

  • compatibility

  • debugger

  • framework

  • netmonitor

  • performance

  • shared_components

  • webconsole

(您可以在 devtools/client/bin/devtools-node-test-runner.js 中查看完整列表和相关配置)

或者,您也可以找到与给定套件对应的 package.json,并运行 yarn && yarn test

更新快照

一些节点测试是快照测试,这意味着它们将给定组件的输出与之前的文本快照进行比较。如果您正在合法地修改组件,它们可能会中断,这意味着需要更新快照。

快照失败将显示如下

› 1 snapshot failed from 1 test suite

它还应该提到您可以运行以更新快照的命令

Inspect your code changes or run `yarn run test-ci -u` to update them.

例如,如果您需要更新特定面板中的快照,首先找到与该面板的节点测试文件夹对应的 package.json。理论上它应该位于 devtools/client/{panelname}/test/node/ 下,但根据每个面板的不同,它可能略有不同。然后在此文件夹中运行 yarn run test-ci -u 并将快照更改添加到您的提交中。

TypeScript

“performance”套件执行 TypeScript 检查。性能面板中 TypeScript 的用法在 devtools/client/performance-new/typescript.md 中有说明 (在 GitHub 上查看渲染版本)。

devtools-bundle

devtools-bundle 作业是 2 级作业,它检查 DevTools 包是否已过时。DevTools 包是从树中其他依赖项构建的生成的 JavaScript 文件,以便在特定环境中运行(通常是 worker)。

DevTools 使用的所有包都是由 devtools/client/debugger/bin/bundle.js 生成的。devtools-bundle 作业只是运行此脚本,如果任何版本化的文件更新则失败。

为了修复故障,您应该运行脚本

> cd devtools/client/debugger/
> yarn && node bin/bundle.js

并提交更改,或者在更新包依赖项的提交中,或者在单独的提交中,以保持事物的分离。