【发布时间】:2019-11-13 17:11:24
【问题描述】:
我有一个非常简单的赛普拉斯测试规范,如下所示:
// integration/connection.ts
describe("First page displayed", function() {
before(() => {
cy.visit("/")
})
it("Is an error page when no token is given", function() {
cy.getByDataAttribute("error-page")
)}
})
现在getByDataAttribute 是一个自定义命令,定义如下:
// support/commands.ts
declare namespace Cypress {
interface Chainable<Subject> {
getByDataAttribute: typeof getByDataAttribute
}
}
/**
* Get a DOM element by targeting its data-cy attribute value
* @param data_target data-cy attribute value to target
*/
function getByDataAttribute(data_target: string) {
return cy.get("[data-cy=" + data_target + "]")
}
Cypress.Commands.add("getByDataAttribute", getByDataAttribute)
如您所见,一切都是用 TypeScript 编写的并且编译良好(我什至为我的自定义命令获取 IntelliSense。)我还有我的 support/index.ts,它只导入命令:
import './commands'
我不知道出了什么问题,但是在运行测试时,赛普拉斯抛出以下错误:
TypeError: cy.getByDataAttribute 不是函数
我的自定义命令以前有效,但当我尝试添加 IntelliSense 时,我开始遇到问题。现在,即使我恢复到香草 JS,该命令也无法识别。我在配置中尝试了很多调整并且不记得我尝试过的所有内容,但我认为现在一切都井井有条并且应该可以工作。但显然不是。
【问题讨论】:
标签: typescript cypress