问题标签 [cypress]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firebase - 是否可以将 Cypress e2e 测试与 firebase auth 项目一起使用?
我正在探索赛普拉斯进行 e2e 测试,看起来很棒的软件。问题是身份验证,赛普拉斯文档解释了为什么在这里使用 UI 非常糟糕。
所以我尝试查看我的应用程序的网络分接头,看看我是否可以创建一个对 firebase API 的 POST 请求,并在不使用 GUI 的情况下进行身份验证。但我可以看到至少有 2 个请求被触发,并且令牌保存到应用程序存储中。
那么我应该使用什么方法呢?
- 使用我的应用程序的 UI 进行身份验证,并指示赛普拉斯不要接触本地存储
- 继续尝试发送正确 POST 请求的方法,并将值保存到本地存储。
- 让 Cypress 运行自定义 JS 代码,然后使用 Firebase SDK 登录。
我真的在这里寻找一些建议:)
cucumber - Cypress.io 如何构建复杂的测试
我想在我的公司从黄瓜转到柏树。原因是我们正在缓慢地转向 SPA 方法,我们有很多问题,黄瓜(高度定制)不知道如何正确测试(不知道应用程序何时加载),我们花了很多时间只是为了解决每个测试的问题。应用程序真的很大,现在我们有数千个用黄瓜编写的测试。
所以我们的用例在我们实际测试之前需要多个操作。示例路径
1)注册新用户(唯一用户需要有电子邮件,名字和姓氏)
2)创建新报价(多步骤报价创建机制,上传图片等)
3)在这里我们可以真正开始做一些事情
所以这个提议和用户创建需要在每个文件之前执行(在某些情况下,我们需要超过 1 个用户和超过 1 个提议,具体取决于测试)
在黄瓜中,我们已经编写了所有这些机制。但是如何在柏树中构造它呢?
我们是否应该创建单独的文件夹,例如。我们可以称之为的行动?(这意味着我们将这些动作作为函数)。
我不是 e2e 测试员(我是 JS 开发人员),但由于所有的 QA 都没有了,我有责任维护和支持 e2e 测试。
reactjs - 如何在使用 Firebase 进行社交登录的反应应用程序中使用赛普拉斯测试经过身份验证的页面?
当我需要在经过身份验证的页面上测试某些内容时,我在钩子之前使用以下内容:
user.1
是从“../fixtures/testUsers”导入的,我在其中复制并粘贴了浏览器存储中的键和值对。
要获取键值对,我使用社交帐户登录,然后Application
在开发工具中打开选项卡,Local Storage
在左侧面板中打开,然后复制其中包含字符串的键和值firebase:authUser...
。
有用。
更重要的是,它让我可以使用两个不同的帐户登录,获得两组不同的用户密钥,然后在我的测试中模拟它们之间的交互。
但至少可以说,这感觉很hacky。
这种方法有什么问题吗?有没有“正确”的方法来做到这一点?
angular - 如何在 CI 中运行 cypress 之前提供 angular cli 应用程序?
我正在尝试将 Cypress 与 Angular (v. 5) CLI 应用程序一起使用。
测试在本地运行时运行良好,因为在这里我可以在运行 cypress 测试之前启动 serve 命令。
我尝试按照此处的文档进行操作,但似乎没有任何命令有效。
我尝试了各种组合,如下所示:
提前致谢。
django - 以编程方式使用 Cypress.io 登录 Django 服务器(不使用 UI)
必须遗漏一些明显的东西,但由于其 CSRF 保护,我非常坚持登录 Django。
我查看了使用 cy.getCookie() 来测试使用 HTML Web 表单登录的示例食谱,但如果它推荐的第一件事是禁用 CSRF,那真的没有多大帮助。
Django想要什么:
这是一个正常的、受 CSRF 保护的 Django 登录视图在其传入的 POST 数据中所期望的:
它没有在请求标头中查找 CSRF,也没有x-csrf-token
在响应标头上进行设置。
而且,使用我的代码,我永远不会传入让 Django 返回 403 错误的 csrf 令牌。
赛普拉斯的错误:
我怀疑 POST 数据与undefined
通过隐藏表单输入或 cookie 获取方法的令牌有关,如console.log
for 所示。
现在,我已经开始查看https://github.com/cypress-io/cypress-example-recipes/tree/master/examples/logging-in__csrf-tokens我想我应该能够调整策略 #1 :从 HTML 解析令牌以获取,$("input[name='csrfmiddlewaretoken']").value
但我希望有人以前做过。
我的另一个想法是有条件地向 Django 添加一个请求中间件,该中间件将从请求标头中获取 csrftoken 并在丢失时注入 POST 表单数据。如果我将它插入到 CSRF 之前触发,那会起作用吗?
最后,我打算将sessionid
令牌排除在重置之外,这样我就可以在登录一次后运行多个测试。
env:Django 1.10,cypress 1.4.2,现在升级到 2.0.0,同样的问题。
javascript - 使用赛普拉斯处理悬停在菜单上
我最近偶然发现了 e2e 工具 - Cypress.io。我目前正在为与我合作的公司进行 POC,以对 react 应用程序进行 e2e 测试。就像现在大多数网络应用程序一样,它有一个悬停在菜单上的功能。
一个例子 :
网址:Fmovies
我试图从这个悬停中单击一个菜单项,但测试失败,说display
设置为none
.
在 Selenium 中,我们使用该moveElement
方法去到这个元素,然后做我们需要做的任何事情。但是,我没有使用赛普拉斯这样做。
考虑到当前的菜单,我写了这个
javascript - 赛普拉斯:测试元素是否不存在
我希望能够单击一个复选框并测试一个元素不再在赛普拉斯的 DOM 中。有人可以建议你怎么做吗?
我想做与上面测试相反的事情。因此,当我再次单击它时,具有该类的 div 不应该在 DOM 中。
cypress - 由于无效的 csrf 导致登录请求失败
我正在测试 keystonejs ( http://demo.keystonejs.com/ ) 的登录页面,并且无法通过 cypress 获得成功的请求。没有 cypress 的登录请求具有以下请求标头:
而带有 cypress 测试的请求具有以下请求标头:
我能看到的唯一区别是 cookie 没有在 cypress 测试请求中设置。因此,请求得到 403。我实际上使用的是该服务器的本地版本,其中我将电子邮件/密码配置为图像中的那个。演示站点使用该页面中提供的不同集合。
测试很简单:
无论如何要解决这个问题?