import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; describe('Worker time control path', () => { let browser; let page; beforeAll(async() => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('salesBoss', 'worker'); await page.accessToSearchResult('HankPym'); await page.accessToSection('worker.card.timeControl'); await page.waitToClick(selectors.workerTimeControl.previousMonthButton); await page.waitToClick(selectors.workerTimeControl.secondWeekDay); }); afterAll(async() => { await browser.close(); }); describe('as salesBoss', () => { describe('on Monday', () => { it('should scan in Hank Pym', async() => { const scanTime = '07:00'; await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfMonday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should scan out Hank Pym for break`, async() => { const scanTime = '10:00'; await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfMonday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should scan in Hank Pym for a wrong hour and forget to scan in from the break`, async() => { const scanTime = '18:00'; await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should delete the wrong entry for Hank Pym`, async() => { const wrongScanTime = '18:00'; await page.waitForTextInElement(selectors.workerTimeControl.thirdEntryOfMonday, wrongScanTime); await page.waitToClick(selectors.workerTimeControl.thirdEntryOfMondayDelete); await page.respondToDialog('accept'); const message = await page.waitForSnackbar(); expect(message.text).toContain('Entry removed'); }); it(`should scan out Hank Pym to leave early`, async() => { const scanTime = '14:00'; await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should add the break's scan in for Hank Pym and be in the right order`, async() => { const scanTime = '10:20'; await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfMonday, 'innerText'); expect(result).toEqual('14:00'); }); it(`should the third entry be the scan in from break`, async() => { const scanTime = '10:20'; const result = await page .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); expect(result).toEqual(scanTime); }); // 3736 check proc vn.timeControl_calculate xit(`should check Hank Pym worked 6:40 hours`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.mondayWorkedHours, '06:40 h.'); }); }); describe('on Tuesday', () => { it('should happily scan in Hank Pym', async() => { const scanTime = '08:00'; await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfTuesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should happily scan out Hank Pym for break`, async() => { const scanTime = '10:00'; await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfTuesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should happily scan in Hank Pym from the break`, async() => { const scanTime = '10:20'; await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfTuesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should happily scan out Hank Pym for the day`, async() => { const scanTime = '16:00'; await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfTuesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should check Hank Pym worked 7:40 hours`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.tuesdayWorkedHours, '07:40 h.'); }); }); describe('on Wednesday', () => { it('should cheerfully scan in Hank Pym', async() => { const scanTime = '09:00'; await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfWednesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should cheerfully scan out Hank Pym for break`, async() => { const scanTime = '10:00'; await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfWednesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should cheerfully scan in Hank Pym from the break`, async() => { const scanTime = '10:20'; await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfWednesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should cheerfully scan out Hank Pym for the day`, async() => { const scanTime = '17:00'; await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfWednesday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should check Hank Pym worked 7:40 cheerfull hours`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.wednesdayWorkedHours, '07:40 h.'); }); }); describe('on Thursday', () => { it('should joyfully scan in Hank Pym', async() => { const scanTime = '09:59'; await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfThursday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should joyfully scan out Hank Pym for break`, async() => { const scanTime = '10:00'; await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfThursday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should joyfully scan in Hank Pym from the break`, async() => { const scanTime = '10:20'; await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfThursday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should joyfully scan out Hank Pym for the day`, async() => { const scanTime = '17:59'; await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfThursday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should check Hank Pym worked 7:40 joyfull hours`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.thursdayWorkedHours, '07:40 h.'); }); }); describe('on Friday', () => { it('should smilingly scan in Hank Pym', async() => { const scanTime = '07:30'; await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfFriday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should smilingly scan out Hank Pym for break`, async() => { const scanTime = '10:00'; await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfFriday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should smilingly scan in Hank Pym from the break`, async() => { const scanTime = '10:20'; await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfFriday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should smilingly scan out Hank Pym for the day`, async() => { const scanTime = '15:30'; await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfFriday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should check Hank Pym worked 7:40 hours with a smile on his face`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.fridayWorkedHours, '07:40 h.'); }); }); }); describe('as HHRR', () => { describe('on Saturday', () => { it('should log in as hr and pick the worker module', async() => { await page.loginAndModule('hr', 'worker'); }); it('should search for a worker and access to its summary', async() => { await page.accessToSearchResult('HankPym'); await page.waitForState('worker.card.summary'); }); it('should access to the time control section', async() => { await page.accessToSection('worker.card.timeControl'); await page.waitForState('worker.card.timeControl'); await page.waitToClick(selectors.workerTimeControl.previousMonthButton); await page.waitToClick(selectors.workerTimeControl.secondWeekDay); }); it('should lovingly scan in Hank Pym', async() => { const scanTime = '06:00'; await page.waitForTimeout(1000); // without this timeout the dialog doesn't pop up await page.waitToClick(selectors.workerTimeControl.saturdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfSaturday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should lovingly scan out Hank Pym for the day with no break to leave a bit early`, async() => { const scanTime = '13:40'; await page.waitToClick(selectors.workerTimeControl.saturdayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfSaturday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should check Hank Pym worked 7:40 hours with all his will`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.saturdayWorkedHours, '07:40 h.'); }); }); describe('on Sunday', () => { it('should gladly scan in Hank Pym', async() => { const scanTime = '05:00'; await page.waitToClick(selectors.workerTimeControl.sundayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfSunday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should gladly scan out Hank Pym for the day with no break to leave a bit early`, async() => { const scanTime = '12:40'; await page.waitToClick(selectors.workerTimeControl.sundayAddTimeButton); await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); await page.respondToDialog('accept'); const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfSunday, 'innerText'); expect(result).toEqual(scanTime); }); it(`should check Hank Pym worked 7:40 glad hours`, async() => { await page.waitForTextInElement(selectors.workerTimeControl.sundayWorkedHours, '07:40 h.'); }); it(`should check Hank Pym doesn't have hours set on the next months second week`, async() => { await page.waitToClick(selectors.workerTimeControl.nextMonthButton); await page.waitToClick(selectors.workerTimeControl.secondWeekDay); await page.waitForTextInElement(selectors.workerTimeControl.weekWorkedHours, '00:00 h.'); }); it(`should check he didn't scan in this week yet`, async() => { await page.waitToClick(selectors.workerTimeControl.navigateBackToIndex); await page.accessToSearchResult('salesBoss'); await page.accessToSection('worker.card.timeControl'); const wholeWeekHours = await page .waitToGetProperty(selectors.workerTimeControl.weekWorkedHours, 'innerText'); expect(wholeWeekHours).toEqual('00:00 h.'); }); }); }); describe('after all this amazing week', () => { it('should log in Hank', async() => { await page.loginAndModule('HankPym', 'worker'); await page.accessToSearchResult('HankPym'); await page.accessToSection('worker.card.timeControl'); await page.waitToClick(selectors.workerTimeControl.previousMonthButton); await page.waitToClick(selectors.workerTimeControl.secondWeekDay); }); it('should check his weekly hours are alright', async() => { await page.waitForTextInElement(selectors.workerTimeControl.weekWorkedHours, '52:40 h.'); }); }); });