typescript - Problem med att ställa in cypress anpassat kommando npm-modul
Ursäkta de stora bilderna, jag vet inte hur man gör dem mindre.
Jag antar att jag går rakt på mitt problem. Jag har följande mappstruktur:
Jag försöker skapa ett repo med egna Cypress-kommandon. Jag har stött på två problem.
För det första, om jag byter namn på commands.ts till index.ts får jag en massa konstiga typningsproblem (även om Chainable returnerar void).
detta är index.d.ts (Chainable här men samma problem med att returnera void):
Om jag byter namn på index.ts till commands.ts igen och försöker bygga det får jag följande problem:
Så ganska många problem här. Jag skulle uppskatta om någon kan vägleda mig genom den här processen.
Svar #1
Följande fungerar för mig, vilket jag tror är det "standard" sättet att lägga till anpassade kommandon i TypeScript.
cypress/support/commands.ts
/// <reference types="cypress" />
declare namespace Cypress {
interface Chainable<Subject = any> {
/**
* Custom command to select DOM element by data-test-id attribute.
* @example cy.getDataTestId('greeting')
*/
getDataTestId(value: string): Chainable<JQuery<Element>>
}
}
Cypress.Commands.add('getDataTestId', (value: string) => {
return cy.get(`[data-test-id="${value}"]`)
})
Anteckningar om ändringar
allt finns i
command.tsinklusive typdefinitionen (se Types för egna kommandon)det finns en
cypress/support/index.tssom importerarcypress/support/commands.tsreturtyp är
Chainable<JQuery<Element>>det anpassade kommandot är inte tilldelat en variabel
Typescript-referens Inkluderar deklarationer i ditt npm-paket
Om ditt paket har en huvud-.js-fil måste du också ange huvuddeklarationsfilen i din package.json-fil. Ställ in egenskapen types så att den pekar på din sammansatta deklarationsfil. Till exempel:
{ "name": "awesome", "author": "Vandelay Industries", "version": "1.0.0", "main": "./lib/main.js", // NOTE .js extension "types": "./lib/main.d.ts" }



