Я конвертирую тестер 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.
Есть ли способ получить транзитивное закрытие всех исходных файлов из: test_lib ts_library?В приведенном выше примере это обходится путем предоставления атрибута данных для веб-теста кармы, который ссылается на файловую группу (ts_src), но это становится трудным для управления, если существует вложенный граф зависимостей ts_libraries.
Пути к исходным файлам в исходных картах больше не верны, когда исходные файлы используются из кармы TESTSRC_DIR.
Я мог бы написать препроцессор кармы для манипулирования исходными картамипути, но кажется, что должен быть лучший способ сделать это?