Skip to content

Commit 24bdf74

Browse files
committed
Merge branch 'master' of github.com:masudul-tikweb/eform-angular-frontend into masudul-tikweb-master
2 parents 1ad7346 + 4bb05f8 commit 24bdf74

File tree

5 files changed

+295
-260
lines changed

5 files changed

+295
-260
lines changed

eform-client/e2e/Page objects/SearchableLists.page.ts

Lines changed: 65 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,21 @@ export class SearchableListsPage extends PageWithNavbarPage {
124124
return ele;
125125
}
126126

127+
// public async entitySearchEditBtn(i = 0): Promise<WebdriverIO.Element> {
128+
// const ele = await $$('#entitySearchUpdateBtn')[i];
129+
// await ele.waitForDisplayed({timeout: 400});
130+
// await ele.waitForClickable({timeout: 400});
131+
// return ele;
132+
// }
133+
127134
public async entitySearchEditBtn(i = 0): Promise<WebdriverIO.Element> {
128-
const ele = await $$('#entitySearchUpdateBtn')[i];
129-
await ele.waitForDisplayed({timeout: 400});
130-
await ele.waitForClickable({timeout: 400});
131-
return ele;
135+
await browser.pause(250);
136+
await this.openRowMenu(i);
137+
await browser.pause(250);
138+
const btn = await $(`#entitySearchUpdateBtn${i}`);
139+
await btn.waitForDisplayed({ timeout: 5000 });
140+
await btn.waitForClickable({ timeout: 5000 });
141+
return btn;
132142
}
133143

