如何在cypress-cucumber-preprocessor
BDD框架下运行multiple
用户的并行cypress测试?我不能在并行运行中使用单用户,因为最新的会话将kicked out
现有的柏树测试运行和现有的测试运行将失败。
请注意:在我们的web应用程序中,如果用户访问系统并登录到web应用程序并执行一些操作。同时在不同的浏览器中访问系统,并以相同的用户登录。第一个会话将被注销。
我们正在使用
- bitbucket都
- jenkins CI/CD管道 <
- 码头工人容器/gh>
如果你碰巧遇到类似的
自动化文件夹结构:
tests/
cypress/
integration
/folder1/
test1.feature
/folder2/
test2.feature
test3.feature
/folder3/
test4.feature
/folder4/
test5.feature
/folder5/
test6.feature
/folder6/
test7.feature
如果您只需要多个用户,但是测试是完全独立的,那么您可以在一个fixture中拥有多个用户凭据,
例如
// users.json
[
{
userId: 1,
username: 'John',
password: 'abc'
},
{
userId: 2,
username: 'Jack',
password: 'def'
},
... // and so on
]
每个测试将在开始时选择一个不同的用户
// test1
import { Given } from "@badeball/cypress-cucumber-preprocessor";
Given('User has logged in with unique credentials', () => {
before(() => {
cy.fixture('users.json').then(users => {
const user = users[0]
cy.login(user.username, user.password)
})
})
// test2
import { Given } from "@badeball/cypress-cucumber-preprocessor";
Given('User has logged in with unique credentials', () => {
before(() => {
cy.fixture('users.json').then(users => {
const user = users[1]
cy.login(user.username, user.password)
})
})
然后,如果并行运行时测试重叠,服务器会看到不同的用户登录。
或者使用CucumberBefore
钩子
import { Before } from "@badeball/cypress-cucumber-preprocessor";
Before(function () {
cy.fixture('users.json').then(users => {
const user = users[0]
cy.login(user.username, user.password)});
})
})
您可以让每个测试为每个测试创建一个具有适当权限的新用户,使用api运行以更快地执行。您可能需要一个单独的清理过程来删除所有已创建的用户。这样做的好处是为每个测试真正拥有一个干净的状态,而不必担心用户帐户。