test: refs #6695 handle e2e errors (better cypress config)
gitea/salix-front/pipeline/pr-dev There was a failure building this commit Details

This commit is contained in:
Alex Moreno 2025-02-03 09:34:23 +01:00
parent e28e5217bd
commit 38fea35f4f
3 changed files with 35 additions and 37 deletions

View File

@ -2,27 +2,27 @@ FROM node:lts-bookworm
ENV SHELL bash ENV SHELL bash
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
RUN npm install -g pnpm@8.15.1 RUN npm install -g pnpm@8.15.1 && \
RUN pnpm setup pnpm setup
RUN pnpm install -g @quasar/cli@2.2.1 RUN apt-get -y --fix-missing update && \
apt-get -y --fix-missing upgrade && \
RUN apt-get -y --fix-missing update 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 && \
RUN apt-get -y --fix-missing upgrade apt-get clean && rm -rf /var/lib/apt/lists/*
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
WORKDIR /app WORKDIR /app
COPY \ COPY \
package.json \ package.json \
.npmrc \ .npmrc \
pnpm-lock.yaml \ pnpm-lock.yaml \
./ ./
RUN pnpm install RUN pnpm install && \
RUN pnpm install cypress pnpm install -g @quasar/cli@2.2.1 && \
RUN npx cypress install pnpm install cypress && \
npx cypress install
COPY \ COPY \
quasar.config.js \ quasar.config.js \

View File

@ -37,6 +37,12 @@ export default defineConfig({
setupNodeEvents: async (on, config) => { setupNodeEvents: async (on, config) => {
const plugin = await import('cypress-mochawesome-reporter/plugin'); const plugin = await import('cypress-mochawesome-reporter/plugin');
plugin.default(on); 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; return config;
}, },
viewportWidth: 1280, viewportWidth: 1280,

View File

@ -87,34 +87,26 @@ Cypress.Commands.add('getValue', (selector) => {
}); });
// Fill Inputs // Fill Inputs
Cypress.Commands.add('selectOption', (selector, option, timeout = 5000) => { Cypress.Commands.add('selectOption', (selector, option, timeout = 10000) => {
cy.waitForElement(selector, timeout); cy.waitForElement(selector, timeout); // Esperar a que el selector sea visible
cy.get(selector).click(); cy.get(selector).click().invoke('data', 'url').as('dataUrl');
cy.get(selector).invoke('data', 'url').as('dataUrl');
cy.get(selector) // Escribir la opción deseada
.clear() cy.get(selector).clear().type(option);
.type(option) cy.get('.q-menu', { timeout }).should('be.visible').and('exist');
.then(() => {
cy.get('.q-menu', { timeout }) // Si hay una URL, espera a que el menú desaparezca y vuelva a aparecer
.should('be.visible') // Asegurarse de que el menú está visible
.and('exist') // Verificar que el menú existe
.then(() => {
cy.get('@dataUrl').then((url) => { cy.get('@dataUrl').then((url) => {
if (url) { if (url) {
// Esperar a que el menú no esté visible (desaparezca) cy.get('.q-menu').should('be.visible').and('exist');
cy.get('.q-menu').should('not.be.visible'); 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'); cy.get('.q-menu').should('be.visible').and('exist');
} }
}); });
});
});
// Finalmente, seleccionar la opción deseada // Finalmente, seleccionar la opción deseada
cy.get('.q-menu:visible') // Asegurarse de que estamos dentro del menú visible cy.get('.q-menu:visible').find('.q-item').contains(option).click();
.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
}); });
Cypress.Commands.add('countSelectOptions', (selector, option) => { Cypress.Commands.add('countSelectOptions', (selector, option) => {