我有一个 React/apollo 客户端和一个基于 GRANDStack 的 apollo/neo4j 后端应用程序。我的 React 应用程序在 localhost:3000 上运行,我的 GraphQL 在 localhost:4001/graphql 上运行,它们之间的通信没有失败。应用程序中一切正常(启用了 CORS),但我想用赛普拉斯实现测试。
我是否应该期望 Cypress 能够无误地观察 React 和 GraphQL 之间的流程?或者这超出了它的能力范围?
我尝试过的: 我设置了赛普拉斯并运行了以下测试:
it("Opens myPlan.", function() {
cy.visit("localhost:3000/myPlan");
cy.wait(6000);
});
在第一次赛普拉斯设置时,我的网站已加载。该应用程序所做的第一件事是 graphql 查询一些值,并根据这些值创建一个下拉框。虽然这个和所有其他 graphql 请求在浏览器中都可以正常工作,但我"{"graphQLErrors":[],"networkError":{"name":"ServerParseError","response":{},"statusCode":404,"bodyText":""},"message":"Network error: Unexpected end of JSON input"}"
在 cypress 中遇到相同代码的错误。
据推测,问题是因为有 2 个端点,而 cy.visit 只允许一个。我尝试禁用 ChromeWebSecurity 并尝试了“Access-Control-Allow-Origin-master”插件。
编辑:我找到了认识赛普拉斯的人,他们建议添加:
"proxy": "http://localhost:4001/",
到我的反应客户端配置。这避免了多端口问题,并且赛普拉斯工作。