首页 > 解决方案 > Jenkins - Jasmine 记者不会为量角器 E2E 测试生成报告

问题描述

我想在 jenkins 上进行测试并通过 Jasmine 记者生成报告。控制台显示成功,但没有生成报告。

我试图手动创建一个文件夹,但没有什么新东西。我尝试使用我的本地 protractor.conf.js 配置,它有效,但它没有给出报告,这就是我正在寻找如何生成它们的原因。

包.json

  "name": "chapter-11-code",
  "version": "1.0.0",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/wasshj/testingangularendtoend.git"
  },
  "scripts": {
    "e2e": "protractor",
    "lint": "tslint",
    "webdriver-circle": "webdriver-manager update --standalone false --gecko false --versions.chrome=2.40",
    "webdriver-update": "webdriver-manager update --gecko false",
    "tsc": "tsc"
  },
  "author": "Craig Nishina <craig.nishina@gmail.com>",
  "license": "MIT",
  "devDependencies": {
    "@types/jasmine": "2.5.41",
    "@types/jasminewd2": "2.0.2",
    "@types/selenium-webdriver": "3.0.4",
    "jasmine-core": "2.4.1",
    "jasmine-reporters": "2.2.1",
    "jasmine-spec-reporter": "4.2.1",
    "protractor": "5.1.1",
    "selenium-webdriver": "3.0.1",
    "ts-node": "1.3.0",
    "typescript": "2.2.2"
  }
} 

量角器.conf.js



const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    'e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: (process.env.IS_CIRCLE ? ['--headless'] : [])
    }
  },
  directConnect: !process.env.IS_JENKINS,
  baseUrl: 'https://testing-angular-applications.github.io',

  // Jasmine
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare: ()=> {
    if (process.env.IS_JENKINS) {
      let jasmineReporters = require('jasmine-reporters');
      let junitReporter = new jasmineReporters.JUnitXmlReporter({
        savePath: 'output/',
        consolidateAll: false
      });
      jasmine.getEnv().addReporter(junitReporter);
    } else {
      let specReporter = new SpecReporter({
        spec: { displayStacktrace: true }
      });
      jasmine.getEnv().addReporter(specReporter);
    }
    require('ts-node').register({
      project: 'e2e/tsconfig.json'
    });
  }
};

脚本(在 Jenkins 上)

export IS_JENKINS=true   
npm install    
npm run webdriver-update    

结果

+ npm run webdriver-update

> chapter-11-code@1.0.0 webdriver-update /var/lib/jenkins/workspace/pjk11
> webdriver-manager update --gecko false
....
[12:03:41] I/file_manager - creating folder /var/lib/jenkins/workspace/pjk11/node_modules/protractor/node_modules/webdrive...
Xvfb stopping
Finished: SUCCESS

我遵循了角度测试书的每一步,但没有生成报告。

标签: angularjenkinsjunitprotractorend-to-end

解决方案


已解决,我必须将directConnect设置为 true。

还有一点,有时您必须手动创建目录。

量角器.conf.js

exports.config = {
  directConnect: true ,
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: (['--headless']) 
    }
  },
  baseUrl: 'https://testing-angular-applications.github.io',
  specs: ['e2e/**/*.e2e-spec.ts'],
  onPrepare: () => {
      let jasmineReporters = require('jasmine-reporters');
      let junitReporter = new jasmineReporters.JUnitXmlReporter({
        savePath: 'output/',
        consolidateAll: false
      });
      jasmine.getEnv().addReporter(junitReporter);
    require('ts-node').register({
      project: 'e2e'
    });

  },
};

推荐阅读