当我尝试使用自定义命令时,Cypress抛出了这个错误:TypeError cy.login不是一个函数,有人知道如何修



我正在进行typescript项目,我正在尝试用柏树编写一些测试

我收到以下错误:TypeErrorcy.login不是一个函数。因为这个错误发生在每次挂钩之前的一个过程中,所以当我尝试调用自定义命令cy.login((时,我们将跳过当前套件中的剩余测试:Dashboard页面

这是自定义命令

//support/index.ts

Cypress.Commands.add("login", (email, password) => {
cy.request("http://localhost:3000/login", {
email,
password,
}).then((r) => {
window.localStorage.setItem("access", r.body.access);
window.localStorage.setItem("refresh", r.body.refresh);
});
});

//cypry/global.d.ts

declare global {
namespace Cypress {
interface Chainable {
/**
* Custom command to select DOM element by data-cy attribute.
* @example cy.dataCy('greeting')
*/
dataCy(value: string): Chainable<Element>;
// login(email: string, password: string): Chainable<Element>;
// login(email: string, password: string, loginOptions?: LoginOptions): void;
login(username: string, password: string): Chainable<string>;
}
}
}

//柏树/e2e/仪表板.spec.cy.ts

describe("Dashboard page", () => {
beforeEach(() => {
cy.login("liban.test10@gmail.com", "password");
});
it("should actually be accessible", () => {
cy.visit("/dashboard");
});
});

由于命名空间声明是在*.d.ts文件类型中完成的,因此新的类型"支持";标识符应该添加到tsconfig.json文件中。

{
"compilerOptions": {
"target": "es5",
"lib": ["es5", "dom"],
"types": ["cypress", "./support"]
},
"include": ["**/*.ts"]
}

通过添加"/支持";对于tsconfig.json文件,它将使TypeScript查找成为给定目录中的声明文件(*.d.ts文件(。

否则,另一种方法是添加:

<reference types="../support"/>

到每个需要新的自定义命令的文件,但这将是非常重复的。

最新更新