Я пытаюсь создать покрытие кода для моих тестов e2e. Ниже мой scripts
раздел из package.json
файла.
package.json
"scripts": {
...
"start": "cross-env REACT_APP_Region=dev npm-run-all -p watch-css start-js",
"test": "yarn test:jest --config tests/jest.unit.config.js",
"test:coverage": "yarn test:jest --config tests/jest.unit.config.js --coverage",
"test:e2e": "nightwatch -c tests/nightwatch.conf.js -e chrome",
"test:jest": "jest --no-cache",
},
Моя структура папок выглядит следующим образом:
<root>
src
tests
e2e
page_objects
views
jest.unit.config.js
nightwatch.conf.js
Мой nightwatch.conf.js файл, как показано ниже:
// Get Selenium and the drivers
var seleniumServer = require('selenium-server');
var chromedriver = require('chromedriver');
var geckodriver = require('geckodriver');
var config = {
src_folders: [
// Folders with tests
'tests/e2e'
],
output_folder: 'tests/e2e/report', // Where to output the test reports
page_objects_path: "tests/e2e/page_objects",
selenium: {
// Information for selenium, such as the location of the drivers ect.
start_process: true,
server_path: seleniumServer.path,
port: 4444, // Standard selenium port
cli_args: {
'webdriver.chrome.driver': chromedriver.path,
'webdriver.gecko.driver': geckodriver.path,
'webdriver.edge.driver': "C:/Drivers/MicrosoftWebDriver.exe"
}
},
test_workers: {
// This allows more then one browser to be opened and tested in at once
enabled: true,
workers: 'auto'
},
parallel_process_delay : 500,
test_settings: {
default: {
screenshots: {
enabled: false,
path: "tests/e2e/report",
on_failure: true,
on_error: false
},
detailed_output: true,
skip_testcases_on_fail: false,
end_session_on_fail: false,
selenium_host: "localhost",
selenium_port: 4444,
launch_url: "http://localhost:4000",
globals: {
// How long to wait (in milliseconds) before the test times out
waitForConditionTimeout: 5000
},
desiredCapabilities: {
// The default test
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true,
nativeEvents: true
}
},
// Here, we give each of the browsers we want to test in, and their driver configuration
chrome: {
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true,
nativeEvents: true,
os_version: "10",
os: "Windows"
}
},
}
};
module.exports = config;
Я могу правильно выполнить все свои юнит-тесты и тесты e2e и получить покрытие для юнит-тестов. Ниже приведен раздел для jest
из package.json
file
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx,mjs}"
],
"setupFiles": [
"<rootDir>/config/polyfills.js"
],
"projects": [
"tests/jest.unit.config.js",
]
},
А мой jest.unit.config.js
файл выглядит так:
module.exports = {
name: 'unit',
displayName: 'unit',
rootDir: '../',
"collectCoverageFrom": [
"<rootDir>/src/**/*.{js,jsx,mjs}"
],
"testMatch": [
"<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
],
"setupTestFrameworkScriptFile": "<rootDir>/src/setupTests.js",
"testEnvironment": "jsdom",
"testURL": "http://localhost",
"transform": {
"^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
"^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
},
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
],
"moduleNameMapper": {
"^react-native$": "react-native-web"
},
"moduleFileExtensions": [
"web.js",
"js",
"json",
"web.jsx",
"jsx",
"node",
"mjs"
]
};
Теперь я хочу сгенерировать code coverage
для моих тестов e2e. Может кто-нибудь, пожалуйста, наставить меня на это? Спасибо