diff --git a/cypress.config.js b/cypress.config.js index ee14c3733..2ceb523c7 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -1,4 +1,5 @@ import { defineConfig } from 'cypress'; +import vitePreprocessor from 'cypress-vite'; // https://docs.cypress.io/app/tooling/reporters // https://docs.cypress.io/app/references/configuration // https://www.npmjs.com/package/cypress-mochawesome-reporter @@ -35,6 +36,7 @@ export default defineConfig({ supportFile: 'test/cypress/support/unit.js', }, setupNodeEvents: async (on, config) => { + on('file:preprocessor', vitePreprocessor()); const plugin = await import('cypress-mochawesome-reporter/plugin'); plugin.default(on); return config; @@ -42,4 +44,13 @@ export default defineConfig({ viewportWidth: 1280, viewportHeight: 720, }, + retries: { + experimentalStrategy: 'detect-flake-and-pass-on-threshold', + experimentalOptions: { + maxRetries: 1, + passesRequired: 1, + }, + openMode: false, + runMode: true, + }, }); diff --git a/package.json b/package.json index 17f39cad7..381aca34c 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "autoprefixer": "^10.4.14", "cypress": "^13.6.6", "cypress-mochawesome-reporter": "^3.8.2", + "cypress-vite": "^1.6.0", "eslint": "^9.18.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-cypress": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31a01e69c..8dd87347b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,6 +76,9 @@ devDependencies: cypress-mochawesome-reporter: specifier: ^3.8.2 version: 3.8.2(cypress@13.17.0)(mocha@11.0.1) + cypress-vite: + specifier: ^1.6.0 + version: 1.6.0(vite@6.0.11) eslint: specifier: ^9.18.0 version: 9.18.0 @@ -3338,6 +3341,18 @@ packages: - mocha dev: true + /cypress-vite@1.6.0(vite@6.0.11): + resolution: {integrity: sha512-6oZPDvHgLEZjuFgoejtRuyph369zbVn7fjh4hzhMar3XvKT5YhTEoA+KixksMuxNEaLn9uqA4HJVz6l7BybwBQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + dependencies: + chokidar: 3.6.0 + debug: 4.4.0(supports-color@8.1.1) + vite: 6.0.11(@types/node@22.10.7)(sass-embedded@1.83.4)(sass@1.83.4) + transitivePeerDependencies: + - supports-color + dev: true + /cypress@13.17.0: resolution: {integrity: sha512-5xWkaPurwkIljojFidhw8lFScyxhtiFHl/i/3zov+1Z5CmY4t9tjIdvSXfu82Y3w7wt0uR9KkucbhkVvJZLQSA==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} diff --git a/test/cypress/integration/vnComponent/VnLocation.spec.js b/test/cypress/integration/vnComponent/VnLocation.spec.js index 751b3a065..4cfcf2184 100644 --- a/test/cypress/integration/vnComponent/VnLocation.spec.js +++ b/test/cypress/integration/vnComponent/VnLocation.spec.js @@ -1,4 +1,4 @@ -const { randomNumber, randomString } = require('../../support'); +import { randomNumber, randomString } from 'test/cypress/support/index.js'; describe('VnLocation', () => { const locationOptions = '[role="listbox"] > div.q-virtual-scroll__content > .q-item'; @@ -40,7 +40,7 @@ describe('VnLocation', () => { cy.selectOption(countrySelector, country); cy.dataCy('locationProvince').type(`${province}{enter}`); cy.get( - `${createForm.prefix} > :nth-child(4) > .q-select > ${createForm.sufix} > :nth-child(3) ` + `${createForm.prefix} > :nth-child(4) > .q-select > ${createForm.sufix} > :nth-child(3) `, ).click(); cy.dataCy('locationProvince').should('have.value', province); }); @@ -87,7 +87,7 @@ describe('VnLocation', () => { .get(':nth-child(1)') .should('have.length.at.least', 2); cy.get( - firstOption.concat(' > .q-item__section > .q-item__label--caption') + firstOption.concat(' > .q-item__section > .q-item__label--caption'), ).should('have.text', postCodeLabel); cy.get(firstOption).click(); cy.get('.q-btn-group > .q-btn--standard > .q-btn__content > .q-icon').click(); @@ -103,7 +103,7 @@ describe('VnLocation', () => { cy.get('.q-card > h1').should('have.text', 'New postcode'); cy.selectOption( `${createForm.prefix} > :nth-child(4) > .q-select > ${createForm.sufix}`, - province + province, ); cy.get(dialogInputs).eq(0).clear(); cy.get(dialogInputs).eq(0).type(postCode); @@ -156,7 +156,7 @@ describe('VnLocation', () => { cy.get(createLocationButton).click(); cy.selectOption( `${createForm.prefix} > :nth-child(5) > :nth-child(3) `, - 'España' + 'España', ); cy.dataCy('Province_icon').click(); diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js index 01f706aff..aa67a9558 100755 --- a/test/cypress/support/commands.js +++ b/test/cypress/support/commands.js @@ -27,7 +27,9 @@ // DO NOT REMOVE // Imports Quasar Cypress AE predefined commands // import { registerCommands } from '@quasar/quasar-app-extension-testing-e2e-cypress'; -Cypress.Commands.add('waitUntil', { prevSubject: 'optional' }, require('./waitUntil')); +import waitUntil from './waitUntil'; +Cypress.Commands.add('waitUntil', { prevSubject: 'optional' }, waitUntil); + Cypress.Commands.add('resetDB', () => { cy.exec('pnpm run resetDatabase'); });