赛普拉斯:嵌套的自定义命令

Cypress: nested custom commands

我正在使用 Cypress 9.5.3 和 Typescript 4.5。

有没有办法分层创建自定义命令?结果我想输入(例如):

cy.loginAs.admin();

目前只能写一个命令:

cy.loginAsAdmin();

VSC 的支持对我也很重要。

编辑 1

我想像这样使用那些嵌套命令:

cy.loginAs.admin();
cy.loginAs.operator();
cy.loginAs.user();

我认为处理此问题的最佳方法是将角色作为参数添加到您的自定义命令中。

Cypress.Commands.add('loginAs', (role: string) => {
  switch (role) {
    case 'Admin':
      // code
    case 'Operator':
      // code
    case 'User':
      // code
    default:
      // code
  }
});

cy.loginAs('admin');
cy.loginAs('operator');
cy.loginAs('user');

如果您知道您的角色数量有限,您可以创建一个枚举。

enum Roles {
  Admin,
  Operator,
  User
}

Cypress.Commands.add('loginAs', (role: Roles) => {
  //code 
})

cy.loginAs(Roles.Admin);
cy.loginAs(Roles.Operator);
cy.loginAs(Roles.User);

使用 switch 语句只是一个建议,但根据流程的不同,使用不同的方法可能会取得更大的成功。