Как заставить Cypress печатать в vscode
У меня тоже были проблемы с получением Cypress intellisense.Мой способ получения intellisense извилистый и, вероятно, неправильный, но я не смог заставить его работать каким-либо другим способом.
- добавить файл
cypress.d.ts
в корень моего проекта со следующими типамисинтаксис.Это объявляет тип cy
, так что вы получаете автозаполнение для большинства материалов Cypress:
declare var Cypress: any;
interface CypressElement {
type(value: string, options?: any): CypressElement,
clear(options?: {force: boolean}): CypressElement,
click(options?: {force: boolean}): CypressElement,
should(...args: any): CypressElement,
selectValue(option: number, optionsClass: string):CypressElement,
fillInput(value: string):CypressElement,
eq(index: number): CypressElement,
contains(value: any): CypressElement,
within(...args: any): any,
trigger(...args: any): any;
first(): CypressElement;
}
declare var cy: {
get(select: any): CypressElement;
window(): Promise<any>;
visit(path: any): void;
request(options: any): Promise<any>;
wait(time: string | number): any;
server(): any;
route(...options: any): any;
log(...messages: string[]): any;
contains(selector: string, value: any): any;
stub(...args: any): any;
on(event: string, callback: any): any;
url(): CypressElement;
};
(Объявлять Cypress вручную таким способом кажется в лучшем случае чуждым. Однако при попытке использовать сгенерированные собственныемного проблем)
Ссылка на этот файл в параметрах компилятора tsconf.json
:
"typeRoots": ["cypress.d.ts"],
Это просто позволяет intellisense для Cypress, даже если код кипариса написан на javaScript, поскольку vscode полагается на машинописание для своего механизма intellisense.
Поскольку вы не используете typeScript, я полагаю, возможно, вам придется добавитьочень простой tsconfig
файл в корне (чтобы ваш редактор мог прочитать его конфигурацию), что-то вроде:
{
"compilerOptions": {
"typeRoots": ["cypress.d.ts"],
"target": "es5",
"module": "commonjs",
"lib": [
"es6"
],
"declaration": true,
"removeComments": false,
"stripInternal": true,
// since 2.3
// "strict": true,
"alwaysStrict": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true
},
"files": [
"./index.ts"
]
}
Может быть, вы можете указать своему редактору загружать cypress.d.ts
как typeRoots
, я полагаюне знаю.
После этого у вас должен быть intellisense для вашей переменной cy
и для объектов, полученных из cy.get()
(которые выше называются CypressElement
в определении этого типа).
Одно большое предостережение по этому поводу заключается в том, что всякий раз, когда вы используете новую функцию Cypress, вам нужно вручную добавить ее тип к cypress.d.ts
, чтобы получить значение intellisense.