134144
public async entitySearchEditNameBox(): Promise<WebdriverIO.Element> {
@@ -216,11 +226,12 @@ export class SearchableListsPage extends PageWithNavbarPage {
216226
return ele;
217227
}
218228

219-
public async entitySearchDeleteBtn(): Promise<WebdriverIO.Element> {
220-
const ele = await $('#entitySearchDeleteBtn');
221-
await ele.waitForDisplayed({timeout: 400});
222-
await ele.waitForClickable({timeout: 400});
223-
return ele;
229+
public async entitySearchDeleteBtn(i = 0): Promise<WebdriverIO.Element> {
230+
// await this.openRowMenu(i);
231+
const btn = await $(`#entitySearchDeleteBtn${i}`);
232+
await btn.waitForDisplayed({ timeout: 5000 });
233+
await btn.waitForClickable({ timeout: 5000 });
234+
return btn;
224235
}
225236

226237
public async entitySearchDeleteDeleteBtn(): Promise<WebdriverIO.Element> {
@@ -449,14 +460,29 @@ export class SearchableListsPage extends PageWithNavbarPage {
449460
}
450461

451462
public async deleteList() {
452-
const deleteList = await this.getFirstRowObject();
453-
if (deleteList != null) {
454-
await deleteList.deleteBtn.click();
455-
await (await this.entitySearchDeleteDeleteBtn()).click();
456-
// browser.refresh();
457-
}
463+
const row = await this.getFirstRowObject();
464+
if (!row?.index) return;
465+
466+
const index = row.index - 1;
467+
468+
await $(`#action-items${index}`).scrollIntoView();
469+
470+
await browser.pause(250);
471+
await this.openRowMenu(index);
472+
await browser.pause(250);
473+
474+
const deleteBtn = await this.entitySearchDeleteBtn(index);
475+
await deleteBtn.waitForClickable({ timeout: 5000 });
476+
await deleteBtn.click();
477+
478+
const confirm = await this.entitySearchDeleteDeleteBtn();
479+
await confirm.waitForClickable({ timeout: 5000 });
480+
await confirm.click();
481+
482+
await this.waitForSpinnerHide();
458483
}
459484

485+
460486
public async editItemName(newItemName) {
461487
await (await this.entitySearchItemEditBtn()).click();
462488
await (await this.entitySearchEditItemNameBox()).clearValue();
@@ -479,18 +505,30 @@ export class SearchableListsPage extends PageWithNavbarPage {
479505
await (await this.entitySearchItemDeleteBtn()).click();
480506
}
481507

508+
public async openRowMenu(i = 0) {
509+
const menuBtn = await $(`#action-items${i} #actionMenu`);
510+
await menuBtn.waitForClickable({ timeout: 1000 });
511+
await menuBtn.click();
512+
await browser.pause(200);
513+
}
514+
482515
public async cleanup() {
483-
const deleteObject = await this.getFirstRowObject();
484-
if (deleteObject != null) {
485-
await this.waitForSpinnerHide();
486-
await deleteObject.deleteBtn.click();
487-
488-
await this.waitForSpinnerHide();
489-
await (await this.entitySearchDeleteDeleteBtn()).click();
490-
await this.waitForSpinnerHide();
491-
// browser.refresh();
492-
}
516+
const row = await this.getFirstRowObject();
517+
if (!row?.deleteBtn) return;
518+
519+
await this.openRowMenu(row.index - 1);
520+
521+
await row.deleteBtn.waitForClickable({ timeout: 5000 });
522+
await row.deleteBtn.click();
523+
524+
const confirm = await this.entitySearchDeleteDeleteBtn();
525+
await confirm.waitForClickable({ timeout: 5000 });
526+
await confirm.click();
527+
528+
await this.waitForSpinnerHide();
493529
}
530+
531+
494532
}
495533

496534
export class SearchableListRowObject {
@@ -510,10 +548,10 @@ export class SearchableListRowObject {
510548
this.name = await (await $$('#entitySearchName'))[rowNum - 1].getText();
511549
} catch (e) {}
512550
try {
513-
this.editBtn = (await $$('#entitySearchUpdateBtn'))[rowNum - 1];
551+
this.editBtn = await $(`#entitySearchUpdateBtn${rowNum - 1}`);
514552
} catch (e) {}
515553
try {
516-
this.deleteBtn = (await $$('#entitySearchDeleteBtn'))[rowNum - 1];
554+
this.deleteBtn = await $(`#entitySearchDeleteBtn${rowNum - 1}`);
517555
// console.log('rowNum is ' + rowNum + ' - ' + this.deleteBtn);
518556
} catch (e) {}
519557
}

eform-client/e2e/Tests/searchable-lists/searchable-lists.add.spec.ts

Lines changed: 65 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -10,71 +10,70 @@ describe('Entity Search', function () {
1010
await loginPage.open('/auth');
1111
await loginPage.login();
1212
});
13-
it('should assert true is true', () => {
14-
expect(true).equal(true); // this will pass
13+
it('should go to entity search page', async () => {
14+
await searchableLists.goToEntitySearchPage();
15+
await (await $('#createEntitySearchBtn')).waitForDisplayed({ timeout: 40000 });
16+
});
17+
it('should create a new searchable list', async () => {
18+
const name = Guid.create().toString();
19+
await searchableLists.createSearchableList_NoItem(name);
20+
const searchableList = await searchableLists.getFirstRowObject();
21+
expect((await searchableList.name)).equal(name);
22+
await searchableLists.cleanup();
23+
});
24+
it('should not create a new searchable list', async () => {
25+
const numRows = await searchableLists.rowNum();
26+
const name = Guid.create().toString();
27+
await searchableLists.createSearchableList_NoItem_Cancels(name);
28+
expect(await searchableLists.rowNum()).equal(numRows);
29+
});
30+
it('should create a new searchable list with one item', async () => {
31+
const name = Guid.create().toString();
32+
const itemName = Guid.create().toString();
33+
await searchableLists.createSearchableList_OneItem(name, itemName);
34+
const searchableList = await searchableLists.getFirstRowObject();
35+
expect(searchableList.name).equal(name);
36+
// await searchableLists.openRowMenu(searchableList.index - 1);
37+
await (await searchableLists.entitySearchEditBtn(searchableList.index - 1)).click();
38+
await browser.pause(500);
39+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal(itemName);
40+
await (await searchableLists.entitySearchEditCancelBtn()).click();
41+
await searchableLists.cleanup();
42+
});
43+
it('should not make a new searchable list with one item', async () => {
44+
const numRows = await searchableLists.rowNum();
45+
const name = Guid.create().toString();
46+
const itemName = Guid.create().toString();
47+
await searchableLists.createSearchableList_OneItem_Cancels(name, itemName);
48+
expect(await searchableLists.rowNum()).equal(numRows);
49+
});
50+
it('should make a new searchable list with multiple items', async () => {
51+
const name = Guid.create().toString();
52+
const itemNames = ['a \n', 'b\n', 'c\n', 'd\n', 'e'];
53+
await searchableLists.createSearchableList_MultipleItems(name, itemNames);
54+
const searchableList = await searchableLists.getFirstRowObject();
55+
expect(searchableList.name).equal(name);
56+
// await searchableLists.openRowMenu(searchableList.index - 1);
57+
await (await searchableLists.entitySearchEditBtn(searchableList.index - 1)).click();
58+
await browser.pause(500);
59+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal('a');
60+
await (await searchableLists.entitySearchItemDeleteBtn()).click();
61+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal('b');
62+
await (await searchableLists.entitySearchItemDeleteBtn()).click();
63+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal('c');
64+
await (await searchableLists.entitySearchItemDeleteBtn()).click();
65+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal('d');
66+
await (await searchableLists.entitySearchItemDeleteBtn()).click();
67+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal('e');
68+
await (await searchableLists.entitySearchItemDeleteBtn()).click();
69+
await (await searchableLists.entitySearchEditCancelBtn()).click();
70+
await searchableLists.cleanup();
71+
});
72+
it('should not create a searchable list with multiple items', async () => {
73+
const numRows = await searchableLists.rowNum();
74+
const name = Guid.create().toString();
75+
const itemNames = ['a \n', 'b\n', 'c\n', 'd\n', 'e'];
76+
await searchableLists.createSearchableList_MultipleItems_Cancels(name, itemNames);
77+
expect(await searchableLists.rowNum()).equal(numRows);
1578
});
16-
// it('should go to entity search page', async () => {
17-
// await searchableLists.goToEntitySearchPage();
18-
// await (await $('#createEntitySearchBtn')).waitForDisplayed({ timeout: 40000 });
19-
// });
20-
// it('should create a new searchable list', async () => {
21-
// const name = Guid.create().toString();
22-
// await searchableLists.createSearchableList_NoItem(name);
23-
// const searchableList = await searchableLists.getFirstRowObject();
24-
// expect((await searchableList.name)).equal(name);
25-
// await searchableLists.cleanup();
26-
// });
27-
// it('should not create a new searchable list', async () => {
28-
// const numRows = await searchableLists.rowNum();
29-
// const name = Guid.create().toString();
30-
// await searchableLists.createSearchableList_NoItem_Cancels(name);
31-
// expect(await searchableLists.rowNum()).equal(numRows);
32-
// });
33-
// it('should create a new searchable list with one item', async () => {
34-
// const name = Guid.create().toString();
35-
// const itemName = Guid.create().toString();
36-
// await searchableLists.createSearchableList_OneItem(name, itemName);
37-
// const searchableList = await searchableLists.getFirstRowObject();
38-
// expect(searchableList.name).equal(name);
39-
// await searchableList.editBtn.click();
40-
// await browser.pause(500);
41-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal(itemName);
42-
// await (await searchableLists.entitySearchEditCancelBtn()).click();
43-
// await searchableLists.cleanup();
44-
// });
45-
// it('should not make a new searchable list with one item', async () => {
46-
// const numRows = await searchableLists.rowNum();
47-
// const name = Guid.create().toString();
48-
// const itemName = Guid.create().toString();
49-
// await searchableLists.createSearchableList_OneItem_Cancels(name, itemName);
50-
// expect(await searchableLists.rowNum()).equal(numRows);
51-
// });
52-
// it('should make a new searchable list with multiple items', async () => {
53-
// const name = Guid.create().toString();
54-
// const itemNames = ['a \n', 'b\n', 'c\n', 'd\n', 'e'];
55-
// await searchableLists.createSearchableList_MultipleItems(name, itemNames);
56-
// const searchableList = await searchableLists.getFirstRowObject();
57-
// expect(searchableList.name).equal(name);
58-
// await searchableList.editBtn.click();
59-
// await browser.pause(500);
60-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal('a');
61-
// await (await searchableLists.entitySearchItemDeleteBtn()).click();
62-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal('b');
63-
// await (await searchableLists.entitySearchItemDeleteBtn()).click();
64-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal('c');
65-
// await (await searchableLists.entitySearchItemDeleteBtn()).click();
66-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal('d');
67-
// await (await searchableLists.entitySearchItemDeleteBtn()).click();
68-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal('e');
69-
// await (await searchableLists.entitySearchItemDeleteBtn()).click();
70-
// await (await searchableLists.entitySearchEditCancelBtn()).click();
71-
// await searchableLists.cleanup();
72-
// });
73-
// it('should not create a searchable list with multiple items', async () => {
74-
// const numRows = await searchableLists.rowNum();
75-
// const name = Guid.create().toString();
76-
// const itemNames = ['a \n', 'b\n', 'c\n', 'd\n', 'e'];
77-
// await searchableLists.createSearchableList_MultipleItems_Cancels(name, itemNames);
78-
// expect(await searchableLists.rowNum()).equal(numRows);
79-
// });
8079
});

eform-client/e2e/Tests/searchable-lists/searchable-lists.delete.spec.ts

Lines changed: 56 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -10,63 +10,61 @@ describe('Entity Search', function () {
1010
await loginPage.open('/auth');
1111
await loginPage.login();
1212
});
13-
it('should assert true is true', () => {
14-
expect(true).equal(true); // this will pass
13+
it('should go to entity search page', async () => {
14+
await searchableLists.goToEntitySearchPage();
15+
await (await $('#createEntitySearchBtn')).waitForDisplayed({ timeout: 40000 });
16+
});
17+
it('should create a new searchable list with only name', async () => {
18+
const name = Guid.create().toString();
19+
await searchableLists.createSearchableList_NoItem(name);
20+
const searchableList = await searchableLists.getFirstRowObject();
21+
expect(searchableList.name).equal(name);
22+
});
23+
it('should delete the list', async () => {
24+
const currentRowNum = await searchableLists.rowNum();
25+
await searchableLists.deleteList();
26+
await browser.pause(1000);
27+
expect(await searchableLists.rowNum()).equal(currentRowNum - 1);
28+
});
29+
it('should create a new searchable list with name and one item', async () => {
30+
//await loginPage.open('/');
31+
//await searchableLists.goToEntitySearchPage();
32+
const name = Guid.create().toString();
33+
const itemName = Guid.create().toString();
34+
await searchableLists.createSearchableList_OneItem(name, itemName);
35+
const searchableList = await searchableLists.getFirstRowObject();
36+
expect(searchableList.name).equal(name);
37+
// await searchableList.editBtn.click();
38+
await (await searchableLists.entitySearchEditBtn(searchableList.index - 1)).click();
39+
expect(await (await searchableLists.firstEntityItemName()).getText()).equal(itemName);
40+
await (await searchableLists.entitySearchEditCancelBtn()).click();
41+
});
42+
it('should delete item from list.', async () => {
43+
//await loginPage.open('/');
44+
//await searchableLists.goToEntitySearchPage();
45+
await searchableLists.deleteItemFromList();
46+
await (await searchableLists.entitySearchEditBtn()).click();
47+
await (await $('#editName')).waitForDisplayed({ timeout: 40000 });
48+
expect(await searchableLists.items()).equal(0);
49+
await (await searchableLists.entitySearchEditCancelBtn()).click();
50+
await searchableLists.cleanup();
51+
});
52+
it('should make a new searchable list with multiple items', async () => {
53+
//await loginPage.open('/');
54+
//await searchableLists.goToEntitySearchPage();
55+
const name = Guid.create().toString();
56+
const itemNames = ['a \n', 'b\n', 'c\n', 'd\n', 'e'];
57+
await searchableLists.createSearchableList_MultipleItems(name, itemNames);
58+
const searchableList = await searchableLists.getFirstRowObject();
59+
expect(searchableList.name).equal(name);
60+
});
61+
it('should delete a list with multiple items.', async () => {
62+
//await loginPage.open('/');
63+
//await searchableLists.goToEntitySearchPage();
64+
const currentRowNum = await searchableLists.rowNum();
65+
await searchableLists.deleteList();
66+
// await loginPage.open('/');
67+
// await searchableLists.goToEntitySearchPage();
68+
expect(await searchableLists.rowNum()).equal(currentRowNum - 1);
1569
});
16-
// it('should go to entity search page', async () => {
17-
// await searchableLists.goToEntitySearchPage();
18-
// await (await $('#createEntitySearchBtn')).waitForDisplayed({ timeout: 40000 });
19-
// });
20-
// it('should create a new searchable list with only name', async () => {
21-
// const name = Guid.create().toString();
22-
// await searchableLists.createSearchableList_NoItem(name);
23-
// const searchableList = await searchableLists.getFirstRowObject();
24-
// expect(searchableList.name).equal(name);
25-
// });
26-
// it('should delete the list', async () => {
27-
// const currentRowNum = await searchableLists.rowNum();
28-
// await searchableLists.deleteList();
29-
// await browser.pause(1000);
30-
// expect(await searchableLists.rowNum()).equal(currentRowNum - 1);
31-
// });
32-
// it('should create a new searchable list with name and one item', async () => {
33-
// //await loginPage.open('/');
34-
// //await searchableLists.goToEntitySearchPage();
35-
// const name = Guid.create().toString();
36-
// const itemName = Guid.create().toString();
37-
// await searchableLists.createSearchableList_OneItem(name, itemName);
38-
// const searchableList = await searchableLists.getFirstRowObject();
39-
// expect(searchableList.name).equal(name);
40-
// await searchableList.editBtn.click();
41-
// expect(await (await searchableLists.firstEntityItemName()).getText()).equal(itemName);
42-
// await (await searchableLists.entitySearchEditCancelBtn()).click();
43-
// });
44-
// it('should delete item from list.', async () => {
45-
// //await loginPage.open('/');
46-
// //await searchableLists.goToEntitySearchPage();
47-
// await searchableLists.deleteItemFromList();
48-
// await (await searchableLists.entitySearchEditBtn()).click();
49-
// await (await $('#editName')).waitForDisplayed({ timeout: 40000 });
50-
// expect(await searchableLists.items()).equal(0);
51-
// await (await searchableLists.entitySearchEditCancelBtn()).click();
52-
// await searchableLists.cleanup();
53-
// });
54-
// it('should make a new searchable list with multiple items', async () => {
55-
// //await loginPage.open('/');
56-
// //await searchableLists.goToEntitySearchPage();
57-
// const name = Guid.create().toString();
58-
// const itemNames = ['a \n', 'b\n', 'c\n', 'd\n', 'e'];
59-
// await searchableLists.createSearchableList_MultipleItems(name, itemNames);
60-
// const searchableList = await searchableLists.getFirstRowObject();
61-
// expect(searchableList.name).equal(name);
62-
// });
63-
// it('should delete a list with multiple items.', async () => {
64-
// //await loginPage.open('/');
65-
// //await searchableLists.goToEntitySearchPage();
66-
// const currentRowNum = await searchableLists.rowNum();
67-
// await searchableLists.deleteList();
68-
// // await loginPage.open('/');
69-
// // await searchableLists.goToEntitySearchPage();
70-
// expect(await searchableLists.rowNum()).equal(currentRowNum - 1);
71-
// });
7270
});

0 commit comments

Comments
 (0)