赛普拉斯e2e测试平台在cy.visit()上关闭

时间:2019-02-18 15:23:56

标签: angular google-chrome cypress

我正在使用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。

enter image description here

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

我正在使用cypress 3.1.5。

2 个答案:

答案 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解决了这个问题。