Codecov, действия Github и Angular 11 «Отчет о покрытии не найден»

#angular #code-coverage #github-actions #codecov

#angular #кодовое покрытие #github-действия #codecov

Вопрос:

Я пытаюсь опубликовать покрытие кода библиотеки Angular (v11) для Codecov.io через действия Github

Я настроил официальные действия Codecov github с торговой площадки

 name: tests

on:
  pull_request:
    branches: [ master ]

jobs:
  build:
    # Machine environment:
    # We specify the Node.js version manually below, and use versioned Chrome from Puppeteer.
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js 14
        uses: actions/setup-node@v1
        with:
          node-version: 14
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run build-lib
      - name: Test
        run: npm run test-lib-headless

      - name: Codecov
        uses: codecov/codecov-action@v1.1.1
 

задача в package.json

 "test-lib-headless": "ng test ngx-scrollbar --watch=false --no-progress --browsers=ChromeHeadless --code-coverage",
 

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('@angular-devkit/build-angular/plugins/karma')
    ],
    client: {
      jasmine: {
        // you can add configuration options for Jasmine here
        // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
        // for example, you can disable the random execution with `random: false`
        // or set a specific seed with `seed: 4321`
      },
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    jasmineHtmlReporter: {
      suppressAll: true // removes the duplicated traces
    },
    coverageReporter: {
      dir: require('path').join(__dirname, './coverage'),
      subdir: '.',
      reporters: [
        { type: 'html' },
        { type: 'text-summary' }
      ]
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    customLaunchers: {
      ChromeHeadlessCI: {
        base: 'ChromeHeadless',
        flags: ['--no-sandbox']
      }
    },
    singleRun: false,
    restartOnFileChange: true,
    capabilities: {
      chromeOptions: {
        args: ["--headless"]
      },
      'browserName': 'chrome'
    },
  });
};
 

Файлы покрытия создаются в coverage каталоге

введите описание изображения здесь

В Github actions CI это показывает, что codecov не нашел файлы!

введите описание изображения здесь

Почему файлы не найдены, даже если они были созданы локально? ищет ли Codecov другое расширение отчета? Как я могу заставить это работать?

Ответ №1:

Это связано с тем, что созданный по умолчанию отчет о покрытии не поддерживается codecov.

Простое решение — просто добавить lcov reporter в вашу конфигурацию.

https://istanbul.js.org/docs/advanced/alternative-reporters/#lcovonly

 coverageReporter: {
      dir: require('path').join(__dirname, './coverage/peach-tree'),
      subdir: '.',
      reporters: [
        { type: 'html' },
        { type: 'text-summary' },
        { type: 'lcovonly' },
      ]
    },
 

Затем скрипт bash, предоставленный codecov, загрузит ваш отчет без каких-либо проблем.