Я пытаюсь создать отчеты о покрытии кода с помощью 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.