Así que estoy tratando de agregar un comando personalizado en cypress (archivo commands.js) así:
Cypress.Commands.add("login", (email, password) => { cy.intercept('POST', '**/auth').as('login'); cy.visit('/auth'); cy.get('[formcontrolname="email"]').type(email); cy.get('[formcontrolname="password"]').type(password); cy.get('form').submit(); cy.wait('@login').then(xhr => { expect(xhr.request.body.email).to.equal(email); expect(xhr.request.body.password).to.equal(password); }); });pero me sale este error:
'La cadena de tipo de argumento no se puede asignar al tipo de parámetro keyof Chainable ... La cadena de tipo no se puede asignar al tipo "y" | "como" | "seleccionararchivo" | "desenfoque" | "verificar" | "niños" | "claro" | "cookieclara" | "cookiesclaras" | "clearLocalStorage" | "hacer clic" | ... La cadena de tipo no se puede asignar al tipo "interceptar"'
Encontré esta pregunta La cadena de tipo de argumento no se puede asignar a la clave de tipo de parámetro de Chainable... en Cypress , pero las respuestas aquí solo son aplicables para un archivo index.d.ts, sin embargo, tengo un archivo index.js (versión Cypress 10.3.0 y esto no me funciona ¿Alguien puede ayudarme a resolver este problema?
No debe mezclar .js y .ts en un proyecto de TypeScript.
Haga todo .ts , luego agregue index.d.ts con una definición de tipo para su comando personalizado.
/// <reference types="cypress" /> declare namespace Cypress { interface Chainable<Subject = any> { login(): Chainable<any>; } } Puede tener más problemas, por ejemplo, verifique si tiene un tsconfig.json en la carpeta /cypress .
En caso de duda, use cypress-realworld-app como referencia para la configuración de Typescript.