import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; describe('Item summary path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('employee', 'item'); }); it('should search for an item', async() => { const result = await nightmare .wait(selectors.itemsIndex.searchItemInput) .type(selectors.itemsIndex.searchItemInput, 'Object1 Gem1 5') .click(selectors.itemsIndex.searchButton) .waitForNumberOfElements(selectors.itemsIndex.searchResult, 1) .countElement(selectors.itemsIndex.searchResult); expect(result).toEqual(1); }); it(`should click on the search result summary button to open the item summary popup`, async() => { const isVisibleBefore = await nightmare .waitForTextInElement(selectors.itemsIndex.searchResult, 'Object1 Gem1 5') .isVisible(selectors.itemSummary.basicData); const isVisibleAfter = await nightmare .waitToClick(selectors.itemsIndex.searchResultPreviewButton) .isVisible(selectors.itemSummary.basicData); expect(isVisibleBefore).toBeFalsy(); expect(isVisibleAfter).toBeTruthy(); }); it(`should check the item summary preview shows fields from basic data`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.basicData, 'Name: Object1 Gem1 5') .waitToGetProperty(selectors.itemSummary.basicData, 'innerText'); expect(result).toContain('Name: Object1 Gem1 5'); }); it(`should check the item summary preview shows fields from tags`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.tags, 'Color: Yellow') .waitToGetProperty(selectors.itemSummary.tags, 'innerText'); expect(result).toContain('Color: Yellow'); }); it(`should check the item summary preview shows fields from niche`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.niche, 'Warehouse One: A1') .waitToGetProperty(selectors.itemSummary.niche, 'innerText'); expect(result).toContain('Warehouse One: A1'); }); it(`should check the item summary preview shows fields from botanical`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.botanical, 'Botanical: Hedera helix') .waitToGetProperty(selectors.itemSummary.botanical, 'innerText'); expect(result).toContain('Botanical: Hedera helix'); }); it(`should check the item summary preview shows fields from barcode`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.barcode, '1') .waitToGetProperty(selectors.itemSummary.barcode, 'innerText'); expect(result).toContain('1'); }); it(`should close the summary popup`, async() => { const result = await nightmare .waitToClick(selectors.itemsIndex.closeItemSummaryPreview) .isVisible(selectors.itemSummary.basicData); expect(result).toBeFalsy(); }); it('should search for other item', async() => { const result = await nightmare .clearInput('body > vn-app > vn-vertical > vn-vertical > ui-view > vn-item-index > div > div > vn-card:nth-child(1) > div > vn-searchbar > form > vn-horizontal > vn-textfield > div > div > div.infix > input') .click(selectors.itemsIndex.searchButton) .type(selectors.itemsIndex.searchItemInput, 'Object2 Gem2 3') .click(selectors.itemsIndex.searchButton) .waitForNumberOfElements(selectors.itemsIndex.searchResult, 1) .countElement(selectors.itemsIndex.searchResult); expect(result).toEqual(1); }); it(`should now click on the search result summary button to open the item summary popup`, async() => { const isVisibleBefore = await nightmare .waitForTextInElement(selectors.itemsIndex.searchResult, 'Object2 Gem2 3') .isVisible(selectors.itemSummary.basicData); const isVisibleAfter = await nightmare .waitToClick(selectors.itemsIndex.searchResultPreviewButton) .isVisible(selectors.itemSummary.basicData); expect(isVisibleBefore).toBeFalsy(); expect(isVisibleAfter).toBeTruthy(); }); it(`should now check the item summary preview shows fields from basic data`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.basicData, 'Name: Object2 Gem2 3') .waitToGetProperty(selectors.itemSummary.basicData, 'innerText'); expect(result).toContain('Name: Object2 Gem2 3'); }); it(`should now check the item summary preview shows fields from tags`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.tags, 'Color: Red') .waitToGetProperty(selectors.itemSummary.tags, 'innerText'); expect(result).toContain('Color: Red'); }); it(`should now check the item summary preview shows fields from niche`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.niche, 'Warehouse One: A4') .waitToGetProperty(selectors.itemSummary.niche, 'innerText'); expect(result).toContain('Warehouse One: A4'); }); it(`should now check the item summary preview shows fields from botanical`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.botanical, 'Botanical: -') .waitToGetProperty(selectors.itemSummary.botanical, 'innerText'); expect(result).toContain('Botanical: -'); }); it(`should now check the item summary preview shows fields from barcode`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.barcode, '4') .waitToGetProperty(selectors.itemSummary.barcode, 'innerText'); expect(result).toContain('4'); }); it(`should now close the summary popup`, async() => { const result = await nightmare .waitToClick(selectors.itemsIndex.closeItemSummaryPreview) .isVisible(selectors.itemSummary.basicData); expect(result).toBeFalsy(); }); it(`should navigate to the one of the items detailed section`, async() => { const url = await nightmare .waitToClick(selectors.itemsIndex.searchResult) .waitForURL('summary') .parsedUrl(); expect(url.hash).toContain('summary'); }); it(`should check the item summary shows fields from basic data section`, async() => { const result = await nightmare .waitForTextInElement(selectors.itemSummary.basicData, 'Name: Object2 Gem2 3') .waitToGetProperty(selectors.itemSummary.basicData, 'innerText'); expect(result).toContain('Name: Object2 Gem2 3'); }); it(`should check the item summary shows fields from tags section`, async() => { const result = await nightmare .waitToGetProperty(selectors.itemSummary.tags, 'innerText'); expect(result).toContain('Color: Red'); }); it(`should check the item summary shows fields from niches section`, async() => { const result = await nightmare .waitToGetProperty(selectors.itemSummary.niche, 'innerText'); expect(result).toContain('Warehouse One: A4'); }); it(`should check the item summary shows fields from botanical section`, async() => { const result = await nightmare .waitToGetProperty(selectors.itemSummary.botanical, 'innerText'); expect(result).toContain('Botanical: -'); }); it(`should check the item summary shows fields from barcodes section`, async() => { const result = await nightmare .waitToGetProperty(selectors.itemSummary.barcode, 'innerText'); expect(result).toContain('4'); }); });