首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cypress在钩子之前在每个it语句之后重复

Cypress在钩子之前在每个it语句之后重复
EN

Stack Overflow用户
提问于 2020-09-17 05:40:18
回答 1查看 74关注 0票数 0

我对cypress是个新手,当使用之前的钩子转到url时,它完成了第一个it语句,然后它再次执行之前的钩子,并执行第二个it语句,一旦执行完it语句,它就应该执行之前的钩子并停止。然而,这并不是正在发生的事情,我需要帮助,请看看我做错了什么。我的代码如下:

代码语言:javascript
复制
import { expect, assert, should } from 'chai';
import LoginPage from '../page-objects/LoginPage.spec'
import BeHomePage from '../page-objects/BeHomePage.spec'

    describe('create, edit, delete Survey', () => {

        before(function() {
            cy.visit(''); // see config json for base url
        })

        it('user can login to boardeffect', () => {          
            LoginPage.getLoginUserName().type(Cypress.env('username'));
            LoginPage.getLoginUserPassword().type(Cypress.env('password'));
            LoginPage.getSigninButton().click();
        })

        it('user can navigate to collaborate', () => {
            BeHomePage.getAutoBeWorkroom().should('be.visible');
            BeHomePage.getAutoBeWorkroom().click();
            BeHomePage.getCollaborate().should('be.visible');
            BeHomePage.getCollaborate().click();
           cy.wait(10000)
        })

    })

{
    "baseUrl": "https://automation-ozzie.boardeffect.com/login",
    "defaultCommandTimeout": 15000,
    
    "env": {
        "username": "steveSystem",
        "password": "Passw0rd"
      }

}

类BeHomePage {

代码语言:javascript
复制
getAutoBeWorkroom() {
    return cy.get(':nth-child(7) > a')
}

getCollaborate(){
    return cy.get('.workroom-buttons > :nth-child(4) > a')
}

getNewSurvey(){
    return cy.get('btn btn-success')
}

}导出默认的新BeHomePage();

如下图所示,一个( it )块中的所有代码都通过了,但如上所述,2it块中的代码失败了。

enter image description here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-18 21:18:02

您需要的额外步骤将在docs Cookies - Preserve Once的这一节中讨论。

Cypress自动清除每个it()之间的cookie,但如果您添加

代码语言:javascript
复制
it('user can login to boardeffect', () => {          
  LoginPage.getLoginUserName().type(Cypress.env('username'));
  LoginPage.getLoginUserPassword().type(Cypress.env('password'));
  LoginPage.getSigninButton().click();

  // preserve the cookie set above for the next test
  Cypress.Cookies.preserveOnce('_boardeffect_session'); 
})

在后续it()部分中,它将保留该Cookie值。

打开浏览器开发工具,转到应用程序、cookie、https://automation-ozzie.boardeffect.com,并观察到在没有preserveOnce()的情况下Cookie值已清除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63928309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档