diff --git a/test/cypress/integration/ticket/ticketBasicData.spec.js b/test/cypress/integration/ticket/ticketBasicData.spec.js
index b029e0229..4a0ddce7d 100644
--- a/test/cypress/integration/ticket/ticketBasicData.spec.js
+++ b/test/cypress/integration/ticket/ticketBasicData.spec.js
@@ -9,7 +9,7 @@ describe('TicketBasicData', () => {
it('Should redirect to customer basic data', () => {
cy.get('.q-page').should('be.visible');
cy.get(':nth-child(2) > div > .text-primary').click();
- cy.get('[data-cy="Address_select"]').click();
+ cy.dataCy('Address_select').click();
cy.get('.q-btn-group > [data-v-d4506789=""] > .q-btn__content > .q-icon').click();
cy.get(
'[data-cy="CustomerBasicData-menu-item"] > .q-item__section--main',
@@ -25,16 +25,16 @@ describe('TicketBasicData', () => {
cy.get('tr:nth-child(1)>:nth-child(1)>span').should('have.class', 'link').click();
cy.dataCy('ItemDescriptor').should('exist');
cy.get('.q-drawer__content > :nth-child(1) > :nth-child(2) > span').should(
- 'have.text',
- 'Price: €34.40',
+ 'contain.text',
+ 'Price: €',
);
cy.get('.q-drawer__content > :nth-child(1) > :nth-child(3) > span').should(
- 'have.text',
- 'New price: €34.20',
+ 'contain.text',
+ 'New price: €',
);
cy.get('.q-drawer__content > :nth-child(1) > :nth-child(4) > span').should(
- 'have.text',
- 'Difference: €0.20',
+ 'contain.text',
+ 'Difference: €',
);
cy.get(
':nth-child(3) > .q-radio > .q-radio__inner > .q-radio__bg > .q-radio__check',
diff --git a/test/cypress/integration/ticket/ticketComponents.spec.js b/test/cypress/integration/ticket/ticketComponents.spec.js
index f5bfd144d..23dbf8bcd 100644
--- a/test/cypress/integration/ticket/ticketComponents.spec.js
+++ b/test/cypress/integration/ticket/ticketComponents.spec.js
@@ -1,4 +1,5 @@
///
+
describe('TicketComponents', () => {
beforeEach(() => {
cy.login('developer');
@@ -7,61 +8,23 @@ describe('TicketComponents', () => {
});
it('Should load layout', () => {
cy.get('.q-page').should('be.visible');
- /* ==== Generated with Cypress Studio ==== */
- cy.get('.q-scrollarea__content > :nth-child(2) > :nth-child(2)').should(
- 'have.text',
- 'Base to commission: €799.20',
- );
- cy.get('.q-scrollarea__content > :nth-child(2) > :nth-child(3)').should(
- 'have.text',
- 'Total without VAT: €807.20',
- );
- cy.get('.q-scrollarea__content > :nth-child(3) > :nth-child(2)').should(
- 'have.text',
- 'valor de compra: €425.000',
- );
- cy.get('.q-scrollarea__content > :nth-child(3) > :nth-child(4)').should(
- 'have.text',
- 'maná auto: €7.998',
- );
- cy.get('.q-scrollarea__content > :nth-child(4) > :nth-child(2)').should(
- 'have.text',
- 'Price: €5.00',
- );
- cy.get('.q-scrollarea__content > :nth-child(4) > :nth-child(3)').should(
- 'have.text',
- 'Bonus: €1.00',
- );
- cy.get('.q-scrollarea__content > :nth-child(4) > :nth-child(5)').should(
- 'have.text',
- 'Packages: 6',
- );
- cy.get('.q-scrollarea__content > :nth-child(4) > :nth-child(4)').should(
- 'have.text',
- 'Zone: Zone pickup A ',
- );
- cy.get('.q-scrollarea__content > :nth-child(5) > :nth-child(2)').should(
- 'have.text',
- 'Total price: €16.00',
- );
+ cy.validateScrollContent([
+ { row: 2, col: 2, text: 'Base to commission: €799.20' },
+ { row: 2, col: 3, text: 'Total without VAT: €807.20' },
+ { row: 3, col: 2, text: 'valor de compra: €425.000' },
+ { row: 3, col: 4, text: 'maná auto: €7.998' },
+ { row: 4, col: 2, text: 'Price: €5.00' },
+ { row: 4, col: 3, text: 'Bonus: €1.00' },
+ { row: 4, col: 5, text: 'Packages: 6' },
+ { row: 4, col: 4, text: 'Zone: Zone pickup A ' },
+ { row: 5, col: 2, text: 'Total price: €16.00' },
+ ]);
cy.get(':nth-child(4) > .link').click();
cy.dataCy('ZoneDescriptor').should('exist');
- cy.get(':nth-child(1) > [data-col-field="total"]').should(
- 'have.text',
- '€250.000€247.000€4.970',
- );
- cy.get(':nth-child(1) > [data-col-field="import"]').should(
- 'have.text',
- '€50.000€49.400€0.994',
- );
- cy.get(':nth-child(1) > [data-col-field="components"]').should(
- 'have.text',
- 'valor de compramargenmaná auto',
- );
- cy.get(':nth-child(1) > [data-col-field="serie"]').should(
- 'have.text',
- 'costeempresacartera_comercial',
- );
+ cy.getRowCol('total').should('have.text', '€250.000€247.000€4.970');
+ cy.getRowCol('import').should('have.text', '€50.000€49.400€0.994');
+ cy.getRowCol('components').should('have.text', 'valor de compramargenmaná auto');
+ cy.getRowCol('serie').should('have.text', 'costeempresacartera_comercial');
});
});
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index 44e5fe5a1..e18025319 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -1,7 +1,5 @@
///
describe('TicketList', () => {
- const firstRow = 'tbody.q-virtual-scroll__content tr:nth-child(1)';
-
beforeEach(() => {
cy.login('developer');
cy.viewport(1920, 1080);
@@ -11,7 +9,7 @@ describe('TicketList', () => {
const searchResults = (search) => {
if (search) cy.typeSearchbar().type(search);
cy.dataCy('vn-searchbar').find('input').type('{enter}');
- cy.get(firstRow).should('exist');
+ cy.getRow().should('exist');
};
it('should search results', () => {
@@ -24,13 +22,13 @@ describe('TicketList', () => {
cy.window().then((win) => {
cy.stub(win, 'open').as('windowOpen');
});
- cy.get(firstRow).should('be.visible').find('.q-btn:first').click();
+ cy.getRow().should('be.visible').find('.q-btn:first').click();
cy.get('@windowOpen').should('be.calledWithMatch', /\/ticket\/\d+\/sale/);
});
it('should open ticket summary', () => {
searchResults();
- cy.get(firstRow).find('.q-btn:last').click();
+ cy.getRow().find('.q-btn:last').click();
cy.get('.summaryHeader').should('exist');
cy.get('.summaryBody').should('exist');
});
@@ -44,7 +42,7 @@ describe('TicketList', () => {
cy.dataCy('Customer ID_input').type('1101{enter}');
cy.intercept('GET', /\/api\/Clients\?filter/).as('clientFilter');
- cy.get('[data-cy="vnTableCreateBtn"] > .q-btn__content > .q-icon').click();
+ cy.vnTableCreateBtn();
cy.wait('@clientFilter');
cy.dataCy('Customer_select').should('have.value', 'Bruce Wayne');
cy.dataCy('Address_select').click();
@@ -53,8 +51,7 @@ describe('TicketList', () => {
cy.dataCy('Address_select').should('have.value', 'Bruce Wayne');
});
it('Client list create new ticket', () => {
- cy.dataCy('vnTableCreateBtn').should('exist');
- cy.dataCy('vnTableCreateBtn').click();
+ cy.vnTableCreateBtn();
const data = {
Customer: { val: 1, type: 'select' },
Warehouse: { val: 'Warehouse One', type: 'select' },
diff --git a/test/cypress/integration/ticket/ticketNotes.spec.js b/test/cypress/integration/ticket/ticketNotes.spec.js
index 5b44f9e1f..df1ff9137 100644
--- a/test/cypress/integration/ticket/ticketNotes.spec.js
+++ b/test/cypress/integration/ticket/ticketNotes.spec.js
@@ -19,7 +19,7 @@ describe('TicketNotes', () => {
cy.checkNotification('Data saved');
cy.dataCy('ticketNotesRemoveNoteBtn').should('exist');
cy.dataCy('ticketNotesRemoveNoteBtn').click();
- cy.dataCy('VnConfirm_confirm').click();
+ cy.confirmVnConfirm();
cy.checkNotification('Data saved');
});
});
diff --git a/test/cypress/integration/ticket/ticketPackage.spec.js b/test/cypress/integration/ticket/ticketPackage.spec.js
index e7980a413..992efd53b 100644
--- a/test/cypress/integration/ticket/ticketPackage.spec.js
+++ b/test/cypress/integration/ticket/ticketPackage.spec.js
@@ -9,14 +9,13 @@ describe('TicketPackages', () => {
it('Should load layout', () => {
cy.get('.q-page').should('be.visible');
cy.get('.vn-row > .q-btn > .q-btn__content > .q-icon').click();
- cy.get('[data-cy="Package_select"]').click();
+ cy.dataCy('Package_select').click();
cy.get('.q-menu :nth-child(1) >.q-item__section').click();
- cy.get('[data-cy="Quantity_input"]').clear();
- cy.get('[data-cy="Quantity_input"]').type('5');
- cy.get('[data-cy="crudModelDefaultSaveBtn"] > .q-btn__content').click();
+ cy.dataCy('Quantity_input').clear().type('5');
+ cy.saveCrudModel();
cy.checkNotification('Data saved');
cy.get('.q-mb-md > .text-primary').click();
- cy.get('[data-cy="VnConfirm_confirm"] > .q-btn__content > .block').click();
+ cy.confirmVnConfirm();
cy.checkNotification('Data saved');
});
});
diff --git a/test/cypress/integration/ticket/ticketPictures.spec.js b/test/cypress/integration/ticket/ticketPictures.spec.js
index d8f48df32..1165b54bf 100644
--- a/test/cypress/integration/ticket/ticketPictures.spec.js
+++ b/test/cypress/integration/ticket/ticketPictures.spec.js
@@ -9,9 +9,9 @@ describe('TicketPictures', () => {
cy.get(':nth-child(1) > .q-card > .content').should('be.visible');
cy.get('.content > .link').should('be.visible').click();
cy.dataCy('ItemDescriptor').should('exist');
- cy.get('[data-cy="vnLvColor:"]').should('be.visible');
- cy.get('[data-cy="vnLvColor:"]').should('be.visible');
- cy.get('[data-cy="vnLvTallos:"]').should('be.visible');
+ cy.dataCy('vnLvColor:');
+ cy.dataCy('vnLvColor:');
+ cy.dataCy('vnLvTallos:');
cy.get('.q-mt-md').should('be.visible');
cy.get(':nth-child(1) > .q-card > .img-wrapper').should('be.visible');
});
diff --git a/test/cypress/integration/ticket/ticketRequest.spec.js b/test/cypress/integration/ticket/ticketRequest.spec.js
index b9dc509ef..3b237826e 100644
--- a/test/cypress/integration/ticket/ticketRequest.spec.js
+++ b/test/cypress/integration/ticket/ticketRequest.spec.js
@@ -7,8 +7,7 @@ describe('TicketRequest', () => {
});
it('Creates a new request', () => {
- cy.dataCy('vnTableCreateBtn').should('exist');
- cy.dataCy('vnTableCreateBtn').click();
+ cy.vnTableCreateBtn();
const data = {
Description: { val: 'Purchase description' },
Atender: { val: 'buyerNick', type: 'select' },
diff --git a/test/cypress/integration/ticket/ticketSale.spec.js b/test/cypress/integration/ticket/ticketSale.spec.js
index 6d84f214c..97a5aeaf7 100644
--- a/test/cypress/integration/ticket/ticketSale.spec.js
+++ b/test/cypress/integration/ticket/ticketSale.spec.js
@@ -16,9 +16,11 @@ describe('TicketSale', () => {
cy.waitForElement('[data-cy="ticketEditManaProxy"]');
cy.dataCy('ticketEditManaProxy').should('exist');
cy.waitForElement('[data-cy="Price_input"]');
- cy.dataCy('Price_input').clear();
- cy.dataCy('Price_input').type(price);
+ cy.dataCy('Price_input').clear().type(price);
+ cy.intercept('POST', '**/api').as('saveMana');
+
cy.dataCy('saveManaBtn').click();
+ cy.wait('@saveMana').its('response.statusCode').should('eq', 200);
handleVnConfirm();
cy.get('[data-col-field="price"]')
@@ -34,7 +36,10 @@ describe('TicketSale', () => {
cy.waitForElement('[data-cy="Disc_input"]');
cy.dataCy('Disc_input').clear();
cy.dataCy('Disc_input').type(discount);
+ cy.intercept('POST', '**/api').as('saveMana');
+
cy.dataCy('saveManaBtn').click();
+ cy.wait('@saveMana').its('response.statusCode').should('eq', 200);
handleVnConfirm();
cy.get('[data-col-field="discount"]')
@@ -82,12 +87,12 @@ describe('TicketSale', () => {
selectFirstRow();
cy.dataCy('ticketSaleMoreActionsDropdown').click();
cy.dataCy('createClaimItem').click();
- cy.dataCy('VnConfirm_confirm').click();
+ cy.confirmVnConfirm();
cy.url().should('contain', 'claim/');
// Delete created claim to avoid cluttering the database
cy.dataCy('descriptor-more-opts').click();
cy.dataCy('deleteClaim').click();
- cy.dataCy('VnConfirm_confirm').click();
+ cy.confirmVnConfirm();
});
});
describe('Free ticket #31', () => {
@@ -138,8 +143,10 @@ describe('TicketSale', () => {
cy.waitForElement('[data-cy="ticketSaleDiscountInput"]');
cy.dataCy('ticketSaleDiscountInput').find('input').focus();
cy.dataCy('ticketSaleDiscountInput').find('input').type('10');
+ cy.intercept('POST', '**/api').as('saveMana');
+
cy.dataCy('saveManaBtn').click();
- cy.waitForElement('.q-notification__message');
+ cy.wait('@saveMana').its('response.statusCode').should('eq', 200);
cy.checkNotification('Data saved');
cy.dataCy('ticketSaleMoreActionsDropdown').should('be.disabled');
});
@@ -148,7 +155,7 @@ describe('TicketSale', () => {
selectFirstRow();
cy.dataCy('ticketSaleMoreActionsDropdown').click();
cy.dataCy('createClaimItem').click();
- cy.dataCy('VnConfirm_confirm').click();
+ cy.confirmVnConfirm();
cy.checkNotification('Future ticket date not allowed');
});
@@ -194,9 +201,6 @@ function selectFirstRow() {
cy.get(firstRow).find('.q-checkbox__inner').click();
}
function handleVnConfirm() {
- cy.get('[data-cy="VnConfirm_confirm"]').click();
- cy.waitForElement('.q-notification__message');
-
- cy.get('.q-notification__message').should('be.visible');
+ cy.confirmVnConfirm();
cy.checkNotification('Data saved');
}
diff --git a/test/cypress/integration/ticket/ticketService.spec.js b/test/cypress/integration/ticket/ticketService.spec.js
index 4ffc7f731..5bf8e2aab 100644
--- a/test/cypress/integration/ticket/ticketService.spec.js
+++ b/test/cypress/integration/ticket/ticketService.spec.js
@@ -9,17 +9,14 @@ describe('TicketService', () => {
it('Add and remove service', () => {
cy.get('.q-page').should('be.visible');
cy.addBtnClick();
- cy.get('[data-cy="Description_icon"]').click();
- cy.get('[data-cy="Description_input"]').clear();
- cy.get('[data-cy="Description_input"]').type('test');
- cy.get('[data-cy="FormModelPopup_save"] > .q-btn__content > .block').click();
+ cy.dataCy('Description_icon').click();
+ cy.dataCy('Description_input').clear().type('test');
+ cy.saveFormModel();
cy.selectOption('[data-cy="Description_select"]', 'test');
- cy.get('[data-cy="Quantity_input"]').clear('1');
- cy.get('[data-cy="Quantity_input"]').type('1');
- cy.get('[data-cy="Price_input"]').clear('2');
- cy.get('[data-cy="Price_input"]').type('2');
- cy.get('[data-cy="crudModelDefaultSaveBtn"] > .q-btn__content > .block').click();
+ cy.dataCy('Quantity_input').clear().type('1');
+ cy.dataCy('Price_input').clear().type('2');
+ cy.saveCrudModel();
cy.checkNotification('Data saved');
cy.get(':nth-child(5) > .q-icon').click();
});
diff --git a/test/cypress/integration/ticket/ticketTracking.spec.js b/test/cypress/integration/ticket/ticketTracking.spec.js
index 53bf6704e..f351ee0a1 100644
--- a/test/cypress/integration/ticket/ticketTracking.spec.js
+++ b/test/cypress/integration/ticket/ticketTracking.spec.js
@@ -9,11 +9,11 @@ describe('Ticket tracking', () => {
it('Add new tracking', () => {
cy.get('.q-page').should('be.visible');
- cy.firstRow('worker').find('span').should('have.class', 'link').click();
+ cy.getRowCol('worker').find('span').should('have.class', 'link').click();
cy.dataCy('WorkerDescriptor').should('exist');
- cy.get('[data-cy="vnTableCreateBtn"] > .q-btn__content > .q-icon').click();
+ cy.vnTableCreateBtn();
cy.selectOption('.q-field--float [data-cy="State_select"]', 'OK').click();
- cy.get('[data-cy="FormModelPopup_save"] > .q-btn__content > .block').click();
+ cy.saveFormModel();
cy.get(
':last-child > [data-col-field="state"] > [data-cy="vnTableCell_state"]',
).should('have.text', 'OK');
diff --git a/test/cypress/integration/vnComponent/crudModel.commands.js b/test/cypress/integration/vnComponent/crudModel.commands.js
new file mode 100644
index 000000000..9d08f064a
--- /dev/null
+++ b/test/cypress/integration/vnComponent/crudModel.commands.js
@@ -0,0 +1,3 @@
+Cypress.Commands.add('saveCrudModel', () =>
+ cy.dataCy('crudModelDefaultSaveBtn').should('exist').click(),
+);
diff --git a/test/cypress/integration/vnComponent/formModel.commands.js b/test/cypress/integration/vnComponent/formModel.commands.js
new file mode 100644
index 000000000..2814b0091
--- /dev/null
+++ b/test/cypress/integration/vnComponent/formModel.commands.js
@@ -0,0 +1,3 @@
+Cypress.Commands.add('saveFormModel', () =>
+ cy.dataCy('FormModelPopup_save').should('exist').click(),
+);
diff --git a/test/cypress/integration/vnComponent/vnConfirm.commands.js b/test/cypress/integration/vnComponent/vnConfirm.commands.js
new file mode 100644
index 000000000..9f93967d6
--- /dev/null
+++ b/test/cypress/integration/vnComponent/vnConfirm.commands.js
@@ -0,0 +1,3 @@
+Cypress.Commands.add('confirmVnConfirm', () =>
+ cy.dataCy('VnConfirm_confirm').should('exist').click(),
+);
diff --git a/test/cypress/integration/vnComponent/vnTable.commands.js b/test/cypress/integration/vnComponent/vnTable.commands.js
index 15cbf6f9a..6c7e71e13 100644
--- a/test/cypress/integration/vnComponent/vnTable.commands.js
+++ b/test/cypress/integration/vnComponent/vnTable.commands.js
@@ -1,3 +1,16 @@
-Cypress.Commands.add('firstRow', (field, index = 1) =>
- cy.get(`:nth-child(${index}) > [data-col-field="${field}"]`),
+Cypress.Commands.add('getRow', (index = 1) =>
+ cy.get(`.vnTable .q-virtual-scroll__content tr:nth-child(${index})`),
+);
+Cypress.Commands.add('getRowCol', (field, index = 1) =>
+ cy.get(
+ `.vnTable .q-virtual-scroll__content > :nth-child(${index}) > [data-col-field="${field}"]`,
+ ),
+);
+
+Cypress.Commands.add('vnTableCreateBtn', () =>
+ cy.dataCy('vnTableCreateBtn').should('exist').click(),
+);
+
+Cypress.Commands.add('waitTableScrollLoad', () =>
+ cy.waitForElement('[data-q-vs-anchor]'),
);
diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js
index 7ed6ef238..fe0469f9e 100755
--- a/test/cypress/support/commands.js
+++ b/test/cypress/support/commands.js
@@ -429,8 +429,29 @@ Cypress.Commands.add('searchByLabel', (label, value) => {
cy.get(`[label="${label}"] > .q-field > .q-field__inner`).type(`${value}{enter}`);
});
-Cypress.Commands.add('dataCy', (tag, attr = 'data-cy') => {
- return cy.get(`[${attr}="${tag}"]`);
+Cypress.Commands.add('dataCy', (tag, attr = 'data-cy', options = {}) => {
+ let chain = cy.get(`[${attr}="${tag}"]`).should('be.visible');
+
+ // Procesar cada opción y encadenar los comandos correspondientes
+ Object.entries(options).forEach(([key, value]) => {
+ switch (key) {
+ case 'click':
+ if (value) chain = chain.click();
+ break;
+ case 'type':
+ chain = chain.type(value);
+ break;
+ case 'clear':
+ if (value) chain = chain.clear();
+ break;
+ case 'should':
+ chain = chain.should(value);
+ break;
+ // Puedes añadir más casos según necesites
+ }
+ });
+
+ return chain;
});
Cypress.Commands.add('addBtnClick', () => {
@@ -610,7 +631,3 @@ Cypress.Commands.add('checkQueryParams', (expectedParams = {}) => {
}
});
});
-
-Cypress.Commands.add('waitTableScrollLoad', () =>
- cy.waitForElement('[data-q-vs-anchor]'),
-);