Merge pull request 'fixes #3571 Refactorizar E2E (03-worker)' (!1233) from 3571-refactor-e2e into dev
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
Reviewed-on: #1233 Reviewed-by: Juan Ferrer <juan@verdnatura.es>
This commit is contained in:
commit
e51e445b3e
|
@ -2,68 +2,32 @@ import selectors from '../../helpers/selectors.js';
|
|||
import getBrowser from '../../helpers/puppeteer';
|
||||
|
||||
describe('Worker summary path', () => {
|
||||
const workerId = 3;
|
||||
let browser;
|
||||
let page;
|
||||
beforeAll(async() => {
|
||||
browser = await getBrowser();
|
||||
page = browser.page;
|
||||
await page.loginAndModule('employee', 'worker');
|
||||
const httpDataResponse = page.waitForResponse(response => {
|
||||
return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
|
||||
});
|
||||
await page.accessToSearchResult('agencyNick');
|
||||
await httpDataResponse;
|
||||
});
|
||||
|
||||
afterAll(async() => {
|
||||
await browser.close();
|
||||
});
|
||||
|
||||
it('should reach the employee summary section', async() => {
|
||||
await page.waitForState('worker.card.summary');
|
||||
});
|
||||
|
||||
it('should check the summary contains the name and userName on the header', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.header, 'innerText');
|
||||
|
||||
expect(result).toEqual('agency agency');
|
||||
});
|
||||
|
||||
it('should check the summary contains the basic data id', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.id, 'innerText');
|
||||
|
||||
expect(result).toEqual('3');
|
||||
});
|
||||
|
||||
it('should check the summary contains the basic data email', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.email, 'innerText');
|
||||
|
||||
expect(result).toEqual('agency@verdnatura.es');
|
||||
});
|
||||
|
||||
it('should check the summary contains the basic data department', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.department, 'innerText');
|
||||
|
||||
expect(result).toEqual('CAMARA');
|
||||
});
|
||||
|
||||
it('should check the summary contains the user data id', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.userId, 'innerText');
|
||||
|
||||
expect(result).toEqual('3');
|
||||
});
|
||||
|
||||
it('should check the summary contains the user data name', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.userName, 'innerText');
|
||||
|
||||
expect(result).toEqual('agency');
|
||||
});
|
||||
|
||||
it('should check the summary contains the user data role', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.role, 'innerText');
|
||||
|
||||
expect(result).toEqual('agency');
|
||||
});
|
||||
|
||||
it('should check the summary contains the user data extension', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerSummary.extension, 'innerText');
|
||||
|
||||
expect(result).toEqual('1101');
|
||||
it('should reach the employee summary section and check all properties', async() => {
|
||||
expect(await page.getProperty(selectors.workerSummary.header, 'innerText')).toEqual('agency agency');
|
||||
expect(await page.getProperty(selectors.workerSummary.id, 'innerText')).toEqual('3');
|
||||
expect(await page.getProperty(selectors.workerSummary.email, 'innerText')).toEqual('agency@verdnatura.es');
|
||||
expect(await page.getProperty(selectors.workerSummary.department, 'innerText')).toEqual('CAMARA');
|
||||
expect(await page.getProperty(selectors.workerSummary.userId, 'innerText')).toEqual('3');
|
||||
expect(await page.getProperty(selectors.workerSummary.userName, 'innerText')).toEqual('agency');
|
||||
expect(await page.getProperty(selectors.workerSummary.role, 'innerText')).toEqual('agency');
|
||||
expect(await page.getProperty(selectors.workerSummary.extension, 'innerText')).toEqual('1101');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -2,13 +2,18 @@ import selectors from '../../helpers/selectors.js';
|
|||
import getBrowser from '../../helpers/puppeteer';
|
||||
|
||||
describe('Worker basic data path', () => {
|
||||
const workerId = 1106;
|
||||
let browser;
|
||||
let page;
|
||||
beforeAll(async() => {
|
||||
browser = await getBrowser();
|
||||
page = browser.page;
|
||||
await page.loginAndModule('hr', 'worker');
|
||||
const httpDataResponse = page.waitForResponse(response => {
|
||||
return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
|
||||
});
|
||||
await page.accessToSearchResult('David Charles Haller');
|
||||
await httpDataResponse;
|
||||
await page.accessToSection('worker.card.basicData');
|
||||
});
|
||||
|
||||
|
@ -16,35 +21,20 @@ describe('Worker basic data path', () => {
|
|||
await browser.close();
|
||||
});
|
||||
|
||||
it('should edit the form', async() => {
|
||||
await page.clearInput(selectors.workerBasicData.name);
|
||||
await page.write(selectors.workerBasicData.name, 'David C.');
|
||||
await page.clearInput(selectors.workerBasicData.surname);
|
||||
await page.write(selectors.workerBasicData.surname, 'H.');
|
||||
await page.clearInput(selectors.workerBasicData.phone);
|
||||
await page.write(selectors.workerBasicData.phone, '444332211');
|
||||
await page.waitToClick(selectors.workerBasicData.saveButton);
|
||||
it('should edit the form and then reload the section and check the data was edited', async() => {
|
||||
await page.overwrite(selectors.workerBasicData.name, 'David C.');
|
||||
await page.overwrite(selectors.workerBasicData.surname, 'H.');
|
||||
await page.overwrite(selectors.workerBasicData.phone, '444332211');
|
||||
await page.click(selectors.workerBasicData.saveButton);
|
||||
|
||||
const message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Data saved!');
|
||||
});
|
||||
|
||||
it('should reload the section then check the name was edited', async() => {
|
||||
await page.reloadSection('worker.card.basicData');
|
||||
const result = await page.waitToGetProperty(selectors.workerBasicData.name, 'value');
|
||||
|
||||
expect(result).toEqual('David C.');
|
||||
});
|
||||
|
||||
it('should the surname was edited', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerBasicData.surname, 'value');
|
||||
|
||||
expect(result).toEqual('H.');
|
||||
});
|
||||
|
||||
it('should the phone was edited', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerBasicData.phone, 'value');
|
||||
|
||||
expect(result).toEqual('444332211');
|
||||
expect(await page.waitToGetProperty(selectors.workerBasicData.name, 'value')).toEqual('David C.');
|
||||
expect(await page.waitToGetProperty(selectors.workerBasicData.surname, 'value')).toEqual('H.');
|
||||
expect(await page.waitToGetProperty(selectors.workerBasicData.phone, 'value')).toEqual('444332211');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -16,19 +16,16 @@ describe('Worker pbx path', () => {
|
|||
await browser.close();
|
||||
});
|
||||
|
||||
it('should receive an error when the extension exceeds 4 characters', async() => {
|
||||
it('should receive an error when the extension exceeds 4 characters and then sucessfully save the changes', async() => {
|
||||
await page.write(selectors.workerPbx.extension, '55555');
|
||||
await page.waitToClick(selectors.workerPbx.saveButton);
|
||||
const message = await page.waitForSnackbar();
|
||||
await page.click(selectors.workerPbx.saveButton);
|
||||
let message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Extension format is invalid');
|
||||
});
|
||||
|
||||
it('should sucessfully save the changes', async() => {
|
||||
await page.clearInput(selectors.workerPbx.extension);
|
||||
await page.write(selectors.workerPbx.extension, '4444');
|
||||
await page.waitToClick(selectors.workerPbx.saveButton);
|
||||
const message = await page.waitForSnackbar();
|
||||
await page.overwrite(selectors.workerPbx.extension, '4444');
|
||||
await page.click(selectors.workerPbx.saveButton);
|
||||
message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Data saved! User must access web');
|
||||
});
|
||||
|
|
|
@ -21,38 +21,34 @@ describe('Worker time control path', () => {
|
|||
const fourPm = '16:00';
|
||||
const hankPymId = 1107;
|
||||
|
||||
it('should go to the next month', async() => {
|
||||
const date = new Date();
|
||||
it('should go to the next month, go to current month and go 1 month in the past', async() => {
|
||||
let date = new Date();
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
const month = date.toLocaleString('default', {month: 'long'});
|
||||
let month = date.toLocaleString('default', {month: 'long'});
|
||||
|
||||
await page.waitToClick(selectors.workerTimeControl.nextMonthButton);
|
||||
const result = await page.waitToGetProperty(selectors.workerTimeControl.monthName, 'innerText');
|
||||
await page.click(selectors.workerTimeControl.nextMonthButton);
|
||||
let result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');
|
||||
|
||||
expect(result).toContain(month);
|
||||
});
|
||||
|
||||
it('should go to current month', async() => {
|
||||
const date = new Date();
|
||||
const month = date.toLocaleString('default', {month: 'long'});
|
||||
date = new Date();
|
||||
month = date.toLocaleString('default', {month: 'long'});
|
||||
|
||||
await page.waitToClick(selectors.workerTimeControl.previousMonthButton);
|
||||
const result = await page.waitToGetProperty(selectors.workerTimeControl.monthName, 'innerText');
|
||||
await page.click(selectors.workerTimeControl.previousMonthButton);
|
||||
result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');
|
||||
|
||||
expect(result).toContain(month);
|
||||
});
|
||||
|
||||
it('should go 1 month in the past', async() => {
|
||||
const date = new Date();
|
||||
date = new Date();
|
||||
date.setMonth(date.getMonth() - 1);
|
||||
const timestamp = Math.round(date.getTime() / 1000);
|
||||
const month = date.toLocaleString('default', {month: 'long'});
|
||||
month = date.toLocaleString('default', {month: 'long'});
|
||||
|
||||
await page.loginAndModule('salesBoss', 'worker');
|
||||
await page.goto(`http://localhost:5000/#!/worker/${hankPymId}/time-control?timestamp=${timestamp}`);
|
||||
await page.waitToClick(selectors.workerTimeControl.secondWeekDay);
|
||||
await page.click(selectors.workerTimeControl.secondWeekDay);
|
||||
|
||||
const result = await page.waitToGetProperty(selectors.workerTimeControl.monthName, 'innerText');
|
||||
result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');
|
||||
|
||||
expect(result).toContain(month);
|
||||
});
|
||||
|
@ -115,7 +111,9 @@ describe('Worker time control path', () => {
|
|||
});
|
||||
|
||||
it('should change week of month', async() => {
|
||||
await page.waitToClick(selectors.workerTimeControl.thrirdWeekDay);
|
||||
await page.waitForTextInElement(selectors.workerTimeControl.mondayWorkedHours, '00:00 h.');
|
||||
await page.click(selectors.workerTimeControl.thrirdWeekDay);
|
||||
const result = await page.getProperty(selectors.workerTimeControl.mondayWorkedHours, 'innerText');
|
||||
|
||||
expect(result).toEqual('00:00 h.');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,16 +1,25 @@
|
|||
/* eslint-disable max-len */
|
||||
import selectors from '../../helpers/selectors.js';
|
||||
import getBrowser from '../../helpers/puppeteer';
|
||||
|
||||
describe('Worker calendar path', () => {
|
||||
let reasonableTimeBetweenClicks = 400;
|
||||
const reasonableTimeBetweenClicks = 300;
|
||||
const date = new Date();
|
||||
const lastYear = (date.getFullYear() - 1).toString();
|
||||
|
||||
let browser;
|
||||
let page;
|
||||
|
||||
async function accessAs(user) {
|
||||
await page.loginAndModule(user, 'worker');
|
||||
await page.accessToSearchResult('Charles Xavier');
|
||||
await page.accessToSection('worker.card.calendar');
|
||||
}
|
||||
|
||||
beforeAll(async() => {
|
||||
browser = await getBrowser();
|
||||
page = browser.page;
|
||||
await page.loginAndModule('hr', 'worker');
|
||||
await page.accessToSearchResult('Charles Xavier');
|
||||
await page.accessToSection('worker.card.calendar');
|
||||
accessAs('hr');
|
||||
});
|
||||
|
||||
afterAll(async() => {
|
||||
|
@ -21,48 +30,40 @@ describe('Worker calendar path', () => {
|
|||
it('should set two days as holidays on the calendar and check the total holidays increased by 1.5', async() => {
|
||||
await page.waitToClick(selectors.workerCalendar.holidays);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.penultimateMondayOfJanuary);
|
||||
await page.click(selectors.workerCalendar.penultimateMondayOfJanuary);
|
||||
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.absence);
|
||||
await page.click(selectors.workerCalendar.absence);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.lastMondayOfMarch);
|
||||
await page.click(selectors.workerCalendar.lastMondayOfMarch);
|
||||
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.halfHoliday);
|
||||
await page.click(selectors.workerCalendar.halfHoliday);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.fistMondayOfMay);
|
||||
await page.click(selectors.workerCalendar.fistMondayOfMay);
|
||||
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.furlough);
|
||||
await page.click(selectors.workerCalendar.furlough);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.secondTuesdayOfMay);
|
||||
await page.click(selectors.workerCalendar.secondTuesdayOfMay);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.secondWednesdayOfMay);
|
||||
await page.click(selectors.workerCalendar.secondWednesdayOfMay);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.secondThursdayOfMay);
|
||||
await page.click(selectors.workerCalendar.secondThursdayOfMay);
|
||||
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.halfFurlough);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.secondFridayOfJun);
|
||||
await page.click(selectors.workerCalendar.halfFurlough);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.click(selectors.workerCalendar.secondFridayOfJun);
|
||||
|
||||
const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText');
|
||||
|
||||
expect(result).toContain(' 1.5 ');
|
||||
expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 1.5 ');
|
||||
});
|
||||
});
|
||||
|
||||
describe(`as salesBoss`, () => {
|
||||
it(`should log in and get to Charles Xavier's calendar`, async() => {
|
||||
await page.loginAndModule('salesBoss', 'worker');
|
||||
await page.accessToSearchResult('Charles Xavier');
|
||||
await page.accessToSection('worker.card.calendar');
|
||||
});
|
||||
it(`should log in, get to Charles Xavier's calendar, undo what was done here, and check the total holidays used are back to what it was`, async() => {
|
||||
accessAs('salesBoss');
|
||||
|
||||
it('should undo what was done here', async() => {
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.holidays);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.penultimateMondayOfJanuary);
|
||||
|
@ -90,45 +91,24 @@ describe('Worker calendar path', () => {
|
|||
await page.waitToClick(selectors.workerCalendar.halfFurlough);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.secondFridayOfJun);
|
||||
});
|
||||
|
||||
it('should check the total holidays used are back to what it was', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText');
|
||||
|
||||
expect(result).toContain(' 0 ');
|
||||
expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 0 ');
|
||||
});
|
||||
});
|
||||
|
||||
describe(`as Charles Xavier`, () => {
|
||||
it(`should log in and get to his calendar`, async() => {
|
||||
await page.loginAndModule('CharlesXavier', 'worker');
|
||||
await page.accessToSearchResult('Charles Xavier');
|
||||
await page.accessToSection('worker.card.calendar');
|
||||
});
|
||||
|
||||
it('should make a futile attempt to add holidays', async() => {
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
it('should log in and get to his calendar, make a futile attempt to add holidays, check the total holidays used are now the initial ones and use the year selector to go to the previous year', async() => {
|
||||
accessAs('CharlesXavier');
|
||||
await page.waitToClick(selectors.workerCalendar.holidays);
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
await page.waitToClick(selectors.workerCalendar.penultimateMondayOfJanuary);
|
||||
});
|
||||
|
||||
it('should check the total holidays used are now the initial ones', async() => {
|
||||
const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText');
|
||||
await page.click(selectors.workerCalendar.penultimateMondayOfJanuary);
|
||||
|
||||
expect(result).toContain(' 0 ');
|
||||
});
|
||||
|
||||
it('should use the year selector to go to the previous year', async() => {
|
||||
const date = new Date();
|
||||
const lastYear = (date.getFullYear() - 1).toString();
|
||||
expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 0 ');
|
||||
|
||||
await page.autocompleteSearch(selectors.workerCalendar.year, lastYear);
|
||||
|
||||
await page.waitForTimeout(reasonableTimeBetweenClicks);
|
||||
const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText');
|
||||
|
||||
expect(result).toContain(' 0 ');
|
||||
expect(await page.getProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText')).toContain(' 0 ');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue