在 Cypress 中的多个测试中使用 cy.session

Cod*_*abe 2 javascript cypress cypress-session

在最新版本的 Cypress 中,Cookie 保留已被弃用,因此我希望使用 cy.session。但是,我无法让它在多个测试中工作,因为 cy.session 需要位于测试“it”内,这是我当前如何设置测试的示例。

    beforeEach(() => {
    Cypress.Cookies.defaults({
    preserve: /somecookie|someOtherCookie|AnotherCookie/
    })
   it('Navigate to URL', () => {
        performance.NavigateToUrl(URL);
    });

    it('Login - Username/Pass', () => {
        performance.LoginUserPass();
    });        
    it('Navigate Order Page', () => {
        performance.Orderpage();
    });
     //And so on............
Run Code Online (Sandbox Code Playgroud)

欢迎任何帮助和建议,因为我真的不想重写测试结构,因为我创建了一份关于当前输出/设计的报告。

在所有测试中保留会话

Sim*_*ers 6

通过最近的变化,赛普拉斯正在尝试更多地“强制”测试隔离,而您通过跨不同块的依赖来违背他们的最佳实践it()

更好的方法是根据上下文进行结构

context('before logging in', () => {

   it('Can navigate to home page', () => {
     ...
   })

   it('Can log in', () => {
     ...
   })  
})

context('after logging in', () => {

  beforeEach(() => {
    cy.session('login', () => {
      // do login via cy.request()
      // preserve all browser login data such as cookies, localstorage
    })
  })

  it('Can use order page', () => {
    ...
  })
})
Run Code Online (Sandbox Code Playgroud)

测试隔离标志

页面上有一条注释cy.session()表明您可以关闭测试隔离,但 IMO 中的段落有点模糊

当启用 testIsolation 时,该页面会在设置前清除;当 testIsolation 禁用时,该页面不会被清除。

无论 testIsolation 配置如何,所有域中的 Cookie、本地存储和会话存储在安装程序运行之前始终会被清除。

因此,值得尝试设置- 但根本testIsolation: false不要调用。cy.session()