首页 > 解决方案 > 在 Azure DevOps 管道生成结果页面中将开玩笑警告显示为警告

问题描述

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

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

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

标签: azure-devopsjestjsazure-devops-pipelinesjest-junit

解决方案


因此,我最终使用以下 PowerShell 任务将 @PerryQian-MSFT 发布的内容附加到我的 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 帖子中的解决方案,因为我不希望测试在遇到警告时失败,管道应该仍然成功,只是有问题。为了解决这个问题,我将azure-pipelines-logging作为依赖项。log(command("task", "logissue", { type: "warning" })(...args));然后,每当调用警告时,我就可以使用它来登录管道。


推荐阅读