1

我在 dockerized 容器内的 Jenkins 上运行我的 cypress 测试,我生成了 cypress mocha 很棒的报告,但我不知道如何在 Jenkins 中显示它。

这是我的cypress.json内容

{
  "integrationFolder": "test/specs",
  "supportFile": "test/support/index.js",
  "video": true,
  "reporter": "node_modules/cypress-multi-reporters",
  "reporterOptions": {
    "reporterEnabled": "mochawesome",
    "mochawesomeReporterOptions": {
      "reportDir": "results/mocha",
      "overwrite": false,
      "html": false,
      "json": true,
      "timestamp": "mmddyyyy_HHMMss",
      "showSkipped": true,
      "charts": true,
      "quite": true,
      "embeddedScreenshots": true
    }
  },
  "screenshotOnRunFailure": true,
  "screenshotsFolder": "results/mochareports/assets/screenshots",
  "videosFolder": "results/mochareports/assets/videos",
  "baseUrl": "http://testurl.com",
  "viewportWidth": 1920,
  "viewportHeight": 1080,
  "requestTimeout": 10000,
  "responseTimeout": 10000,
  "defaultCommandTimeout": 10000,
  "watchForFileChanges": true,
  "chromeWebSecurity": false
}

这是我在本地运行的脚本。

  "clean:reports": "rm -R -f results && mkdir results && mkdir results/mochareports",
    "pretest": "npm run clean:reports",
    "cypress:interactive": "cypress open",
    "scripts:e2e": "cypress run",
    "combine-reports": "mochawesome-merge results/mocha/*.json > results/mochareports/report.json",
    "generate-report": "marge results/mochareports/report.json -f report -o results/mochareports -- inline",
    "posttest": "npm run combine-reports && npm run generate-report",
    "test:e2e": "npm run pretest && npm run scripts:e2e || npm run posttest",

我可以在本地环境中成功查看我生成的报告。这是我的詹金斯文件内容

#!groovy

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                echo 'Checking out the PR'
                checkout scm
            }
        }

        stage('Build') {
            steps {
                echo 'Destroy Old Build'
                sh 'make destroy'
                echo 'Building'
                sh 'make upbuild_d'
            }
        }

        stage('Test') {
            steps {
                echo 'Running Tests'
                sh 'make test-e2e'
            }
        }

        stage('Destroy') {
            steps {
                echo 'Destroy Build'
                sh 'make destroy'
            }
        }
    }
}

make test-e2e实际上在 docker 容器中运行脚本test:e2e,测试实际运行,我可以看到在 Jenkins 上生成报告,但我不知道如何查看它。 在此处输入图像描述

我需要在 Jenkins 内部单独查看它,我也不知道为什么我无法通过Jenkins workspace. 顺便提一句。我将结果文件添加到.gitignore

这是我的本地报告预览 在此处输入图像描述

4

2 回答 2

2

您可以为此使用 Jenkins 的 HTML 发布者插件:

https://plugins.jenkins.io/htmlpublisher/

在您的 Jenkinsfile 中添加一个阶段以发布 HTML 报告

例如

    publishHTML([
        allowMissing: false,
        alwaysLinkToLastBuild: false,
        keepAll: true,
        reportDir: 'cypress/cypress/reports/html',
        reportFiles: 'index.html',
        reportName: 'HTML Report', 
        reportTitles: ''])
于 2022-02-11T12:09:02.717 回答
1

我使用 HTML Publisher 插件作为上面提到的解决方案,但是我的问题是我的结果文件在 docker 容器中而不是在 Jenkins 工作区中,我通过将文件夹从 docker 容器复制到 Jenkins 工作区来解决了这个问题。

docker cp container_name:/app/results ./results

于 2022-02-14T14:14:23.447 回答