From 54fa5e49905cd95065b74c0b951a8b24a792118d Mon Sep 17 00:00:00 2001 From: Carlos Jimenez Ruiz Date: Tue, 25 Feb 2020 16:36:29 +0100 Subject: [PATCH] #2137 e2e_snackbar_changes --- e2e/helpers/extensions.js | 3 ++- e2e/paths/02-client/03_edit_fiscal_data.spec.js | 1 + e2e/paths/02-client/05_add_address.spec.js | 10 ++++++++-- e2e/paths/02-client/15_user_config.spec.js | 4 ++-- e2e/paths/02-client/18_contacts.spec.js | 2 +- e2e/paths/04-item/02_basic_data.spec.js | 8 ++++---- e2e/paths/04-item/09_regularize.spec.js | 4 ++-- e2e/paths/04-item/10_item_index.spec.js | 1 + e2e/paths/05-ticket/01-sale/01_list_sales.spec.js | 1 + e2e/paths/05-ticket/12_descriptor.spec.js | 1 + e2e/paths/06-claim/04_claim_action.spec.js | 5 ++++- front/core/components/snackbar/snackbar.js | 6 ++++-- 12 files changed, 31 insertions(+), 15 deletions(-) diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js index 687172a2f7..1e91864d59 100644 --- a/e2e/helpers/extensions.js +++ b/e2e/helpers/extensions.js @@ -323,6 +323,7 @@ let actions = { }, hideSnackbar: async function() { + await this.waitFor(750); // holds up for the snackbar to be visible for a small period of time. await this.evaluate(() => { let hideButton = document.querySelector('#shapes .shown button'); if (hideButton) @@ -408,7 +409,7 @@ let actions = { .includes(searchValue.toLowerCase()); }, {}, builtSelector, searchValue); - await this.waitForMutation(`.vn-drop-down`, 'childList'); + await this.waitForMutation('.vn-drop-down', 'childList'); await this.waitForContentLoaded(); }, diff --git a/e2e/paths/02-client/03_edit_fiscal_data.spec.js b/e2e/paths/02-client/03_edit_fiscal_data.spec.js index ac08b100d8..f7d6cbe920 100644 --- a/e2e/paths/02-client/03_edit_fiscal_data.spec.js +++ b/e2e/paths/02-client/03_edit_fiscal_data.spec.js @@ -160,6 +160,7 @@ describe('Client Edit fiscalData path', () => { }); it('should propagate the Equalization tax changes', async() => { + await page.waitFor(1000); await page.waitToClick(selectors.clientFiscalData.acceptPropagationButton); const result = await page.waitForLastSnackbar(); diff --git a/e2e/paths/02-client/05_add_address.spec.js b/e2e/paths/02-client/05_add_address.spec.js index c10f455b0f..e8c6120f8f 100644 --- a/e2e/paths/02-client/05_add_address.spec.js +++ b/e2e/paths/02-client/05_add_address.spec.js @@ -47,7 +47,7 @@ describe('Client Add address path', () => { expect(result).toEqual('Incoterms is required for a non UEE member'); }); - it(`should receive an error after clicking save button as consignee, incoterms and customsAgent are empty`, async() => { + it(`should receive an error after clicking save button as customsAgent is empty`, async() => { await page.autocompleteSearch(selectors.clientAddresses.incoterms, 'Free Alongside Ship'); await page.waitToClick(selectors.clientAddresses.saveButton); const result = await page.waitForLastSnackbar(); @@ -63,6 +63,12 @@ describe('Client Add address path', () => { expect(result).toEqual('Data saved!'); }); + it(`should navigate back to the addresses index`, async() => { + let url = await page.expectURL('/address/index'); + + expect(url).toBe(true); + }); + it(`should confirm the new address exists and it's the default one`, async() => { const result = await page.waitToGetProperty(selectors.clientAddresses.defaultAddress, 'innerText'); @@ -72,7 +78,6 @@ describe('Client Add address path', () => { it(`should click on the make default icon of the second address`, async() => { await page.waitForContentLoaded(); await page.waitToClick(selectors.clientAddresses.secondMakeDefaultStar); - await page.waitForContentLoaded(); const result = await page.waitForLastSnackbar(); expect(result).toEqual('Data saved!'); @@ -103,6 +108,7 @@ describe('Client Add address path', () => { }); it(`should go back to the addreses section by clicking the cancel button`, async() => { + await page.waitForSelector('#shapes .shown', {hidden: true}); await page.waitToClick(selectors.clientAddresses.cancelEditAddressButton); await page.waitToClick('.vn-confirm.shown button[response="accept"]'); let url = await page.expectURL('address/index'); diff --git a/e2e/paths/02-client/15_user_config.spec.js b/e2e/paths/02-client/15_user_config.spec.js index 193305177c..89d4e004a3 100644 --- a/e2e/paths/02-client/15_user_config.spec.js +++ b/e2e/paths/02-client/15_user_config.spec.js @@ -85,7 +85,7 @@ describe('User config', () => { await page.autocompleteSearch(selectors.globalItems.userLocalCompany, 'VNL'); let result = await page.waitForLastSnackbar(); - expect(result).toEqual('Data saved!'); + expect(result).toContain('Data saved!'); }); }); @@ -125,7 +125,7 @@ describe('User config', () => { await page.clearInput(selectors.globalItems.userConfigThirdAutocomplete); let result = await page.waitForLastSnackbar(); - expect(result).toEqual('Data saved!'); + expect(result).toContain('Data saved!'); }); }); }); diff --git a/e2e/paths/02-client/18_contacts.spec.js b/e2e/paths/02-client/18_contacts.spec.js index 252c5d667c..6ed8a8b825 100644 --- a/e2e/paths/02-client/18_contacts.spec.js +++ b/e2e/paths/02-client/18_contacts.spec.js @@ -32,6 +32,6 @@ describe('Client contacts', () => { await page.waitToClick(selectors.clientContacts.saveButton); let result = await page.waitForLastSnackbar(); - expect(result).toEqual('Data saved!'); + expect(result).toContain('Data saved!'); }); }); diff --git a/e2e/paths/04-item/02_basic_data.spec.js b/e2e/paths/04-item/02_basic_data.spec.js index acc527dcdc..ce56b9a5c1 100644 --- a/e2e/paths/04-item/02_basic_data.spec.js +++ b/e2e/paths/04-item/02_basic_data.spec.js @@ -37,21 +37,21 @@ describe('Item Edit basic data path', () => { const result = await page.waitForLastSnackbar(); expect(result).toEqual('Data saved!'); - }, 20000); + }); it(`should create a new intrastat`, async() => { await page.waitToClick(selectors.itemBasicData.newIntrastatButton); await page.write(selectors.itemBasicData.newIntrastatId, '588420239'); await page.write(selectors.itemBasicData.newIntrastatDescription, 'Tropical Flowers'); - await page.waitToClick(selectors.itemBasicData.acceptIntrastatButton); + await page.waitToClick(selectors.itemBasicData.acceptIntrastatButton); // this popover obscures the rest of the form for aprox 2 seconds + await page.waitFor(2000); await page.waitForTextInField(selectors.itemBasicData.intrastat, 'Tropical Flowers'); let newcode = await page.waitToGetProperty(selectors.itemBasicData.intrastat, 'value'); expect(newcode).toEqual('588420239 Tropical Flowers'); }); - it(`should save with the new intrastat`, async() => { - await page.waitForTextInField(selectors.itemBasicData.intrastat, 'Tropical Flowers'); + it('should save with the new intrastat', async() => { await page.waitToClick(selectors.itemBasicData.submitBasicDataButton); const result = await page.waitForLastSnackbar(); diff --git a/e2e/paths/04-item/09_regularize.spec.js b/e2e/paths/04-item/09_regularize.spec.js index 7f63694b92..22e2159052 100644 --- a/e2e/paths/04-item/09_regularize.spec.js +++ b/e2e/paths/04-item/09_regularize.spec.js @@ -33,7 +33,6 @@ describe('Item regularize path', () => { }); it('should search for an specific item', async() => { - await page.clearInput(selectors.itemsIndex.topbarSearch); await page.write(selectors.itemsIndex.topbarSearch, 'Ranged weapon pistol 9mm'); await page.waitToClick(selectors.itemsIndex.searchButton); await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1); @@ -42,7 +41,7 @@ describe('Item regularize path', () => { expect(resultCount).toEqual(1); }); - it(`should click on the search result to access to the item tax`, async() => { + it(`should click on the search result to access to the summary`, async() => { await page.waitForTextInElement(selectors.itemsIndex.searchResult, 'Ranged weapon pistol 9mm'); await page.waitToClick(selectors.itemsIndex.searchResult); let url = await page.expectURL('/summary'); @@ -80,6 +79,7 @@ describe('Item regularize path', () => { }); it('should clear the user local settings now', async() => { + await page.waitForContentLoaded(); await page.waitToClick(selectors.globalItems.userMenuButton); await page.clearInput(selectors.globalItems.userConfigFirstAutocomplete); const result = await page.waitForLastSnackbar(); diff --git a/e2e/paths/04-item/10_item_index.spec.js b/e2e/paths/04-item/10_item_index.spec.js index d095557550..28ca9016ff 100644 --- a/e2e/paths/04-item/10_item_index.spec.js +++ b/e2e/paths/04-item/10_item_index.spec.js @@ -55,6 +55,7 @@ describe('Item index path', () => { }); it('should mark all unchecked boxes to leave the index as it was', async() => { + await page.waitForContentLoaded(); await page.waitToClick(selectors.itemsIndex.fieldsToShowButton); await page.waitToClick(selectors.itemsIndex.idCheckbox); await page.waitToClick(selectors.itemsIndex.stemsCheckbox); diff --git a/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js b/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js index 766ca1a184..a6d34a473b 100644 --- a/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js +++ b/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js @@ -97,6 +97,7 @@ describe('Ticket List sale path', () => { }); it('should select the 2nd and 3th item and delete both', async() => { + await page.waitFor(2000); await page.waitToClick(selectors.ticketSales.secondSaleCheckbox); await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox); await page.waitToClick(selectors.ticketSales.deleteSaleButton); diff --git a/e2e/paths/05-ticket/12_descriptor.spec.js b/e2e/paths/05-ticket/12_descriptor.spec.js index 1aa0516de0..a718da71e6 100644 --- a/e2e/paths/05-ticket/12_descriptor.spec.js +++ b/e2e/paths/05-ticket/12_descriptor.spec.js @@ -129,6 +129,7 @@ describe('Ticket descriptor path', () => { }); it('should delete the stowaway', async() => { + await page.waitForContentLoaded(); await page.waitToClick(selectors.ticketDescriptor.moreMenu); await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteStowawayButton); await page.waitToClick(selectors.ticketDescriptor.acceptDeleteStowawayButton); diff --git a/e2e/paths/06-claim/04_claim_action.spec.js b/e2e/paths/06-claim/04_claim_action.spec.js index c0bc91365a..f81c7d9845 100644 --- a/e2e/paths/06-claim/04_claim_action.spec.js +++ b/e2e/paths/06-claim/04_claim_action.spec.js @@ -25,6 +25,7 @@ describe('Claim action path', () => { }); it('should import the second importable ticket', async() => { + await page.waitFor(2000); // the animation adding the header element for the claimed total obscures somehow other elements for 2 seconds await page.waitToClick(selectors.claimAction.importTicketButton); await page.waitToClick(selectors.claimAction.secondImportableTicket); const result = await page.waitForLastSnackbar(); @@ -33,6 +34,7 @@ describe('Claim action path', () => { }); it('should edit the second line destination field', async() => { + await page.waitForContentLoaded(); await page.autocompleteSearch(selectors.claimAction.secondLineDestination, 'Bueno'); const result = await page.waitForLastSnackbar(); @@ -43,7 +45,7 @@ describe('Claim action path', () => { await page.waitToClick(selectors.claimAction.firstDeleteLine); const result = await page.waitForLastSnackbar(); - expect(result).toEqual('Data saved!'); + expect(result).toContain('Data saved!'); }); it('should refresh the view to check the remaining line is the expected one', async() => { @@ -61,6 +63,7 @@ describe('Claim action path', () => { }); it('should check the "is paid with mana" checkbox', async() => { + page.waitFor(2500); // can't use waitForNavigation here and needs more time than a single second to get the section ready... await page.waitToClick(selectors.claimAction.isPaidWithManaCheckbox); const result = await page.waitForLastSnackbar(); diff --git a/front/core/components/snackbar/snackbar.js b/front/core/components/snackbar/snackbar.js index bfaa8cac7b..eb75f9ab83 100644 --- a/front/core/components/snackbar/snackbar.js +++ b/front/core/components/snackbar/snackbar.js @@ -69,8 +69,8 @@ export default class Controller extends Component { const lastShapeData = lastShape && lastShape.data; const isEqual = lastShape && (lastShapeData.shapeType == data.shapeType && lastShapeData.message == data.message); - if (this.lastShape && isEqual) { - shape = this.lastShape.element; + if (lastShape && isEqual) { + shape = lastShape.element; const shapeText = shape.querySelector('.text'); let chip = shapeText.querySelector('vn-chip'); @@ -93,6 +93,8 @@ export default class Controller extends Component { shapeText.appendChild(chip); } + lastShape.element.classList.add('shown'); + if (this.hideTimeout) clearTimeout(this.hideTimeout); } else {