¿Cómo puedo organizar mejor mi código de Cypress para realizar pruebas de modo que solo necesite importar algunas funciones?
Quiero comenzar creando un archivo en el que autenticarme en la página, y luego quiero importarlo en una prueba con varias funciones.
Probé el siguiente código de exportación y parece haber sido incorrecto, con errores:
export function login() { cy.visit('https://*********') cy.get('input[name="Parameter.UserName"]').type('*****') cy.get('input[name="Parameter.Password"]').type('*****') cy.contains('Login').click() } export default {login};Y en prueba:
import {login} from 'elements/pages/login.js'Su importación necesita una URL relativa
import {login} from '../elements/pages/login.js' // relative from cypress/integration o si bajo cypress/suport/elements
import {login} from '../support/elements/pages/login.js' Se supone que las importaciones absolutas (donde la ruta no tiene ./ o ../ iniciales) son paquetes de biblioteca en node_modules .
Cypress proporciona algo llamado comandos personalizados para este propósito, puede leer sobre esto aquí .
Vaya a cypress/support/commands.js y escriba todo su código aquí como:
Cypress.Commands.add('login', () => { cy.visit('https://*********') cy.get('input[name="Parameter.UserName"]').type('*****') cy.get('input[name="Parameter.Password"]').type('*****') cy.contains('Login').click() })Y luego, en cualquiera de sus pruebas, puede agregar directamente:
cy.login()todos los cys deben ejecutarse en el contenido de prueba, tal vez puedas intentarlo así:
export default { // props visit: (url)=> { return cy.visit(url) } get: (el)=> { return cy.get(el) } // methods login(){ cy.visit('https://*********') cy.get('input[name="Parameter.UserName"]').type('*****') cy.get('input[name="Parameter.Password"]').type('*****') cy.contains('Login').click() } }