Karma 测试错误:已断开连接,因为 60000 毫秒内没有消息

问题描述 投票:0回答:1

我正在运行“ng test”命令来在 Angular 项目中实现单元测试。

Chrome Headless 120.0.6099.130 (Windows 10) ERROR
  Disconnected , because no message in 60000 ms.
Chrome Headless 120.0.6099.130 (Windows 10): Executed 404 of 134 (24 FAILED) (skipped 4) DISCONNECTED (5 mins 32.639 secs / 8.279 secs)
Chrome Headless 120.0.6099.130 (Windows 10) ERROR
Chrome Headless 120.0.6099.130 (Windows 10): Executed 404 of 134 (24 FAILED) (skipped 4) DISCONNECTED (5 mins 32.639 secs / 8.279 secs)

测试已经进行了一段时间,但面临着如上所述的断开连接问题。

我尝试更改 karma.conf.js 中的配置,例如 captureTimeout、brosweDisconnectTimeOut、browserDisconnectTolearnce、browserNoActivityTimeout 和 ChromeHeadlessNosandbox 中的标志。另外,我尝试更新最新版本的 Angular 16(16 是必需的)。

karma.conf..js

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'),
      require('karma-sonarqube-reporter'),
      require('@angular-devkit/build-angular/plugins/karma')
    ],
    client: {
      jasmine: {
      },
      clearContext: false, 
    },
    jasmineHtmlReporter: {
      suppressAll: true
    },
    coverageReporter: {
      dir: require('path').join(__dirname, './coverage/r3p-ui'),
      subdir: '.',
      reporters: [
        { type: 'html', subdir: 'text-summary'},
        { type: 'text-summary', subdir: 'lcov-report' }
      ],
      check: {
        global: {
          statements: 20,
          branches: 1,
          functions: 20,
          lines: 20,
        },
      },
      watermarks: {
        statements: [ 10, 20 ],
        functions: [ 10, 20 ],
        branches: [ 10, 20 ],
        lines: [ 10, 20 ]
      },
    },
    reporters: ['coverage', 'progress', 'kjhtml', 'sonarqube'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['ChromeHeadlessNoSandbox'],
    singleRun: true,
    restartOnFileChange: false,
    sonarqubeReporter: {
      basePath: 'src',
      filePattern: '**/*spec.ts',
      encoding: 'utf-8',
      outputFolder: 'reports',
      legacyMode: false,
      reportName: 'test-report.xml'
    },    
    customLaunchers: {
      ChromeHeadlessNoSandbox: {
        base: 'ChromeHeadless',
        flags: [
          '--no-sandbox',
          // '--disable-gpu',
          // '--enable-logging',
          // '--no-default-browser-check',
          // '--no-first-run',
          // '--disable-default-apps',
          // '--disable-popup-blocking',
          // '--disable-translate',
          // '--disable-background-timer-throttling',
          // '--disable-renderer-backgrounding',
          // '--disable-device-discovery-notifications',
          // '--remote-debugging-port=9222',
          // '--disable-web-security'
  ]
      }
    },
    captureTimeout: 300000,
    browseDisconnectTimeOut: 40000,
    browserDisconnectTolerance: 4,
    browserNoActivityTimeout: 60000
  });
};

package.json

  "devDependencies": {
    "@angular-devkit/build-angular": "^16.1.1",
    "@angular/cli": "~16.1.1",
    "@angular/compiler-cli": "^16.1.0",
    "@babel/core": "^7.23.3",
    "@okta/okta-angular": "^6.3.0",
    "@types/file-saver": "^2.0.7",
    "@types/jasmine": "~4.3.0",
    "@types/pdfmake": "^0.2.4",
    "file-saver": "^2.0.5",
    "jasmine-core": "~4.6.0",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.2.0",
    "karma-coverage": "~2.2.0",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "~2.1.0",
    "karma-sonarqube-reporter": "~1.4.0",
    "tslib": "^2.6.2",
    "typescript": "~5.1.3"
  },
angular unit-testing jasmine karma-jasmine karma-runner
1个回答
0
投票

运行这么多测试需要很长时间。为了比较,

Chrome 120.0.0.0 (Windows 10): Executed 307 of 343 (skipped 36) SUCCESS (3.966 secs / 3.666 secs)
TOTAL: 307 SUCCESS

我怀疑测试本身正在做一些你意想不到的事情。你可以尝试以下方法

  • 将浏览器的
    karma.conf.js
    行更改为
    browsers: ['Chrome'],
  • 奔跑
    ng test
  • 在出现的 Chrome 窗口中打开 DevTools 并查看控制台
  • 列出的错误/警告应该表明一些问题

您的输出显示您有 24 个失败的测试

  • 建议将测试失败的文件中顶部的
    describe
    更改为
    xdescribe
  • 排除这些测试后,再看一眼 DevTools 中的控制台,看看是否还有剩余的内容
  • 如果现在按预期工作,请开始包含排除的测试并修复它们
© www.soinside.com 2019 - 2024. All rights reserved.