Estoy tratando de usar un objeto de página en Cypress, quiero tener mis selectores en el mismo archivo para poder reutilizarlos en múltiples funciones y solo necesito cambiarlos en un lugar si necesitan actualizarse.
Aquí hay un ejemplo simple:
class HomePage { searchLink = "a[class='search button']"; clickSearchLink() { cy.get(this.searchLink).click(); } } export const homePage = new HomePage();Esto funciona bien, mi prueba puede llamar a las funciones, por ejemplo, homePage.clickSearchLink() pero tengo dos problemas:
e2e/page-objects/home-page.js 2:14 error Error de análisis: Token inesperado =
¿Es posible tener mis selectores en esta clase y aún así pasar la pelusa?
Si cambia el objetivo de TypeScript a es6/es2015, puede usar campos privados.
Características de la clase privada
Características de la clase privada
Los campos de clase son públicos de forma predeterminada, pero los miembros de clase privada se pueden crear utilizando un prefijo hash #. El propio JavaScript impone la encapsulación de privacidad de estas características de clase.
Para el error ESLint, agregue un constructor.
class HomePage { #searchLink: string; constructor() { this.#searchLink = "a[class='search button']"; } clickSearchLink() { cy.get(this.#searchLink).click(); } } export const homePage = new HomePage();/cypress/tsconfig.json
{ "extends": "../tsconfig.json", "compilerOptions": { "target": "es6", ... }, "include": ["**/*.ts"] }