小编Dr *_*man的帖子

Cypress 会话行为的说明

我很困惑赛普拉斯如何将测试会话清除为空白页,和/或如何testIsolation:false工作。Cypress 允许可重用​​的测试命令和会话,如下所示:

Cypress.Commands.add('signin', (email, password) => {
  cy.session([email, password], () => {
    cy.visit('/'); // ???

    cy.get('[data-test=signin-input-email]').type(email);
    cy.get('[data-test=signin-input-password]').type(password);
    cy.get('[data-test=signin-submit]').click();

    // Assert successful login
    cy.get('[data-test=auth-card').contains(email);
  });
});
Run Code Online (Sandbox Code Playgroud)

在测试中使用这样的命令/会话时,会出现一些意外的行为。例如,下面的测试会出错,因为“导航到 about:blank 已清除页面”;但为什么当它被编程时会这样做呢cy.visit('/')?

describe('signin', () => {
  it('submits signin form with valid data', () => {
    cy.signin('valid.email@example.com', 'validpassword123');
    // Assert successful login
    cy.get('[data-test=auth-card').contains('Valid Email');
  });

  it('signs out', () => {
    cy.signin('valid.email@example.com', 'validpassword123');
    cy.get('[data-test=auth-menu]').click();
    cy.contains('Sign out').click();
    cy.get('[data-test=signin-input-email]').should('exist');
  });
});
Run Code Online (Sandbox Code Playgroud)

此外,如果我修改测试以使用该{ testIsolation: false }选项,第二个测试将失败,因为未执行登录。我怎样才能更好地编写这些命令或测试以获得预期的行为?

cypress

1
推荐指数
1
解决办法
385
查看次数

标签 统计

cypress ×1