如何使自定义 cypress 命令与 typescript 一起使用

Jac*_*bdo 7 typescript cypress

我已经按照 Cypress 文档中的示例代码设置了以下示例存储库,用于设置项目并将打字稿添加到信中: https: //github.com/jacobdo2/cypress-ts-starter

我在中添加示例命令commands.ts

Cypress.Commands.add("dataCy", (id: string) => cy.get(`[data-cy="${id}"]`));
Run Code Online (Sandbox Code Playgroud)

以及以下声明index.ts

/// <reference types="cypress" />

declare namespace Cypress {
  interface Chainable {
    /**
     * Custom command to select DOM element by data-cy attribute.
     * @example cy.dataCy('greeting')
     */
    dataCy(value: string): Chainable<Element>;
  }
}

Run Code Online (Sandbox Code Playgroud)

我收到以下错误index.ts在此输入图像描述

并在commands.ts

在此输入图像描述

小智 11

您尝试过以下操作吗?

declare global {
  namespace Cypress {
    interface Chainable<Subject> {
      dataCy(value: string): Chainable<Element>;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您应该在声明namespace中添加global。它对我来说是正确的。

我正在使用Cypress v8.7.0Typescript v4.1.3

  • 这解决了它。有一个错误,您收到“全局范围的增强只能直接嵌套在外部模块或环境模块声明中”,为了消除该错误,我需要在索引文件中的某处添加“export {}”。 (7认同)