Русский
Русский
English
Статистика
Реклама

Считаем code сoverage с cypress

Привет всем, хочу рассказать как добавить code coverage к angular/react проекту. В сети можно отыскать довольно много вариантов как это делать, и со своего опыта должен заметить что иногда с angular это не так просто. Рассмотрим как добавить code coverage к 11 версии angular (если у вас 7/8 этот пример может не работать, лучше обновится)

Angular

Установим всезависимости

npm i -D ngx-build-plusnpm i -D istanbul-instrumenter-loadernpm install -D @cypress/code-coverage

Переедемс protractor на cypress

ng add @briebug/cypress-schematic

Создадим файл cypress/coverage.webpack.js

module.exports = {  module: {    rules: [      {        test: /\.(js|ts)$/,        loader: 'istanbul-instrumenter-loader',        options: { esModules: true },        enforce: 'post',        include: require('path').join(__dirname, '..', 'src'),        exclude: [          /\.(e2e|spec)\.ts$/,          /node_modules/,          /(ngfactory|ngstyle)\.js/        ]      }    ]  }};

Обновим наш angular.jso

"serve": {  "builder": "ngx-build-plus:dev-server",  "options": {    "browserTarget": "angular-registration-login-example:build",    "extraWebpackConfig": "./cypress/coverage.webpack.js"  }},

Добавим к cypress/support/index.js

import '@cypress/code-coverage/support';

Добавим к cypress/plugins/index.js

module.exports = (on, config) => {  require('@cypress/code-coverage/task')(on, config)  // IMPORTANT to return the config object  // with the any changed environment variables  return config}

Запустим приложение, в console должна быть переменная window.__coverage__

После запуска приложения остается только запустить тесты npm run cy:open / cy:run

"cy:open": "cypress open","cy:run": "cypress run",

Как только тесты пройдут в корне приложения будет создана папка coverage

Посмотреть результат можно открыв файл coverage/lcov-report/index.html

Кликая по компонентам можно посмотреть какой код выполнялся и сколько раз, а какой еще не покрыт тестами

Сампроектможно скачать тут: https://github.com/NikolayKozub/angular-coverage-cypress

React

Установим все зависимости

npm i -D nycbabel-plugin-istanbulistanbul-lib-coverage@cypress/code-coverage@cypress/instrument-cra

Добавим к cypress/plugins/index.js

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

Добавим к cypress/support/index.js

import '@cypress/code-coverage/support'

Добавим скрипты к package.json

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

Добавим .babelrc в корень проекта

{  "plugins": ["istanbul"]}

Запускаем тесты и смотрим отчет

Еще больше можно почитать тут

Источник: habr.com
К списку статей
Опубликовано: 22.12.2020 12:11:10
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Angular

Reactjs

Cypress

Code coverage

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru