From 38fea35f4f61df8e281ce518cd77a9fe6e9be9f2 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 3 Feb 2025 09:34:23 +0100 Subject: [PATCH] test: refs #6695 handle e2e errors (better cypress config) --- Dockerfile.e2e | 22 ++++++++-------- cypress.config.js | 6 +++++ test/cypress/support/commands.js | 44 +++++++++++++------------------- 3 files changed, 35 insertions(+), 37 deletions(-) diff --git a/Dockerfile.e2e b/Dockerfile.e2e index 109ec5d3e..91269f8d8 100644 --- a/Dockerfile.e2e +++ b/Dockerfile.e2e @@ -2,27 +2,27 @@ FROM node:lts-bookworm ENV SHELL bash ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" -RUN npm install -g pnpm@8.15.1 -RUN pnpm setup +RUN npm install -g pnpm@8.15.1 && \ + pnpm setup -RUN pnpm install -g @quasar/cli@2.2.1 - -RUN apt-get -y --fix-missing update -RUN apt-get -y --fix-missing upgrade -RUN apt-get -y --no-install-recommends install apt-utils -RUN apt-get install --fix-missing -y libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb +RUN apt-get -y --fix-missing update && \ + apt-get -y --fix-missing upgrade && \ + apt-get -y --no-install-recommends install apt-utils libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb && \ + apt-get clean && rm -rf /var/lib/apt/lists/* WORKDIR /app + COPY \ package.json \ .npmrc \ pnpm-lock.yaml \ ./ -RUN pnpm install -RUN pnpm install cypress -RUN npx cypress install +RUN pnpm install && \ + pnpm install -g @quasar/cli@2.2.1 && \ + pnpm install cypress && \ + npx cypress install COPY \ quasar.config.js \ diff --git a/cypress.config.js b/cypress.config.js index 38c50464c..8bf934b29 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -37,6 +37,12 @@ export default defineConfig({ setupNodeEvents: async (on, config) => { const plugin = await import('cypress-mochawesome-reporter/plugin'); plugin.default(on); + // if (process.env.JENKINS_URL) { + // on('fail', (error) => { + // // Detener la ejecución en caso de fallo solo en Jenkins + // throw new Error(error.message); + // }); + // } return config; }, viewportWidth: 1280, diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js index 6a436c1eb..83f6eaab7 100755 --- a/test/cypress/support/commands.js +++ b/test/cypress/support/commands.js @@ -87,34 +87,26 @@ Cypress.Commands.add('getValue', (selector) => { }); // Fill Inputs -Cypress.Commands.add('selectOption', (selector, option, timeout = 5000) => { - cy.waitForElement(selector, timeout); - cy.get(selector).click(); - cy.get(selector).invoke('data', 'url').as('dataUrl'); - cy.get(selector) - .clear() - .type(option) - .then(() => { - cy.get('.q-menu', { timeout }) - .should('be.visible') // Asegurarse de que el menú está visible - .and('exist') // Verificar que el menú existe - .then(() => { - cy.get('@dataUrl').then((url) => { - if (url) { - // Esperar a que el menú no esté visible (desaparezca) - cy.get('.q-menu').should('not.be.visible'); - // Ahora esperar a que el menú vuelva a aparecer - cy.get('.q-menu').should('be.visible').and('exist'); - } - }); - }); - }); +Cypress.Commands.add('selectOption', (selector, option, timeout = 10000) => { + cy.waitForElement(selector, timeout); // Esperar a que el selector sea visible + cy.get(selector).click().invoke('data', 'url').as('dataUrl'); + + // Escribir la opción deseada + cy.get(selector).clear().type(option); + cy.get('.q-menu', { timeout }).should('be.visible').and('exist'); + + // Si hay una URL, espera a que el menú desaparezca y vuelva a aparecer + cy.get('@dataUrl').then((url) => { + if (url) { + cy.get('.q-menu').should('be.visible').and('exist'); + + cy.get('.q-menu').should('not.be.visible'); + cy.get('.q-menu').should('be.visible').and('exist'); + } + }); // Finalmente, seleccionar la opción deseada - cy.get('.q-menu:visible') // Asegurarse de que estamos dentro del menú visible - .find('.q-item') // Encontrar los elementos de las opciones - .contains(option) // Verificar que existe una opción que contenga el texto deseado - .click(); // Hacer clic en la opción + cy.get('.q-menu:visible').find('.q-item').contains(option).click(); }); Cypress.Commands.add('countSelectOptions', (selector, option) => {