当我使用 cypress 时,如何阻止网站自动注销我?

Bra*_*mer 6 javascript cypress

我正在使用 cypress 在我公司的网站上进行自动化测试,登录后,单击任何交互式元素都会立即将我注销。然而,这只是当我通过赛普拉斯运行它时。手动点击仍然有效。我可以做什么来解决这个问题?

这是一个用 javascript 构建的网站。

我希望该网站不会将我注销。

describe('signing in', function() {
    it('Visits the safe and reliable sign-in page', function() {
        cy.visit('https://testing.safeandreliable.care/sign-in') 
        cy.get('[id="at-field-username_and_email"]').type('bcramer@safeandreliablecare.com')
        cy.get('[id="at-field-password"]').type('******')
        cy.contains('Sign In').click()
  })
  it('signs into the default entity', function(){
      cy.get('[id="help-text-board"]').click({force:true})
      cy.wait(9000)
  })
})
Run Code Online (Sandbox Code Playgroud)

Mr.*_* J. 4

您应该知道的是,Cypress 每次启动新的 .NET 浏览器时都会清除浏览器的状态it()。因此,在第一个中所做的事情it()现在在第二个中已经不存在了it()。在您的情况下,登录是在第一个它,在第二个它应用程序不再登录。为了确保 Cypress 保持登录状态,您应该将登录步骤移至 abefore()或 a beforeEach()(取决于您是想每个描述还是每个它登录一次。

在您的帖子之后,您似乎喜欢登录一次并保持登录状态,因此它before()可以为您完成这项工作。你的代码看起来像这样:

describe('signing in', function() {
  before('Logijn to the application', function() {
    cy.visit('https://testing.safeandreliable.care/sign-in')
    cy.get('[id="at-field-username_and_email"]').type('bcramer@safeandreliablecare.com')
    cy.get('[id="at-field-password"]').type('******')
    cy.contains('Sign In').click()
  })
  it('signs into the default entity', function(){
    cy.get('[id="help-text-board"]').click({force:true})
    cy.wait(9000)
  })
  it('next test', function () {
    // do other test but still logged in
  })
})
Run Code Online (Sandbox Code Playgroud)