Cypress和auth应用程序,带有节。你能调用共享测试(即登录)吗?

Cypress和auth应用程序,带有节。你能调用共享测试(即登录)吗?,cypress,Cypress,我对柏树不熟悉。假设我有以下结构。每个都应该在真空中运行,但它们都需要登录。我知道我可以创建一个用于登录的“命令”。但是假设我有一个测试,ala login.spec.js 它所做的只是登录用户并重定向。太好了 但是,在那之后,不同的开发人员会希望在特定的域中运行他们自己的测试。但是他们都需要登录,所以不要总是创建相同的测试。。有没有办法“共享”一个测试,然后继续进行他们感兴趣的测试 例如:**文件夹名称** **Integration** login.spec.js **CreateP

我对柏树不熟悉。假设我有以下结构。每个都应该在真空中运行,但它们都需要登录。我知道我可以创建一个用于登录的“命令”。但是假设我有一个测试,ala login.spec.js

它所做的只是登录用户并重定向。太好了

但是,在那之后,不同的开发人员会希望在特定的域中运行他们自己的测试。但是他们都需要登录,所以不要总是创建相同的测试。。有没有办法“共享”一个测试,然后继续进行他们感兴趣的测试

例如:**文件夹名称**

**Integration**
  login.spec.js
  **CreateProduct**
     index.spec.js
  **PurchaseProduct** // <-- I want to run this, BUT with login.spec.js too as a before hook.
     index.spec.js
  etc...
**集成**
login.spec.js
**创造产品**
index.spec.js

**PurchaseProduct**/您知道可以创建登录命令。有什么理由不这样做吗

如果您还没有,我建议您观看Cypress的创始人Brian Mann在上引用的演示。请找到下面两个与您的问题相关的部分

  • 存根请求实际上不进行身份验证
  • 或数据库中的静态用户
  • 或由测试创建的动态用户

(9分钟后)我们不必使用,您也不应该使用UI来 建立状态


您知道您可以为登录创建一个命令。有什么理由不这样做吗

如果您还没有,我建议您观看Cypress的创始人Brian Mann在上引用的演示。请找到下面两个与您的问题相关的部分

  • 存根请求实际上不进行身份验证
  • 或数据库中的静态用户
  • 或由测试创建的动态用户

(9分钟后)我们不必使用,您也不应该使用UI来 建立状态


是的,
Cypress
支持在UI中创建和重用操作和状态,例如在测试前注册和登录

但是,
Cypress
,通过
cy.request()
可以比用户更有效地控制浏览器的状态,使测试更简单、更快、更可靠

查看下面的示例,其中
cy.request
用于在服务器上创建/读取状态

命令/index.js
中:

Cypress.Commands.add('login',(用户)=>{
cy.request('POST',`${apirl}/users/login',user)
})
Cypress.Commands.add(“寄存器”,(用户)=>{
cy.request('POST',`${apirl}/users/register',user)
})
Cypress.Commands.add('getUser',(用户名)=>{
返回cy.request('GET',`${apirl}/users/${username}`)
})
register.spec.js
中:

it('可以注册',()=>{
常量用户={
名字:“杰克”,
电邮:'jake@jake.com',
密码:“12345”
}
cy.visit(“/register”)
cy.get('input[name=“name”]”)。类型(user.name)
cy.get('input[name=“email”]”)。键入(user.email)
cy.get('input[name=“password”]”)。键入(user.password)
cy.get('input[name=“password confirm”]”)。键入(user.password)
cy.get('input[type=“submit”]”)。单击()
//确保注册页面在注册后发送给您/主页
cy.url()应该('contain','/home'))
//期望来自服务器的用户与来自测试的用户匹配
cy.getUser(user.name)
.then((dbUser)=>expect(dbUser).to.deep.eql(user))
})
login.spec.js
中:

it('可以登录',()=>{
常量用户={
姓名:'简',
电邮:'jane@jane.com',
密码:“12345”
}
//带输出用户界面的寄存器
cy.register(用户)
cy.visit(“/login”)
cy.get('input[name=“name”]”)。类型(user.name)
cy.get('input[name=“password”]”)。键入(user.password)
cy.get('input[type=“submit”]”)。单击()
//确保登录页面在登录后将您发送回家
cy.url()应该('contain','/home'))
})
userSettings.spec.js
中:

it('可以更改电子邮件',()=>{
常量用户={
姓名:'简',
电邮:'jane@jane.com',
密码:“12345”
}
//不带用户界面注册和登录
cy.register(用户)
cy.login(用户)
cy.visit(“/settings”)
cy.get('input[name=“email”]”)。键入('UpdatedEmail@jane.com')
cy.get('input[type=“submit”]”)。单击()
cy.getUser(user.name)
.then((dbUser)=>expect(dbUser.email).to.eql('UpdatedEmail@jane.com'))
})

是,
Cypress
支持在UI中创建和重用操作和状态,例如在测试前注册和登录

但是,
Cypress
,通过
cy.request()
可以比用户更有效地控制浏览器的状态,使测试更简单、更快、更可靠

查看下面的示例,其中
cy.request
用于在服务器上创建/读取状态

命令/index.js
中:

Cypress.Commands.add('login',(用户)=>{
cy.request('POST',`${apirl}/users/login',user)
})
Cypress.Commands.add(“寄存器”,(用户)=>{
cy.request('POST',`${apirl}/users/register',user)
})
Cypress.Commands.add('getUser',(用户名)=>{
返回cy.request('GET',`${apirl}/users/${username}`)
})
register.spec.js
中:

it('可以注册',()=>{
常量用户={
名字:“杰克”,
电邮:'jake@jake.com',
密码:“12345”
}
cy.visit(“/register”)
cy.get('input[name=“name”]”)。类型(user.name)
cy.get('input[name=“email”]”)。键入(user.email)
cy.get('input[name=“password”]”)。键入(user.password)
cy.get('input[name=“password confirm”]”)。键入(user.password)
cy.get('input[type=“submit”]”)。单击()
//确保注册页面在注册后发送给您/主页
cy.url()应该('contain','/home'))
//花费