Sé que el equipo de Cypress recomienda usar acciones en lugar de objetos de página, entonces, ¿cuál sería la mejor opción cuando se tiene que reutilizar un elemento?
No quiero actualizar un selector en muchos lugares, así que elegí esta opción:
Cypress.Commands.add('getStartDateInput',() => cy.get('input[t-selector="startDate"]');Entonces, si tengo que interactuar con este elemento en otros lugares, simplemente llamaré a esta nueva acción. Aunque esto me está llevando a tener muchas acciones 'mini' nuevas como esta en mi archivo de comandos solo para no tener que actualizar los selectores en muchos lugares.
¿Lo estoy haciendo bien? ¿Alguna otra sugerencia?
Utilizo una forma de JavaScript muy simple para administrar y reutilizar mis localizadores. También puede usar esto si funciona con su caso de uso.
Paso 1: Cree una carpeta pageObject (la creé dentro de la carpeta de integración) y dentro de eso cree un archivo js. Nombraremos esto como selectors.js . Dentro del archivo selectors.js, escribe todos tus selectores así:
export default { toDoBtn: 'button[type="submit"]', starteDate: 'input[t-selector="startDate"]', input: 'form > input', listItems: 'ul > li' }; Paso 2: ahora importa este archivo a tu archivo de especificaciones usando el comando de import .
import selectors from './pageObject/selectors.js';Y luego en tu prueba puedes usar:
cy.get(selectors.starteDate).should('be.visible')