describe('RouteAutonomous', () => { const getLinkSelector = (colField) => `tr:first-child > [data-col-field="${colField}"] > .no-padding > .link`; const selectors = { reference: 'Reference_input', date: 'tr:first-child > [data-col-field="dated"]', total: '.value > .text-h6', received: getLinkSelector('invoiceInFk'), autonomous: getLinkSelector('supplierName'), firstRowCheckbox: '.q-virtual-scroll__content tr:first-child .q-checkbox__bg', secondRowCheckbox: '.q-virtual-scroll__content tr:nth-child(2) .q-checkbox__bg', createInvoiceBtn: '.q-card > .q-btn', saveFormBtn: 'FormModelPopup_save', summaryIcon: 'tableAction-0', summaryPopupBtn: '.header > :nth-child(2) > .q-btn__content > .q-icon', summaryHeader: '.summaryHeader > :nth-child(2)', descriptorHeader: '.summaryHeader > div', descriptorTitle: '.q-item__label--header > .title > span', summaryGoToSummaryBtn: '.header > .q-icon', descriptorGoToSummaryBtn: '.descriptor > .header > a[href] > .q-btn', }; const data = { reference: 'Test invoice', total: '€206.40', supplier: 'PLANTS SL', route: 'first route', }; const summaryUrl = '/summary'; const dataSaved = 'Data saved'; beforeEach(() => { cy.viewport(1920, 1080); cy.login('developer'); cy.visit(`/#/route/agency-term`); cy.typeSearchbar('{enter}'); }); it('Should list autonomous routes', () => { cy.get('.q-table') .children() .should('be.visible') .should('have.length.greaterThan', 0); }); it('Should create invoice in to selected route', () => { cy.get(selectors.firstRowCheckbox).click(); cy.get(selectors.createInvoiceBtn).click(); cy.dataCy(selectors.reference).type(data.reference); cy.get('.q-file').selectFile('test/cypress/fixtures/image.jpg', { force: true, }); cy.dataCy(selectors.saveFormBtn).click(); cy.checkNotification(dataSaved); cy.typeSearchbar('{enter}'); }); it('Should display the total price of the selected rows', () => { cy.get(selectors.firstRowCheckbox).click(); cy.get(selectors.secondRowCheckbox).click(); cy.validateContent(selectors.total, data.total); }); it('Should redirect to the summary when clicking a route', () => { cy.get(selectors.date).click(); cy.get(selectors.summaryHeader).should('contain', data.route); cy.url().should('include', summaryUrl); }); describe('Received pop-ups', () => { it('Should redirect to invoice in summary from the received descriptor pop-up', () => { cy.get(selectors.received).click(); cy.validateContent(selectors.descriptorTitle, data.reference); cy.get(selectors.descriptorGoToSummaryBtn).click(); cy.get(selectors.descriptorHeader).should('contain', data.supplier); cy.url().should('include', summaryUrl); }); it('Should redirect to the invoiceIn summary from summary pop-up from the received descriptor pop-up', () => { cy.get(selectors.received).click(); cy.validateContent(selectors.descriptorTitle, data.reference); cy.get(selectors.summaryPopupBtn).click(); cy.get(selectors.descriptorHeader).should('contain', data.supplier); cy.get(selectors.summaryGoToSummaryBtn).click(); cy.get(selectors.descriptorHeader).should('contain', data.supplier); cy.url().should('include', summaryUrl); }); }); describe('Autonomous pop-ups', () => { it('Should redirect to the supplier summary from the received descriptor pop-up', () => { cy.get(selectors.autonomous).click(); cy.validateContent(selectors.descriptorTitle, data.supplier); cy.get(selectors.descriptorGoToSummaryBtn).click(); cy.get(selectors.summaryHeader).should('contain', data.supplier); cy.url().should('include', summaryUrl); }); it('Should redirect to the supplier summary from summary pop-up from the autonomous descriptor pop-up', () => { cy.get(selectors.autonomous).click(); cy.get(selectors.descriptorTitle).should('contain', data.supplier); cy.get(selectors.summaryPopupBtn).click(); cy.get(selectors.summaryHeader).should('contain', data.supplier); cy.get(selectors.summaryGoToSummaryBtn).click(); cy.get(selectors.summaryHeader).should('contain', data.supplier); cy.url().should('include', summaryUrl); }); }); describe('Route pop-ups', () => { it('Should redirect to the summary from the route summary pop-up', () => { cy.dataCy(selectors.summaryIcon).first().click(); cy.get(selectors.summaryHeader).should('contain', data.route); cy.get(selectors.summaryGoToSummaryBtn).click(); cy.get(selectors.summaryHeader).should('contain', data.route); cy.url().should('include', summaryUrl); }); }); });