【问题标题】:NG Test cannot use Karma custom launchersNG 测试无法使用 Karma 自定义启动器
【发布时间】:2020-12-31 17:14:35
【问题描述】:

我正在尝试通过 Angular CLI 为 CI 无头运行 Karma,但我无法让 Karma 使用我的自定义启动器。

根据this page on the Angular website,我在我的 Karma 配置中使用了customLauncher 属性。但是当我尝试使用 ng test --no-watch --no-progress --browsers=ChromeHeadlessCI 运行测试时,我收到一个错误,提示我的自定义启动器未注册。

    01 01 2021 14:10:10.121:INFO [karma-server]: Karma v5.2.3 server started at http://localhost:9876/
    01 01 2021 14:10:10.126:INFO [launcher]: Launching browsers ChromeHeadlessCI with concurrency unlimited
    01 01 2021 14:10:10.127:ERROR [launcher]: Cannot load browser "ChromeHeadlessCI": it is not registered! Perhaps you are missing some plugin?
    01 01 2021 14:10:10.128:ERROR [karma-server]: Error: Found 1 load error
     at Server.<anonymous> (C:\Users\trimb\Dropbox\7_Workspaces\weather\node_modules\karma\lib\server.js:213:27)
     at Object.onceWrapper (events.js:421:28)
     at Server.emit (events.js:327:22)
     at Server.EventEmitter.emit (domain.js:467:12)
     at emitListeningNT (net.js:1352:10)
     at processTicksAndRejections (internal/process/task_queues.js:79:21)
    npm ERR! code ELIFECYCLE

这是我的 Karma 配置:

module.exports = function (config) {
    config.set({
      basePath: '',
      frameworks: ['jasmine', '@angular-devkit/build-angular'],
      plugins: [
        require('karma-jasmine'),
        require('karma-chrome-launcher'),
        require('karma-jasmine-html-reporter'),
        require('karma-coverage-istanbul-reporter'),
        require('@angular-devkit/build-angular/plugins/karma')
      ],
    client: {
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, './coverage/weather'),
      reports: ['html', 'lcovonly', 'text-summary'],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome', 'ChromeHeadlessCI'],
    browserDisconnectTolerance: 3,
    browserDisconnectTimeout: 10000,
    browserNoActivityTimeout: 60000,
    customLaunchers: {
      ChromeHeadlessCI: {
        base: 'ChromeHeadless',
        flags: [
          '--no-sandbox'
        ]
      }
    },
    singleRun: true,
    restartOnFileChange: true
    });
  };

这是我通过 npm 从 package.json 运行的命令:

"test::cci": "ng test --no-watch --no-progress --browsers=ChromeHeadlessCI",

我不知道从这里去哪里。这是 Karma 的错误吗?我的配置错误(更有可能是罪魁祸首)?我不知道。所有这些“代码”几乎都是样板文件。

【问题讨论】:

    标签: angular-cli karma-jasmine karma-runner


    【解决方案1】:

    发现问题。当然,这是一个配置问题。 angular.json 文件中有一个属性可以指定自定义的karmaConfig 路径。

    我不确定它是怎么发生的,但是当我运行 ng test 时,它的路径不正确 src/karma.config.js Karma 仍然运行,因为 (as per Angualr.io)

    karma.conf.js 文件是部分 Karma 配置文件。 CLI 在内存中构建完整的运行时配置,基于 angular.json 文件中指定的应用程序结构,并辅以 karma.conf.js。

    我得到的关于 customLoader being missing 的错误在技术上是正确的,因为 Karma 没有加载我的配置。因此,如果未找到 angular.json 文件中指定的 Karma 配置文件,CLI 会继续并为 Karma 运行“默认”配置。

    我的两分钱:应该有一些错误输出到控制台,找不到指定的业力配置,但可惜没有。检查你的路径人们!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2014-05-01
      • 2020-04-13
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多