Skip to content

Commit 69a971b

Browse files
authored
Merge pull request #7158 from microting/copilot/migrate-wdio-tests-to-cypress-again
Migrate Folders Tests from wdio to Cypress
2 parents f1e868c + 88def58 commit 69a971b

File tree

9 files changed

+1238
-39
lines changed

9 files changed

+1238
-39
lines changed

WDIO_TO_CYPRESS_MIGRATION.md

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ This document tracks the migration of WebDriverIO (wdio) e2e tests to Cypress te
77
## Current Status
88

99
- **Total wdio tests**: 38
10-
- **Cypress tests implemented**: 31
11-
- **Tests remaining to migrate**: 19
10+
- **Cypress tests implemented**: 37
11+
- **Tests remaining to migrate**: 13
1212

1313
## Tests Already Migrated to Cypress ✓
1414

@@ -46,7 +46,15 @@ The following wdio tests have been successfully migrated to Cypress:
4646
### User Administration
4747
- ✓ user-administration.name-change.spec.ts (cypress/e2e/e/)
4848

49-
## Tests to Migrate (23 tests)
49+
### Folders
50+
- ✓ folder-tree.add.spec.cy.ts (cypress/e2e/f/)
51+
- ✓ folder-tree.edit.spec.cy.ts (cypress/e2e/f/)
52+
- ✓ folder-tree.delete.spec.cy.ts (cypress/e2e/f/)
53+
- ✓ folder-child.add.spec.cy.ts (cypress/e2e/f/)
54+
- ✓ folder-child.edit.spec.cy.ts (cypress/e2e/f/)
55+
- ✓ folder-child.delete.spec.cy.ts (cypress/e2e/f/)
56+
57+
## Tests to Migrate (17 tests)
5058

5159
The following tests need to be migrated from wdio to Cypress. They are organized by functional area for easier sub-issue creation.
5260

@@ -101,34 +109,50 @@ Tests to migrate:
101109

102110
---
103111

104-
### 4. Folders - Folder Tree (3 tests)
112+
### 4. Folders - Folder Tree (3 tests)
105113

106114
**Category**: Folder Management - Tree Structure
107115
**Priority**: Medium
108-
**Location**: e2e/Tests/folders/folder-tree/
116+
**Location**: e2e/Tests/folders/folder-tree/
117+
**Migrated to**: cypress/e2e/f/
109118

110-
Tests to migrate:
111-
- [ ] folder-tree.add.spec.ts
112-
- [ ] folder-tree.delete.spec.ts
113-
- [ ] folder-tree.edit.spec.ts
119+
Tests migrated:
120+
- folder-tree.add.spec.cy.ts
121+
- folder-tree.edit.spec.cy.ts
122+
- folder-tree.delete.spec.cy.ts
114123

115124
**Description**: Tests for hierarchical folder tree management including creating, editing, and deleting folder nodes.
116125

126+
**Key Functionality**:
127+
- Creating folders with name and description
128+
- Creating folders with formatted descriptions (bold, italic, underline, strike-through)
129+
- Editing folder name and description
130+
- Deleting folders with confirmation
131+
- Cancel operations verification
132+
117133
---
118134

119-
### 5. Folders - Folder Child (3 tests)
135+
### 5. Folders - Folder Child (3 tests)
120136

121137
**Category**: Folder Management - Child Folders
122138
**Priority**: Medium
123-
**Location**: e2e/Tests/folders/folder-child/
139+
**Location**: e2e/Tests/folders/folder-child/
140+
**Migrated to**: cypress/e2e/f/
124141

125-
Tests to migrate:
126-
- [ ] folder-child.add.spec.ts
127-
- [ ] folder-child.delete.spec.ts
128-
- [ ] folder-child.edit.spec.ts
142+
Tests migrated:
143+
- folder-child.add.spec.cy.ts
144+
- folder-child.edit.spec.cy.ts
145+
- folder-child.delete.spec.cy.ts
129146

130147
**Description**: Tests for child folder management within the folder hierarchy.
131148

149+
**Key Functionality**:
150+
- Creating child folders under parent folders
151+
- Editing child folder name and description
152+
- Deleting child folders
153+
- Maintaining parent-child relationships
154+
- Expanding/collapsing folder tree nodes
155+
132156
---
133157

