网站搜索

typescript - Cypress 10:自定义命令不是一个函数


我有这个错误,cy. 不是一个函数:

但是我已经用这个更新了 e2e.ts:

import './commands';

这是我的 commands.ts:

    declare namespace Cypress {
  interface Chainable<Subject = any> {
    login(email: string, password: string): typeof login;
  }
}
//
function login(email: string, password: string): void {
  cy.visit('/login');
  cy.url().should('includes', 'login');
  cy.contains('Please sign in');
  cy.get('[name=email]').type(email);
  cy.get('[name=password]').type(password);
  cy.get('button').click();
}
//
// NOTE: You can use it like so:
Cypress.Commands.add('login', login);

我这里漏了什么?

谢谢

答案#1

我认为你需要在类型定义周围添加 declare global {。

declare global {
  declare namespace Cypress {
    interface Chainable<Subject = any> {
      login(email: string, password: string): typeof login;
    }
  }
}

查看如何在四个步骤中轻松设置 Cypress 上的 TypeScript,以便进行一个相对直接的讨论。


另见如何为 Cypress 自定义命令声明类型以获取替代方法。