Skip to content

Commit fc6c01b

Browse files
Copilotrenemadsen
andcommitted
Replace cy.wait() with API intercepts in navigation menu tests
Co-authored-by: renemadsen <[email protected]>
1 parent f85fa52 commit fc6c01b

File tree

4 files changed

+70
-102
lines changed

4 files changed

+70
-102
lines changed

eform-client/cypress/e2e/c/navigation-menu.create-item.spec.cy.ts

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,23 @@ describe('Navigation menu - Create item', function () {
88
cy.intercept('GET', '**/api/navigation-menu').as('loadMenu');
99
navigationMenuPage.goToMenuEditor();
1010
cy.wait('@loadMenu', { timeout: 30000 });
11-
cy.wait(1000);
1211
});
1312

1413
it('element must be moved from templates to list', () => {
15-
cy.wait(1000);
16-
1714
// Get initial count
1815
navigationMenuPage.getMenuItems().its('length').then(initialCount => {
1916
navigationMenuPage.collapseTemplates(0);
2017
navigationMenuPage.createMenuItemFromTemplate(0);
21-
cy.wait(500);
2218

23-
// Verify count increased
19+
// Verify count increased - wait for DOM update
2420
navigationMenuPage.getMenuItems().should('have.length', initialCount + 1);
2521

22+
// Intercept save operation
23+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
2624
navigationMenuPage.clickSaveMenuBtn();
27-
cy.wait(500);
25+
cy.wait('@saveMenu', { timeout: 30000 });
2826

2927
navigationMenuPage.openEditMenuItem(0);
30-
cy.wait(500);
3128

3229
// Verify link field
3330
cy.get('#editLinkInput').should('have.value', '/');
@@ -37,17 +34,16 @@ describe('Navigation menu - Create item', function () {
3734
cy.get('#editItemTranslation0_0_1').should('have.value', 'Mine eForms');
3835
cy.get('#editItemTranslation0_0_2').should('have.value', 'Meine eForms');
3936

37+
// Intercept edit save operation
38+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenuEdit');
4039
navigationMenuPage.editItemSave();
41-
cy.wait(500);
40+
cy.wait('@saveMenuEdit', { timeout: 30000 });
4241

4342
navigationMenuPage.collapseTemplates(0);
44-
cy.wait(500);
4543
});
4644
});
4745

4846
it('element must be created from custom link', () => {
49-
cy.wait(1500);
50-
5147
const customLink = {
5248
securityGroups: [],
5349
link: 'test0',
@@ -57,18 +53,18 @@ describe('Navigation menu - Create item', function () {
5753
navigationMenuPage.getMenuItems().its('length').then(initialCount => {
5854
navigationMenuPage.collapseTemplates(1);
5955
navigationMenuPage.createCustomLink(customLink);
60-
cy.wait(1000);
6156

62-
// Verify count increased
57+
// Verify count increased - wait for DOM update
6358
navigationMenuPage.getMenuItems().should('have.length', initialCount + 1);
6459

60+
// Intercept save operation
61+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
6562
navigationMenuPage.clickSaveMenuBtn();
66-
cy.wait(500);
63+
cy.wait('@saveMenu', { timeout: 30000 });
6764

6865
// Open last item for editing
6966
navigationMenuPage.getMenuItems().its('length').then(count => {
7067
navigationMenuPage.openEditMenuItem(count - 1);
71-
cy.wait(500);
7268

7369
// Verify link
7470
cy.get('#editLinkInput').should('have.value', customLink.link);
@@ -80,16 +76,15 @@ describe('Navigation menu - Create item', function () {
8076
});
8177
});
8278

83-
cy.wait(500);
79+
// Intercept edit save operation
80+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenuEdit');
8481
navigationMenuPage.editItemSave();
85-
cy.wait(500);
82+
cy.wait('@saveMenuEdit', { timeout: 30000 });
8683
});
8784
});
8885
});
8986

9087
it('element must be created from custom dropdown', () => {
91-
cy.wait(1500);
92-
9388
const dropdown = {
9489
securityGroups: [],
9590
translations: ['test1', 'test2', 'test3']
@@ -98,18 +93,18 @@ describe('Navigation menu - Create item', function () {
9893
navigationMenuPage.getMenuItems().its('length').then(initialCount => {
9994
navigationMenuPage.collapseTemplates(1);
10095
navigationMenuPage.createCustomDropdown(dropdown);
101-
cy.wait(1500);
10296

103-
// Verify count increased
97+
// Verify count increased - wait for DOM update
10498
navigationMenuPage.getMenuItems().should('have.length', initialCount + 1);
10599

100+
// Intercept save operation
101+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
106102
navigationMenuPage.clickSaveMenuBtn();
107-
cy.wait(500);
103+
cy.wait('@saveMenu', { timeout: 30000 });
108104

109105
// Open last item for editing
110106
navigationMenuPage.getMenuItems().its('length').then(count => {
111107
navigationMenuPage.openEditMenuItem(count - 1);
112-
cy.wait(500);
113108

114109
// Verify translations
115110
dropdown.translations.forEach((translation, i) => {
@@ -118,15 +113,15 @@ describe('Navigation menu - Create item', function () {
118113
});
119114
});
120115

116+
// Intercept edit save operation
117+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenuEdit');
121118
navigationMenuPage.editItemSave();
122-
cy.wait(500);
119+
cy.wait('@saveMenuEdit', { timeout: 30000 });
123120
});
124121
});
125122
});
126123

127124
it('element must be created from custom dropdown with security group', () => {
128-
cy.wait(1500);
129-
130125
const dropdown = {
131126
securityGroups: ['eForm admins'],
132127
translations: ['test1', 'test2', 'test3']
@@ -135,18 +130,18 @@ describe('Navigation menu - Create item', function () {
135130
navigationMenuPage.getMenuItems().its('length').then(initialCount => {
136131
navigationMenuPage.collapseTemplates(1);
137132
navigationMenuPage.createCustomDropdown(dropdown);
138-
cy.wait(500);
139133

140-
// Verify count increased
134+
// Verify count increased - wait for DOM update
141135
navigationMenuPage.getMenuItems().should('have.length', initialCount + 1);
142136

137+
// Intercept save operation
138+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
143139
navigationMenuPage.clickSaveMenuBtn();
144-
cy.wait(500);
140+
cy.wait('@saveMenu', { timeout: 30000 });
145141

146142
// Open last item for editing
147143
navigationMenuPage.getMenuItems().its('length').then(count => {
148144
navigationMenuPage.openEditMenuItem(count - 1);
149-
cy.wait(500);
150145

151146
// Verify security groups
152147
dropdown.securityGroups.forEach((group, i) => {
@@ -160,14 +155,17 @@ describe('Navigation menu - Create item', function () {
160155
});
161156
});
162157

158+
// Intercept edit save operation
159+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenuEdit');
163160
navigationMenuPage.editItemSave();
164-
cy.wait(500);
161+
cy.wait('@saveMenuEdit', { timeout: 30000 });
165162
});
166163
});
167164
});
168165

169166
afterEach(() => {
167+
cy.intercept('POST', '**/api/navigation-menu/reset').as('resetMenu');
170168
navigationMenuPage.resetMenu();
171-
cy.wait(2000);
169+
cy.wait('@resetMenu', { timeout: 30000 });
172170
});
173171
});

eform-client/cypress/e2e/c/navigation-menu.delete-item.spec.cy.ts

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,24 @@ describe('Navigation menu - Delete item', function () {
88
cy.intercept('GET', '**/api/navigation-menu').as('loadMenu');
99
navigationMenuPage.goToMenuEditor();
1010
cy.wait('@loadMenu', { timeout: 30000 });
11-
cy.wait(2000);
1211
});
1312

1413
it('element must be created from custom dropdown which elements and create templates elements', () => {
15-
cy.wait(2000);
16-
1714
const dropdown = {
1815
securityGroups: [],
1916
translations: ['test1', 'test', 'test3']
2017
};
2118

2219
navigationMenuPage.getMenuItems().its('length').then(initialCount => {
2320
navigationMenuPage.collapseTemplates(1);
24-
cy.wait(1500);
2521

2622
navigationMenuPage.createCustomDropdown(dropdown);
27-
cy.wait(500);
2823

2924
// Create 2 items from templates menu
3025
navigationMenuPage.collapseTemplates(0);
31-
cy.wait(500);
3226
navigationMenuPage.createMenuItemFromTemplate(2);
33-
cy.wait(500);
3427
navigationMenuPage.createMenuItemFromTemplate(3);
35-
cy.wait(500);
3628
navigationMenuPage.collapseTemplates(0);
37-
cy.wait(1500);
3829

3930
// Verify 3 elements were created (1 dropdown + 2 template items)
4031
navigationMenuPage.getMenuItems().should('have.length', initialCount + 3);
@@ -43,55 +34,47 @@ describe('Navigation menu - Delete item', function () {
4334
navigationMenuPage.getMenuItems().its('length').then(currentCount => {
4435
navigationMenuPage.collapseMenuItemDropdown(currentCount - 1);
4536
navigationMenuPage.dragTemplateOnElementInCreatedDropdown(1, currentCount - 1);
46-
cy.wait(500);
4737
navigationMenuPage.dragTemplateOnElementInCreatedDropdown(2, currentCount - 1);
48-
cy.wait(500);
4938
navigationMenuPage.dragTemplateOnElementInCreatedDropdown(3, currentCount - 1);
50-
cy.wait(500);
5139

5240
// Verify 3 items in dropdown
5341
navigationMenuPage.getDropdownBodyChilds(currentCount - 1).should('have.length', 3);
5442

5543
// Save menu
44+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
5645
navigationMenuPage.clickSaveMenuBtn();
57-
cy.wait(500);
46+
cy.wait('@saveMenu', { timeout: 30000 });
5847
});
5948
});
6049
});
6150

6251
it('should before deleted items from custom dropdown and items menu', () => {
63-
cy.wait(2000);
64-
6552
navigationMenuPage.getMenuItems().its('length').then(menuItemsCount => {
6653
// Get count of elements in dropdown
6754
navigationMenuPage.getDropdownBodyChilds(menuItemsCount - 1).its('length').then(dropdownCount => {
6855

6956
// Delete 3 elements from dropdown
7057
navigationMenuPage.deleteElementFromDropdown(menuItemsCount - 1, 0);
71-
cy.wait(500);
7258
navigationMenuPage.deleteElementFromDropdown(menuItemsCount - 1, 0);
73-
cy.wait(500);
7459
navigationMenuPage.deleteElementFromDropdown(menuItemsCount - 1, 0);
75-
cy.wait(500);
7660

61+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu1');
7762
navigationMenuPage.clickSaveMenuBtn();
78-
cy.wait(500);
63+
cy.wait('@saveMenu1', { timeout: 30000 });
7964

8065
// Verify dropdown is empty
8166
navigationMenuPage.getDropdownBodyChilds(menuItemsCount - 1).should('have.length', dropdownCount - 3);
8267

8368
// Delete menu items
8469
navigationMenuPage.deleteElementFromMenuItems(0);
85-
cy.wait(500);
8670
navigationMenuPage.deleteElementFromMenuItems(0); // delete 2 template elements
87-
cy.wait(500);
8871

8972
navigationMenuPage.getMenuItems().its('length').then(currentCount => {
9073
navigationMenuPage.deleteElementFromMenuItems(currentCount - 1); // delete created dropdown
91-
cy.wait(500);
9274

75+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu2');
9376
navigationMenuPage.clickSaveMenuBtn();
94-
cy.wait(500);
77+
cy.wait('@saveMenu2', { timeout: 30000 });
9578

9679
// Verify items were deleted
9780
navigationMenuPage.getMenuItems().should('have.length', menuItemsCount - 3);
@@ -101,7 +84,8 @@ describe('Navigation menu - Delete item', function () {
10184
});
10285

10386
afterEach(() => {
87+
cy.intercept('POST', '**/api/navigation-menu/reset').as('resetMenu');
10488
navigationMenuPage.resetMenu();
105-
cy.wait(1500);
89+
cy.wait('@resetMenu', { timeout: 30000 });
10690
});
10791
});

eform-client/cypress/e2e/c/navigation-menu.drag-item.spec.cy.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ describe('Navigation menu - Drag item', function () {
88
cy.intercept('GET', '**/api/navigation-menu').as('loadMenu');
99
navigationMenuPage.goToMenuEditor();
1010
cy.wait('@loadMenu', { timeout: 30000 });
11-
cy.wait(5000);
1211
});
1312

1413
it('element must be created from custom dropdown which elements', () => {
@@ -20,18 +19,14 @@ describe('Navigation menu - Drag item', function () {
2019
navigationMenuPage.getMenuItems().its('length').then(initialCount => {
2120
navigationMenuPage.collapseTemplates(1);
2221
navigationMenuPage.createCustomDropdown(dropdown);
23-
cy.wait(500);
2422

2523
navigationMenuPage.getMenuItems().should('have.length', initialCount + 1);
2624

2725
navigationMenuPage.getMenuItems().its('length').then(currentCount => {
2826
navigationMenuPage.collapseMenuItemDropdown(currentCount - 1);
2927
navigationMenuPage.dragTemplateOnElementInCreatedDropdown(1, currentCount - 1);
30-
cy.wait(500);
3128
navigationMenuPage.dragTemplateOnElementInCreatedDropdown(2, currentCount - 1);
32-
cy.wait(500);
3329
navigationMenuPage.dragTemplateOnElementInCreatedDropdown(3, currentCount - 1);
34-
cy.wait(500);
3530

3631
navigationMenuPage.getDropdownBodyChilds(currentCount - 1).should('have.length', 3);
3732
});
@@ -61,27 +56,27 @@ describe('Navigation menu - Drag item', function () {
6156
// Edit translations in each dropdown element
6257
array.forEach(data => {
6358
navigationMenuPage.editTranslationsOnDropdownBodyChilds(data);
64-
cy.wait(500);
6559
});
6660

61+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
6762
navigationMenuPage.clickSaveMenuBtn();
68-
cy.wait(500);
63+
cy.wait('@saveMenu', { timeout: 30000 });
6964

7065
// Verify all translations were saved
7166
array.forEach(item => {
7267
navigationMenuPage.getDropdownBodyChilds(item.indexDropdownInMenu)
7368
.eq(item.indexChildDropdown)
7469
.find('#editBtn')
7570
.click();
76-
cy.wait(500);
7771

7872
item.translations_array.forEach((translation, i) => {
7973
cy.get(`#editItemTranslation${item.indexDropdownInMenu}_${item.indexChildDropdown}_${i}`)
8074
.should('have.value', translation);
8175
});
8276

77+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenuEdit');
8378
navigationMenuPage.editItemSave();
84-
cy.wait(500);
79+
cy.wait('@saveMenuEdit', { timeout: 30000 });
8580
});
8681
});
8782
});
@@ -90,10 +85,10 @@ describe('Navigation menu - Drag item', function () {
9085
navigationMenuPage.getMenuItems().its('length').then(menuCount => {
9186
// Swap elements within dropdown
9287
navigationMenuPage.dragAndDropElementOfDropdown(menuCount, 2, 0);
93-
cy.wait(500);
9488

89+
cy.intercept('POST', '**/api/navigation-menu').as('saveMenu');
9590
navigationMenuPage.clickSaveMenuBtn();
96-
cy.wait(500);
91+
cy.wait('@saveMenu', { timeout: 30000 });
9792

9893
// Verify order after swap
9994
const itemsAfterSwap = [
@@ -105,13 +100,12 @@ describe('Navigation menu - Drag item', function () {
105100
navigationMenuPage.getDropdownBodyChilds(menuCount - 1).each(($el, index) => {
106101
cy.wrap($el).invoke('text').should('eq', itemsAfterSwap[index]);
107102
});
108-
109-
cy.wait(500);
110103
});
111104
});
112105

113106
afterEach(() => {
107+
cy.intercept('POST', '**/api/navigation-menu/reset').as('resetMenu');
114108
navigationMenuPage.resetMenu();
115-
cy.wait(500);
109+
cy.wait('@resetMenu', { timeout: 30000 });
116110
});
117111
});

0 commit comments

Comments
 (0)