Проблема в запуске модульного теста с использованием проекта Karma для Angular в GitLab CI - PullRequest
1 голос
/ 30 января 2020

Я получаю сообщение об ошибке ниже:

  • 313 $ npm выполнить тест
  • 314> angular-base-line@0.0.0 test / builds / 8800 / IT / EAPC / base-line- проект / angular
  • 315> нг тест
  • 316 30 01 2020 10: 45: 00.853: ПРЕДУПРЕЖДЕНИЕ [карма]: нет захваченного браузера, открыт http://localhost: 9876 /
  • 317 30 01 2020 10: 45: 00.894: ИНФОРМАЦИЯ [сервер кармы]: сервер Karma v4.4.1 запущен с http://0.0.0.0: 9876 /
  • 318 30 01 2020 10: 45: 00.895: ИНФОРМАЦИЯ [launcher]: запуск браузеров ChromeHeadlessCustom с неограниченным параллелизмом
  • 319 30 01 2020 10: 45: 00.903: INFO [launcher]: запуск браузера ChromeHeadless
  • ........
  • ........
  • 337 30 01 2020 10: 45: 06.908: ПРЕДУПРЕЖДЕНИЕ [пусковая установка]: ChromeHeadless не захвачен в 6000 мс, убийство.
  • 338 30 01 2020 10: 45: 08.909: WARN [лаунчер]: ChromeHeadless не был убит в 2000 мс, отправка SIGKILL.
  • 339 30 01 2020 10:45 : 10.912: ПРЕДУПРЕЖДЕНИЕ [пусковая установка]: ChromeHeadless не был убит SIGKILL за 2000 мс, продолжение g.

Мой файл конфигурации кармы

module.exports = function (config) {

  const process = require('process');
  process.env.CHROME_BIN = require('puppeteer').executablePath();

  config.set({
    basePath: '',

    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('phantomjs-prebuilt'),
      //require('karma-phantomjs-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'), reports: [ 'html', 'lcovonly' ],
      fixWebpackSourcePaths: true
    },

    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browserSocketTimeout: 6000,
    browserNoActivityTimeout: 6000,
    captureTimeout: 6000,
    browserDisconnectTimeout : 6000,
    browserDisconnectTolerance : 1,
     customLaunchers: {
      ChromeHeadlessCustom: {
            base: 'ChromeHeadless',
            flags: [
              '--headless',
              '--disable-gpu',
            '--no-sandbox',
            '--no-proxy-server',
            '--disable-web-security'
            ]
          }
    }, 
      browsers: ['ChromeHeadlessCustom'],
    singleRun: false
  });
};
  • Мой файл Yaml
development-tests:
  image: node:8-alpine
  stage: tests
  tags: 
      - ci-cd
  environment: Development
  only:
  - master
  #dependencies:
  # - development-build

  script:

     - apk update && apk upgrade && \
     - echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
     - echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \
     #- apk add --no-cache bash chromium@edge nss@edge
     - apk add --no-cache g++ chromium 
     - export CHROME_BIN="/usr/bin/chromium-browser"
     - export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
     - export SASS_BINARY_NAME="linux-x64-67"
     - npm install --save-dev puppeteer karma-chrome-launcher
     - npm i puppeteer
     - npm install
     - npm run test
  • Есть какие-нибудь решения для этого?

1 Ответ

0 голосов
/ 23 апреля 2020

когда вы делаете npm локальный тест, он работает? Я могу воспроизвести случай с pupeeter, где он работает локально, но не на docker Gitlab CI

  • gitlabci.yml
image: node:latest
before_script :
  #this is line 96 in the pipeline log
  - pwd
  - ls /usr
  #- export CHROME_BIN=/usr/local/bin/my-chrome-build


stages:
  - build
  - test

cache:
  paths:
    - node_modules/

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/

testing_testing:
  stage: test
  script: npm test --log-level=DEBUG 
  • Karma conf
process.env.CHROME_BIN = require('puppeteer').executablePath()


module.exports = function(config) {
  config.set({
    browsers : ['Chrome']
  });
};
...