134158
### 6. Navigation Menu (4 tests) ✓
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
import loginPage from '../Login.page';
2+
import foldersPage from '../Folders.page';
3+
import { generateRandmString } from '../helper-functions';
4+
import { expect } from 'chai';
5+
import {applicationLanguages} from '../../../src/app/common/const/application-languages.const';
6+
7+
const parentFolderName = generateRandmString();
8+
9+
describe('Folders - Add child folder', function () {
10+
before(() => {
11+
cy.visit('http://localhost:4200');
12+
loginPage.login();
13+
foldersPage.goToFoldersPage();
14+
15+
// Create a parent folder
16+
const description = generateRandmString();
17+
foldersPage.newFolderBtn().click();
18+
cy.wait(500);
19+
cy.get('#cancelCreateBtn').should('be.visible');
20+
21+
const da = applicationLanguages[0];
22+
cy.get('#createLanguageSelector input').type(da.text);
23+
cy.get('ng-dropdown-panel .ng-option').contains(da.text).click();
24+
cy.wait(500);
25+
26+
const nameIndex = applicationLanguages.findIndex((x) => x.text === da.text);
27+
cy.get(`#createFolderNameTranslation_${nameIndex}`).type(parentFolderName);
28+
cy.wait(500);
29+
30+
cy.get('#createLanguageSelector input').clear().type(da.text);
31+
cy.get('ng-dropdown-panel .ng-option').contains(da.text).click();
32+
cy.wait(500);
33+
cy.get(`#createFolderDescriptionTranslation_${nameIndex} .NgxEditor__Content`).type(description);
34+
cy.wait(500);
35+
36+
cy.get('#folderSaveBtn').click();
37+
cy.get('#spinner-animation').should('not.exist', { timeout: 90000 });
38+
foldersPage.newFolderBtn().should('be.visible');
39+
cy.wait(500);
40+
});
41+
42+
it('should create child folder with name and description', () => {
43+
const childName = generateRandmString();
44+
const childDescription = generateRandmString();
45+
46+
// Count children before creation
47+
cy.get('mat-tree > mat-tree-node.children').then(($children) => {
48+
const rowCountBeforeCreation = $children.length;
49+
50+
// Open parent folder menu and create child
51+
cy.get('.folder-tree-name').contains(parentFolderName).parents('mat-tree-node').find('button.mat-menu-trigger').click();
52+
cy.get('#createFolderChildBtn').should('be.visible').click();
53+
cy.get('#cancelCreateBtn').should('be.visible');
54+
55+
// Enter child folder details
56+
const da = applicationLanguages[0];
57+
cy.get('#createLanguageSelector input').type(da.text);
58+
cy.get('ng-dropdown-panel .ng-option').contains(da.text).click();
59+
cy.wait(500);
60+
61+
const nameIndex = applicationLanguages.findIndex((x) => x.text === da.text);
62+
cy.get(`#createFolderNameTranslation_${nameIndex}`).type(childName);
63+
cy.wait(500);
64+
65+
cy.get('#createLanguageSelector input').clear().type(da.text);
66+
cy.get('ng-dropdown-panel .ng-option').contains(da.text).click();
67+
cy.wait(500);
68+
cy.get(`#createFolderDescriptionTranslation_${nameIndex} .NgxEditor__Content`).type(childDescription);
69+
cy.wait(500);
70+
71+
// Save
72+
cy.get('#folderSaveBtn').click();
73+
cy.get('#spinner-animation').should('not.exist', { timeout: 90000 });
74+
foldersPage.newFolderBtn().should('be.visible');
75+
cy.wait(500);
76+
77+
// Expand parent to see children
78+
cy.get('.folder-tree-name').contains(parentFolderName).parents('mat-tree-node').find('button[aria-label="Toggle"]').then(($btn) => {
79+
if ($btn.attr('aria-expanded') === 'false') {
80+
cy.wrap($btn).click();
81+
cy.wait(1000);
82+
}
83+
});
84+
85+
// Verify child was created
86+
cy.get('mat-tree > mat-tree-node.children').then(($childrenAfter) => {
87+
const rowCountAfterCreation = $childrenAfter.length;
88+
expect(
89+
rowCountAfterCreation,
90+
'Number of child rows hasn\'t changed after creating new child folder'
91+
).to.equal(rowCountBeforeCreation + 1);
92+
});
93+
94+
// Verify child folder exists
95+
cy.get('mat-tree-node.children .folder-tree-name').contains(childName).should('exist');
96+
});
97+
});
98+
99+
after('should delete folders', () => {
100+
// Delete parent folder (which will delete children too)
101+
cy.get('.folder-tree-name').contains(parentFolderName).parents('mat-tree-node').first().find('button.mat-menu-trigger').click();
102+
cy.get('#deleteFolderTreeBtn').click();
103+
cy.get('#saveDeleteBtn').should('be.visible').click();
104+
cy.get('#spinner-animation').should('not.exist', { timeout: 90000 });
105+
foldersPage.newFolderBtn().should('be.visible');
106+
cy.wait(500);
107+
108+
// Verify all folders deleted
109+
foldersPage.rowNum().then((count) => {
110+
expect(count, 'Folders not deleted').to.equal(0);
111+
});
112+
});
113+
});

0 commit comments

Comments
 (0)