покрытие кода JavaScript с использованием Selenium + istanbul - PullRequest
0 голосов
/ 10 октября 2018

Может ли кто-нибудь помочь мне с тем, как получить покрытие кода JavaScript с помощью Istanbul при выполнении тестовых примеров Selenium?

Я прошел эту ссылку, но не смог ее получить.Как мне использовать это в моем случае?Мои тесты выполняются в локальном браузере, вызывающем удаленный сервер.Тестовые случаи Selenium написаны на Java.

1 Ответ

0 голосов
/ 11 марта 2019

https://github.com/alex028502/istanbulseleniumexample

Мне тоже было трудно это понять, поэтому я сделал приведенный выше пример с веб-пакетом.

module.exports = {
  devtool: 'source-map',
  mode: 'none',
  module: {
    rules: [
      // { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ },
      {
        resolve: {
          extensions: ['.js'],
        },
        use: {
          loader: 'istanbul-instrumenter-loader',
          options: {esModules: true},
        },
        enforce: 'post',
        exclude: /node_modules/,
      },
      {
        test: /\.coffee$/,
        use: [
          {loader: 'coffee-loader'},
        ],
      },
    ],
  },
  entry: './src/index.js',
  output: {
    path: __dirname + '/public/',
    filename: 'index.js',
  },
};

, а затем, если вы запускаете инструментальный код в браузере, выможете скачать его вот так

coverage_info = _driver.execute_script('return JSON.stringify(window.__coverage__);')
# each report needs a unique name
# but we don't care for this example which report corresponds
# to which test
timestamp = datetime.datetime.timestamp(datetime.datetime.now())
file = open("nyc_output/coverage%s.json" % timestamp, 'w')

и затем сгенерировать отчет вот так

node_modules/.bin/nyc report -t nyc_output

Если вы не используете веб-пакет, вы просто вводите свой код с помощью командной строки, как в примереВы вставили, и он создает новую папку с инструментированным кодом.

# from https://medium.com/@the1mills/front-end-javascript-test-coverage-with-istanbul-selenium-4b2be44e3e98
mkdir public-coverage
cp -a public/. public-coverage/   # copy all files over
istanbul instrument public \ 
    --output public-coverage \
    --embed-source true

Часть, без которой я смог обойтись по упомянутой вами ссылке, - промежуточное программное обеспечение istanbul

...