测试 - 如何拆分预提交单元测试和 CI 端到端测试

Testing - How to split up pre-commit unit tests and CI end-to-end tests

场景

我正在开发一个具有快速 unit/functional 玩笑测试以及较慢的端到端玩笑木偶测试的应用程序。我想将它们分开,以便我可以 运行 作为 git 预提交挂钩的一部分进行更快的测试,并将端到端测试留在 运行 CI代码最终推送到origin后

问题

如何在预提交时为 运行 定义特定测试?特别是通过类似于 jest moduleNameMapper 的正则表达式,例如 <rootDir>/__tests__/[a-z]+\.unit\.test\.js


package.json 中添加 test:pre,它使用 bash find . -regex 和 bash for do 运行 所需的“预提交”测试

我已经添加了

"test:pre": "PRE=1 npm test -- test/pre-*test.js" 
# everything after -- is a kind of regex filter for matching file names

我的 package.json 脚本和我的 jest-puppeteer global-setup.js 我'我正在使用

if(+process.env.PRE) return;

在所有木偶演员开始之前。所以现在我可以

$ npm run test:pre

和中提琴