我正在使用Cypress在有角度的Web应用程序中进行e2e测试。赛普拉斯首次打开时,它会转到http://localhost:54401/__/#tests/integration/login.spec.ts
这在屏幕的左侧显示了赛普拉斯测试台,右侧显示了网络输出。我的beforeEach
函数调用cy.visit()
后,屏幕顶部的主URL不再更改输出,而是更改为:
http://localhost:4200/__/#tests/integration/login.spec.ts
然后Angular接管了,它找不到__
路线,因此页面被重定向到我的默认页面,而我失去了Cypress基座/测试运行器。
Cypress应该只更改应用程序加载的框架,而不是页面URL。发生某种情况,导致赛普拉斯操纵主浏览器URL而不是框架URL。
如何解决此问题,以使cypress瞄准框架而不是浏览器主窗口?过去一直有效,最近才开始不起作用。我不确定这是柏树还是镀铬的问题。我以为这可能是赛普拉斯网络安全的问题,所以我确实尝试将chromeWebSecurity: false
中的cypress.json
设置为无效。
https://docs.cypress.io/guides/guides/web-security.html#Disabling-Web-Security
我正在使用cypress 3.1.5。
答案 0 :(得分:2)
向Cypress github项目提交了一个错误,并被告知这通常在应用程序具有框架无效代码时发生。原来我们正在导入temp
。当我删除该导入(在polyfills.js中)时,效果很好。
np.random.seed(42)
fig, ax = plt.subplots()
n = 42
x = np.linspace(0,100,n)
y = np.cumsum(np.random.randn(n))+5
ax.plot(x,y, color="darkgrey", lw=2.5)
p = TemperaturePlot()
p.scatter(x[::4],y[::4]+3, s=300, temp=y[::4], c=y[::4], edgecolor="k", cmap="RdYlBu_r")
ax.set_ylim(-6,18)
plt.show()
作为参考,问题链接为Entire test runner redirects to app's login page #3517
答案 1 :(得分:0)
对我来说,从3.1.0升级到3.1.5解决了这个问题。