Если в проекте огромное количество тестов и нужно фиксануть покрытие 2-3 тестов, то приходится постоянно запускать npm run test, который запускает все тесты. Возможен запуск тестов для определенной папки (запускаются тесты в данной папке и все тесты в подпапках + покрытие кода показывается только для данного уровня).
- Обновить
avaдо версии^3.11.1(devDependencies) - Поставить пакет
@ava/babel(моя версия "^1.0.1") (devDependencies) - В
package.jsonв разделеscriptsдобавить новую команду"test-local": "node localtest.js". Пример в файле - Рядом с
package.jsonдобавить файлlocaltest.jsс содержимым согласно файлу
Перейти в любую папку и запустить npm run test-local, при этом запустятся только тесты для данной директории и покажется покрытие только для данной директории
- Решение тестировалось на Linux, как поведет себя на винде я не знаю
- При запуске данного скрипта
avaне чистит кеш, это можно настроить, однако почему-то при командеava --reset-cacheона запускает вообще все тесты. - Возможно стоит объединить скрипты
npm testиnpm run test-localв один, однакоnpm run test-localне выбивает ошибку в консоли в конце вывода, в случае, если покрытие кода не 100% или зафейлились
localtest.js
const path = require('path');
const {spawn} = require('child_process');
const relpath = path.relative(__dirname, process.env.INIT_CWD);
if (!relpath) {
spawn('nyc', ['ava'], { shell: true, stdio: 'inherit' });
} else {
spawn('nyc', [`-n '${relpath}/**/*.js'`, `-n '${relpath}/**/*.jsx'`, 'ava', `'${relpath}/**/*.test.js'`], { shell: true, stdio: 'inherit' });
}package.json
{
"nyc": {
"all": true,
"check-coverage": true,
"branches": 100,
"lines": 100,
"functions": 100,
"statements": 100,
"include": [
"src/**/*.js",
"src/**/*.jsx"
],
"exclude": [
"src/**/*.test.js",
"src/**/index.js",
"src/app.jsx",
"src/store.js"
],
"parser-plugins": [
"jsx",
"asyncGenerators",
"bigInt",
"classProperties",
"classPrivateProperties",
"dynamicImport",
"importMeta",
"objectRestSpread",
"optionalCatchBinding"
]
},
"scripts": {
"test-local": "node localtest.js"
},
"devDependencies": {
"@ava/babel": "^1.0.1",
"ava": "^3.11.1"
}
}