Я пытаюсь сгенерировать отчеты о покрытии кода с помощью IstanbulJS для своего кода, написанного на TypeScript и протестированного с Cypress .Но о вещах сообщают не к месту:
Я создал git-репозиторий MCVE специально для этого вопроса, поэтому вы можете воспроизвеститочно моя ситуация:
git clone https://github.com/papb/cy-ts-istanbul-question
cd cy-ts-istanbul-question
npm install
npm test
# And then open the file `coverage/index.ts.html` to see the image above.
Как это исправить?
Подробности
У меня есть некоторый код, написанный на TypeScript, который я передаюи связать в один файл JavaScript (ES6) с rollup , rollup-plugin-typescript2 и rollup-plugin-istanbul .Это прекрасно работает, мой исходный код в TypeScript превращается в файл, готовый для включения с тегом <script>
в браузер и использования.
Во-вторых, я использую cypress для запуска тестов наHTML-страница, которая содержит переданный JS-код, упомянутый выше.Это также отлично работает, Cypress может тестировать мои функции, изначально написанные на TypeScript.
Теперь я хочу настроить отчеты о покрытии для этих тестов.В Cypress FAQ мы можем найти вопрос Есть ли покрытие кода? , ответ на который в настоящее время нет (относительно встроенной функциональности), но равен в обсуждении как долгожданная вещь, которую нужно сделать в будущем, и на самом деле это можно сделать .
Дело в том, что парень, который сделал это выше, не использовал TypeScript,Я.Так что у меня есть небольшой дополнительный шаг, и вот где я сейчас застрял.Интуитивно, я думаю, что это просто вопрос настройки IstanbulJS для правильного следования исходным картам, но я не смог найти никакой документации о том, как это сделать. В каждом руководстве по TypeScript + IstanbulJS, которое я могу найти , предполагается, что я использую Mocha, но я не - я использую Cypress с переносимым источником из TypeScript.
Примечание: я знаю, что в общем случае обычный подход «покрытия кода» к кипарисному тестированию не имеет большого смысла, но в моей конкретной ситуации я думаю, что это так, я уже думал об этом, пожалуйста, не делайте этот кадрЗадача на вопрос.
РЕДАКТИРОВАТЬ: Для ясности, использование накопительного пакета здесь не является жестким требованием.Если у вас есть решение, которое использует что-то другое, оно также вполне приемлемо.Важным моментом, как говорится в заголовке, является Cypress + TypeScript + IstanbulJS.