默认情况下,运行cypress open
会打开赛普拉斯窗口,然后我必须手动点击“运行所有测试”按钮才能全部运行。
如何只运行cypress open
在浏览器中运行所有测试,而无需额外步骤?
谢谢。
编辑:我需要在更改测试文件时重新运行测试,就像cypress open
一样,所以只运行一次(比如在无头模式下)也无济于事。
答案 0 :(得分:3)
如果您无头地运行赛普拉斯测试cypress run
,则无需单击“运行所有测试”按钮即可运行所有测试。
我发现使用npx cypress run
是最好的方法。
无头地运行cypress的文档指定了您可以使用的其他选项:https://docs.cypress.io/guides/guides/command-line.html#
答案 1 :(得分:1)
使用cypress open
时,您可以使用全局配置选项watchForFileChanges
(详细here
您可以将此作为命令行参数传递:
cypress open --config watchForFileChanges=true
或者您可以在 cypress.json 文件中指定它:
{
"watchForFileChanges": true
}
首次运行cypress open
时,您仍然需要单击运行所有规格,但是在此之后,对测试文件的任何编辑都将导致重新运行测试。
答案 2 :(得分:0)
您可以告诉赛普拉斯UI的界面(请记住赛普拉斯UI与其他页面一样都位于DOM中)以重新运行套件-只需在应用启动时发送一些预定义的信号,然后让赛普拉斯直接使用jQuery(避免日志事件)找到自己的重新加载按钮,然后单击它。
在我的示例中,“信号”是某条控制台日志消息,我的React应用在启动过程中会突然出现:
Cypress.on("window:before:load", (win) => { // registers callback early, long before the app is loaded
win.console._log = win.console.log;
win.console.log = function monkeyPatchedConsoleLog() {
if (arguments[0].match(/^MyApp starting: \(.*\)/)) { // match the app's startup message
cy.$$(".restart", top.document).click(); // click Cypress' own reload button
}
return win.console._log.apply(win.console, arguments); // otherwise log normally
};
});
(将此文件包含在support/*
文件中的某个位置)