Интеграция огурца и кипариса в Стамбуле

Я сделал проект с React, Cypress, Cucumber и Cypress Image Snapshot для тестирования внешнего интерфейса. Все работает хорошо, и теперь я хотел бы получить некоторое покрытие кода для выполненных тестов огурца.

Я попытался настроить его, как предлагается здесь (https://github.com/cypress-io/code-coverage), но не повезло.

Я пробовал это решение (https://github.com/cypress-io/cypress/issues/346#issuecomment-365220178), но с тем же результатом.

Тесты заканчиваются успешно, но покрытие кода показывает Unknown% 0/0 для операторов, ветвей, функций и строк.


Моя текущая настройка:

support/index.js

import '@cypress/code-coverage/support'
import './commands'

plugins/index.js

const cucumber = require('cypress-cucumber-preprocessor').default;
const {
  addMatchImageSnapshotPlugin,
} = require('cypress-image-snapshot/plugin');

module.exports = (on, config) => {
  addMatchImageSnapshotPlugin(on, config);
  on('task', require('@cypress/code-coverage/task'))
  on('file:preprocessor', cucumber());
};

person Antun Modrušan    schedule 17.07.2019    source источник
comment
Вы уже знаете, что тестируете покрытие тестируемого приложения, верно? Приложение, которое вы тестируете, должно быть оснащено, чтобы работало покрытие Cypress.   -  person s1n7ax    schedule 24.05.2020


Ответы (2)


Покрытие кода требует, чтобы ваш код был сначала инструментирован. В приложении React самый простой способ инструментировать ваш код - использовать @ cypress / instrument- cra. Просто добавьте этот инструментарий в свой стартовый скрипт в package.json.

"start": "react-scripts -r @cypress/instrument-cra start"

Это будет инструментировать ваш код каждый раз, когда вы запускаете свое приложение и генерируете папку .nyc-output в корне вашего приложения, которая будет содержать весь инструментированный код. Вы можете проверить, инструментирован ли ваш код или нет, проверив объект покрытия окна.

Завершить настройку:

package.json

"start": "react-scripts -r @cypress/instrument-cra start"

::::

"nyc": {
"extends": "@istanbuljs/nyc-config-typescript",
"all": true,
"report-dir": "coverage",
"reporter": [
  "text",
  "json",
  "lcov",
  "html"
],
"include": [
  "src/**/*.js"
],
"exclude": [
  "**/*.test.js",
  "**/test.js",
  "src/**/*.test.js",
  "src/**/**/*.test.js"
]

}

плагины / index.js

module.exports = (on, config) => {
require('@cypress/code-coverage/task')(on, config);
return config;

поддержка / index.js

import '@cypress/code-coverage/support';
person Anuj sharma    schedule 30.06.2020

Поскольку вы ничего не упомянули об инструментарии приложения, веб-приложение, которое вы тестируете, должно быть оснащено инструментарием, чтобы покрытие кода работало.

Подробнее об инструментировании приложения

https://github.com/cypress-io/code-coverage#instrument-your-application

person s1n7ax    schedule 24.05.2020