如何在柏树中制作可链接的命令?

How to make a chainable command in cypress?

假设我有一个可变的用户名。

现在,我的可链接函数想要检查用户名是否为空。

之前:

if(username !== "") {
   cy.get('#username').type(username)
}

之后(预期):

cy.get('#username').type(username).ifNotEmpty()        //ifNotEmpty will be my chainable func

所以我的问题是这可能吗?如果是,那又如何?

您可以添加自定义 Cypress 命令来实现此目的。这些被称为 child commandsMore information here.

Cypress.Commands.add('ifNotEmpty', { prevSubject: true }, (subject) => {
  // code
})

您可能只想做一个 .type() 变体

Cypress.Commands.add('typeIfNotEmpty', { prevSubject: true }, (subject, textToType) => {
  if (textToType) {
   cy.wrap(subject).type(textToType)
  }
  return subject  // allow further chaining
})

cy.get('#username')
  .typeIfNotEmpty(username)
  .should(...)               // some assertion on '#username' element