Как измерить охват при запуске машинописных тестов с использованием кармы и базеля? - PullRequest
0 голосов
/ 12 июня 2019

Я конвертирую тестер karma + webpack для машинописи, чтобы использовать Bazel.Текущая система сообщает о покрытии кода с помощью karma-покрытие-istanbul-reporter.Как мне измерить покрытие при запуске тестов машинописи с помощью кармы с помощью Bazel?

Я попытался добавить плагины karma-cover-istanbul-reporter и karma-cover-istanbul-instrumenter в файл конфигурации karma и использовать его с karma_web_test_suite.

// karma.conf.js
module.exports = function(config) {
  config.set({
    reporters: ['coverage-istanbul'],
    preprocessors: {
      "**/!(*.spec).js": ["karma-coverage-istanbul-instrumenter"]
    },
    coverageIstanbulInstrumenter: {
      esModules: false,
      produceSourceMap: true
    },
    coverageIstanbulReporter: {
      reports: ['text-summary', 'html'],
      dir: path.join(OUTPUT_DIR, "coverage")
    }
  })
};
# BUILD.bazel
karma_web_test_suite(
    name = "test",
    config_file = "//:karma.conf.js",
    data = [":ts_src"],
    deps = [
        ":test_lib",
    ],
)

Внешне это работает, код инструментируется istanbul, и он сообщает о покрытии в текстовой сводке в stdout.Однако есть несколько проблем с репортером html, который пытается прочитать исходные файлы машинописного текста из исходных карт js.

  1. Есть ли способ получить транзитивное закрытие всех исходных файлов из: test_lib ts_library?В приведенном выше примере это обходится путем предоставления атрибута данных для веб-теста кармы, который ссылается на файловую группу (ts_src), но это становится трудным для управления, если существует вложенный граф зависимостей ts_libraries.

  2. Пути к исходным файлам в исходных картах больше не верны, когда исходные файлы используются из кармы TESTSRC_DIR.

Я мог бы написать препроцессор кармы для манипулирования исходными картамипути, но кажется, что должен быть лучший способ сделать это?

...