Покрытие Jest не должно включать rootDir в пути, создавая несоответствие с покрытием Cypress.

Мне нужно объединить отчет о покрытии Cypress и отчет о покрытии Jest в контексте приложения Next.js.

Jest отобразит файлы как my-app/src/whatever. Кипарис показывает только src/whatever.

Cypress не будет включать my-app, а Jest включает, что вызывает проблему при попытке объединить покрытие с использованием рекомендуемого метода из примеров Cypress. Альтернативой может быть использование Cypress для отображения папки.

Решение 1: Jest соответствует Cypress?

Я бы хотел, чтобы Jest вычислял путь к закрытым файлам относительно rootDir, не отображая его.

Например, в отчете о покрытии будет отображаться my-app/src/whatever. Он должен показывать только src/whatever, без my-app.

Это выполнимо?

Решение 2: Cypress соответствует Jest?

Альтернативой является использование Cypress для другого корневого каталога, но я не нашел таких вариантов. Имхо, это наименее перспективный вариант. Есть ли соответствующий вариант для этого?

Дополнительный вопрос: оба инструмента имеют разное количество строк, вероятно, из-за взаимодействия TypeScript + Babel + Webpack с кодом. Как я могу отладить эту проблему?

Спасибо

Изменить для ясности


person Eric Burel    schedule 12.03.2020    source источник
comment
Не могли бы вы просто изменить glob collectCoverageFrom на src/** и оставить ссылку на rootDir?   -  person Steven Scott    schedule 12.03.2020
comment
@StevenScott Вы правы, если код находится в папке src. Однако Next.js не имеет отдельной папки src по умолчанию, например (перемещение кода в src действительно было для меня быстрым решением). Я был бы рад найти более общее решение этой проблемы, например, когда у вас есть две папки, представьте себе src и legacySrc по какой-то причине.   -  person Eric Burel    schedule 13.03.2020
comment
@RichardMatsen хорошо, так что в основном проблема здесь в том, что Cypress творит какое-то волшебство с путем, которого Jest просто не делает?   -  person Eric Burel    schedule 13.03.2020
comment
Немного сложно сказать по коду fixSourcePaths(), но в комментариях говорится, что он делает две вещи: 1) изменяет относительные пути на абсолютные 2) удаляет материалы, связанные с веб-пакетом. Вы упомянули, что ищете противоположное (от абсолютного к относительному пути), или вы просто ищете согласованность между охватом Cypress и охватом Jest? Поскольку пакет Cypress направлен на их объединение, они уже должны быть согласованы. Вы должны конкретизировать некоторые детали в своем вопросе.   -  person Richard Matsen    schedule 13.03.2020
comment
С несколькими aths collectCoverageFrom представляет собой glob, поэтому при необходимости вы указываете несколько путей. Вы также можете использовать отрицание, чтобы пропустить пути (!path/to/skip)   -  person Steven Scott    schedule 14.03.2020
comment
Отредактировано для ясности, спасибо за ваши предложения. Несколько путей для collectCoverageFrom вынуждают меня перечислять все допустимые папки. Вероятно, вы могли бы сделать этот комментарий ответом, но только в качестве быстрого исправления. Кроме того, имя папки может не отображаться (например, ["components/*.ts"/, "pages/*.ts"] удалит имя папки, чтобы сохранить только имя файла), так что в конце концов это может не сработать.   -  person Eric Burel    schedule 16.03.2020


Ответы (1)


В качестве быстрого исправления, специфичного для Next, теперь можно использовать папку src в Next. Таким образом, размещение всего тестируемого кода в изолированной папке может быть быстрым решением.

В вашей конфигурации Jest:

  collectCoverageFrom: [
    "src/**/*.{js,jsx,ts,tsx}"
    ...

(не уверен, почему, но Cypress, похоже, не нуждается в дополнительной конфигурации при добавлении папки src)

person Eric Burel    schedule 16.03.2020