PublishCucumberReport - 找不到 Cucumber 报告的输出路径

PublishCucumberReport - Can't find output path of cucumber report

插件无法找到文件并在 Azure DevOps 上生成 HTML 报告

Azure Devops 插件 - https://marketplace.visualstudio.com/items?itemName=MaciejMaciejewski.azure-pipelines-cucumber

蔚蓝-pipelines.yml

jobs:
  # Build Electron
  - job: UserAcceptanceTest
    displayName: E2E-Tests
    pool:
      name: ado-win-pool
    timeoutInMinutes: 120
    steps:
      - task: CopyFiles@2
        inputs:
          sourceFolder: $(Build.SourcesDirectory)
          targetFolder: $(Build.ArtifactStagingDirectory)

      - task: PublishPipelineArtifact@1
        displayName: 'Publishing build artifacts'
        inputs:
          targetPath: $(Build.ArtifactStagingDirectory)

      - task: NodeTool@0
        displayName: 'Install Node 12.x'
        inputs:
          versionSpec: 12.x

      - task: PublishCucumberReport@1
        displayName: 'Publish Cucumber Report'
        inputs:
          jsonDir: target/results/cucumber/
          outputPath: target/results/cucumber/

实际:

  Found 0 matching C:/agent/_work/13/s/target/results/cucumber pattern
    ##[warning]Error: Not found outputPath: C:\agent\_work\s\target\results\cucumber
    Finishing: Publish Cucumber Report

预计: 找到黄瓜 JSON 文件。

在上面的 yaml 管道中,您没有 运行 黄瓜测试生成黄瓜 JSON 文件的步骤。

如果 cucumber JSON 文件已经存在于您的存储库中。那么 PublishCucumberReport 任务的错误是因为目录 target/results/cucumber 在你的 repo 中不存在。

然后您需要检查 Cucumber JSON 文件在您的存储库中的位置,并为 PublishCucumberReport 任务指定正确的路径。

如果您的存储库中不存在 Cucumber JSON 文件。您应该将 yaml 管道中的步骤添加到 运行 您的测试。

如果您在 package.json 文件中配置了测试脚本,如下所示(report 文件夹必须存在于存储库中):

您只需 运行 npm test 即可执行测试并在 report 文件夹中生成 json 报告。见下文;

steps:
- task: NodeTool@0
  displayName: 'Install Node 12.x'
  inputs:
    versionSpec: 12.x

- script: |
   npm install
   npm test
  displayName: 'Run tests'
 

- task: PublishCucumberReport@1
  inputs:
    jsonDir: report
    outputPath: report

如果您的 package.json 文件中没有定义测试脚本。您可以在 yaml 管道中 运行 cucumber-js 命令生成 json 文件。见下文:

- script: |
   #npm install cucumber
   npm install 
   ./node_modules/.bin/cucumber-js features -f json:report/cucumber_report.json
  displayName: 'Run tests'

在您的情况下,问题出在为黄瓜报告提供的路径中。 它应该是 json 格式的黄瓜报告文件夹的路径,但不是某些特定的 json.

因此,yaml 中的正确代码段是:

        - task: PublishCucumberReport@1
        displayName: 'Publish Cucumber Report'
        inputs:
        jsonDir: target/results/cucumber/
        outputPath: target/results/cucumber/