在 Azure DevOps 管道构建结果页面中将笑话警告显示为警告

Display jest warning as a warning in the Azure DevOps pipeline build results page

我们有一个 Azure DevOps 管道,它使用自托管 Windows 代理和 Azure DevOps 服务器 2019。管道 运行 是我们的前端测试。为此,我们使用以下命令行来 运行 测试: npm run jest -- --ci --reporters=default --reporters=jest-junit。然后我们使用publish test results任务来发布结果。

一切正常。但是,我们最近注意到测试中的 运行time 警告没有在任何地方显示。通过像这样添加 vso 格式化程序,我们在构建结果页面中显示了我们的 linter 警告:npm run nx run-many -- --target="lint" --all --skip-nx-cache=true --parallel --format=vso。但是,jest 似乎没有任何我们可以使用的格式参数。

是否可以将玩笑测试中显示的警告记录在构建的结果页面中?感谢您的帮助,如果我可以提供更多信息,请告诉我。

所以我最终使用以下 PowerShell 任务将 @PerryQian-MSFT posted 的版本附加到我的 jest-setup.js 文件中。

- task: PowerShell@2
  displayName: Make test log warnings
  inputs:
    targetType: 'inline'
    script: |
      Add-Content -path config/jest-setup.js -value @"
        import { command, log } from "azure-pipelines-logging";
        const { error, warn } = console;

        global.console.error = (...args) => {
          error(...args);
          log(command("task", "logissue", { type: "error" })(...args));
        };
        global.console.warn = (...args) => {
          warn(...args);
          log(command("task", "logissue", { type: "warning" })(...args));
        };
      "@

我不得不更改 GitHub post 的解决方案,因为我不希望测试在遇到警告时失败,管道应该仍然成功,只是有问题。为了解决这个问题,我将 azure-pipelines-logging 作为依赖项包含在内。然后,每当调用警告时,我就可以使用 log(command("task", "logissue", { type: "warning" })(...args)); 登录管道。