我很困惑赛普拉斯如何将测试会话清除为空白页,和/或如何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