Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

208
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda