Если в проекте огромное количество тестов и нужно фиксануть покрытие 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"
}
}