Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
Problema con la estructura de carpetas y dependencias

Tengo la siguiente situación inicial:

Nuestras pruebas se refieren a una tienda que está disponible en varios idiomas a través del menú desplegable de países. Dependiendo del país, la tienda tiene diferentes características y, por lo tanto, también diferentes pruebas.

Tengo dos problemas aquí. La primera es la estructura de carpetas.

Para no tener un repositorio separado para cada país, nos gustaría separar las especificaciones de prueba para las tiendas por carpetas. Pero dado que los PageObjects son idénticos, me gustaría definirlos solo una vez, para que las especificaciones de prueba puedan acceder a ellos. Sin embargo, no funciona como lo imagino.

Aquí está mi idea de la estructura de carpetas en Cypress:

 cypress-automation cypress fixtures integration shops shop_de sample-tests.spec.js shop_en sample-tests.spec.js shop_es sample-tests.spec.js plugins index.js support pageObjects samplePageObject.js index.js commands.js node_modules cypress.json package-lock.json package.json

Sin embargo, no funciona porque Cypress pierde los PageObjects. Se produce el siguiente error:

 Error: webpack compilation error ./cypress/integration/shops/shop_en/sample-tests.spec.js Module not found: Error: Unable to resolve '../support/pageObjects/samplePageObject.js' in 'C:\users\users\desktop\cypress-automation\cypress\integration\shops\shop_en'.

El segundo problema se refiere a index.js , allí tengo que agregar un cambio de país en el método beforeEach , porque las URL de las tiendas son idénticas y la tienda solo se puede cambiar a través del menú desplegable. Lamentablemente, no sé cómo integrar index.js en la carpeta de la tienda, de modo que sample-tests.spec.js acceda a un index.js específico en lugar de uno global. Alternativamente, tendría que ajustar el método beforeEach en cada sample-tests.spec.js pero con tantas especificaciones de prueba, lo encuentro poco práctico.

¿Es eso posible, tal como lo imagino?

EDITAR: @Fody

Lo hice exactamente como dijiste. Sin embargo, ahora me sale un error:

 PageObjects_homePage__WEBPACK_IMPORTED_MODULE_1_.HomePage is not a constructor

Aquí hay un ejemplo de mi código de cómo lo incluí:

 import { HomePage } from "@PageObjects/homePage";

el constructor se ve así

 const homePage = new HomePage();

Clase de página de inicio:

 class HomePage { testMethod() { testcode() } } export default HomePage;
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Para la primera parte, configure un alias de paquete web para facilitar la importación desde cualquier lugar en las carpetas de integración, cualquier nivel de anidamiento.

Agregue el paquete Cypress Webpack Preprocessor , siguiendo sus instrucciones

  • npm install --save-dev @cypress/webpack-preprocessor
  • npm install --save-dev @babel/core @babel/preset-env babel-loader webpack - si aún no está instalado

o con hilo

  • yarn add -D @cypress/webpack-preprocessor
  • yarn add -D @babel/core @babel/preset-env babel-loader webpack - si aún no está instalado

ciprés/plugins.index.js

 /// <reference types="cypress" /> const path = require('path'); const webpack = require('@cypress/webpack-preprocessor'); console.log('__dirname', __dirname) // __dirname is cypress/plugins module.exports = (on) => { const options = { webpackOptions: { resolve: { alias: { '@PageObjects': path.resolve(__dirname, '../../cypress/support/pageObjects') }, }, }, watchOptions: {}, }; on('file:preprocessor', webpack(options)); };

cypress/integration/shops/shop_de/sample-tests.spec.js

 // resolves any level of nesting import {MyPageObject} from '@PageObjects/samplePageObject.js' ...

cypress/integration/shops/shop_de/bavaria/sample-tests.spec.jbs

 // same import after move to sub-folder import {MyPageObject} from '@PageObjects/samplePageObject.js' ...
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!