我正在使用Cypress在 Angular Web应用程序中进行e2e测试。 Cypress 首次打开时,转到http://localhost:54401/__/#tests/integration/login.spec.ts
这在屏幕的左侧显示了 Cypress 测试台,右侧显示了网络输出。只要我的beforeEach函数调用cy.visit(),而不是更改输出,屏幕顶部的主URL就会更改为:http://localhost:4200/__/#tests/integration/login.spec.ts
然后,Angular接管了它,它找不到__路由,因此页面被重定向到我的默认页面,而我失去了Cypress扩展坞/测试运行器。

Cypress 应该只是在更改加载我的应用程序的框架,而不是页面URL。发生某种事情,导致 Cypress 操纵主浏览器URL而不是框架URL。

angular -  Cypress e2e测试平台在cy.visit()上关闭-LMLPHP

如何解决这个问题,以使cypress定位到框架而不是主浏览器窗口?这在过去一直有效,而最近才开始不起作用。我不确定这是柏树还是 Chrome 的问题。我以为这可能是 Cypress 网络安全的问题,所以我确实尝试将chromeWebSecurity: false中的cypress.json设置为无效。
https://docs.cypress.io/guides/guides/web-security.html#Disabling-Web-Security

我正在使用cypress 3.1.5。

最佳答案

向Cypress github项目提交了一个错误,并被告知这通常在应用程序具有框架无效代码时发生。原来我们正在导入hammerjs。当我删除该导入(在polyfills.js中)时,它工作正常。

import 'hammerjs';

供引用,问题链接为Entire test runner redirects to app's login page #3517

09-20 22:32