Angular 8 - Без головы Chrome работает дважды и дает сбой во второй раз - PullRequest
1 голос
/ 07 мая 2020

Локально мои тестовые примеры работают нормально с Chrome, без проблем. Я хочу запустить свои тестовые примеры на моем сервере сборки (Microsoft Azure).

На моих сборках сервера тестовые примеры выполняются дважды. Я хочу запустить их только один раз.

Я передаю конфигурацию как Headless Chrome. Это мои конфигурации.

В пакете. json файл,

"test": "ng test --code-coverage --watch=false --browsers ChromeHeadless",

мой karma.conf. js файл,

// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html

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')
    ],

    // customLaunchers: {
    //   'ChromeHeadless_Sandbox': {
    //       base: 'ChromeHeadless',
    //       flags: [

    //           '--no-sandbox',

    //       ],
    //      debug: true
    //   },
    // },

    client:{
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
      fixWebpackSourcePaths: true
    },

    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    browsers: ['ChromeHeadless'],
    autoWatch: false,
    concurrency: Infinity,
    singleRun: true, // Karma captures browsers, runs the tests and exits
  });
};

Ошибка:

enter image description here

Всего 131 тестовый пример. 8 пропускаются, а остальные проходят правильно. Запускается второй раз и не работает. Сервер показывает все тестовые случаи как неудачные.

Я изучал все ответы на StackOverflow и Github по аналогичным проблемам, но все же тестовые примеры выполняются дважды. Оба раза он работает для Headless Chrome, что нормально, но он должен запуститься один раз и выйти.

PS - Также есть некоторый закомментированный код, который я тестирую и пробую разными способами.

Помогите пожалуйста. Где я go ошибся? Как сделать так, чтобы тестовые примеры выполнялись только один раз?

1 Ответ

1 голос
/ 27 августа 2020

Я нашел решение.

Проблема заключалась в нескольких проектах внутри файла angular. json.

У меня было три проекта, упомянутых внутри «проектов» из angular. json. Одно было моим приложением, другое - «app-e2e», а третье было внешним проектом. Когда вы запускаете Karma, он запускает файлы тестовых примеров во всех трех проектах.

Для последнего внешнего проекта была конфигурация кармы, но не было тестовых примеров, поэтому он не удался.

Что касается меня, этот третий проект не требовался, поэтому я удалил его из angular. json и удалил, а затем тестовые примеры Karma успешно прошли.

...