Skip to content

Commit 936d54f

Browse files
agatha197ironAiken2
authored andcommitted
feat(FR-636): add delete and delete-forever test case
1 parent 550d41a commit 936d54f

2 files changed

Lines changed: 63 additions & 52 deletions

File tree

e2e/test-util.ts

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,27 @@ export async function fillOutVaadinGridCellFilter(
122122
await nameInput.fill(inputValue);
123123
}
124124

125+
export async function verifyVFolder(
126+
page: Page,
127+
folderName: string,
128+
statusTab: 'Created' | 'Trash' = 'Created',
129+
) {
130+
await navigateTo(page, 'data');
131+
await page.getByRole('tab', { name: statusTab }).click();
132+
await page.locator('#react-root').getByTitle('Name').click();
133+
await page.getByRole('option', { name: 'Name' }).locator('div').click();
134+
const searchInput = page.locator('#rc_select_8');
135+
await searchInput.click();
136+
await searchInput.fill(folderName);
137+
await expect(
138+
page
139+
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
140+
.filter({ hasText: folderName }),
141+
).toBeVisible();
142+
// remove searching folder name
143+
await page.getByRole('img', { name: 'close' }).locator('svg').click();
144+
}
145+
125146
export async function createVFolderAndVerify(
126147
page: Page,
127148
folderName: string,
@@ -140,64 +161,53 @@ export async function createVFolderAndVerify(
140161
await page.getByTestId(`${permission}-permission`).click();
141162

142163
await page.getByRole('button', { name: 'Create', exact: true }).click();
143-
await page.reload();
144-
await page.locator('#react-root').getByTitle('Name').click();
145-
await page.getByRole('option', { name: 'Name' }).locator('div').click();
146-
await page.locator('#rc_select_8').click();
147-
await page.locator('#rc_select_8').fill(folderName);
148-
await page.getByRole('button', { name: 'search' }).click();
149-
await page.getByRole('link', { name: folderName }).click();
150-
await expect(
151-
page
152-
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
153-
.filter({ hasText: folderName }),
154-
).toBeVisible();
164+
await verifyVFolder(page, folderName);
155165
}
156166

157-
export async function deleteVFolderAndVerify(page: Page, folderName: string) {
167+
export async function moveToTrashAndVerify(page: Page, folderName: string) {
158168
await navigateTo(page, 'data');
159-
const nameInput = page
160-
.locator('#general-folder-storage vaadin-grid-cell-content')
161-
.filter({ hasText: 'Name' })
162-
.locator('vaadin-text-field')
163-
.nth(1)
164-
.locator('input');
165-
await nameInput.click();
166-
await nameInput.fill(folderName);
167-
await page.waitForTimeout(1000);
168-
await page.getByRole('button', { name: 'delete' }).first().click();
169+
await page.locator('#react-root').getByTitle('Name').click();
170+
await page.getByRole('option', { name: 'Name' }).locator('div').click();
171+
const searchInput = page.locator('#rc_select_8');
172+
await searchInput.click();
173+
await searchInput.fill(folderName);
169174
await page
170-
.locator('#delete-without-confirm-button')
171-
.getByLabel('delete')
172-
.click();
173-
await page.waitForLoadState('networkidle');
174-
await page.getByRole('tab', { name: 'delete' }).click();
175-
const nameInputInTrash = page
176-
.locator('#trash-bin-folder-storage vaadin-grid-cell-content')
177-
.filter({ hasText: 'Name' })
178-
.locator('vaadin-text-field')
175+
.getByRole('row', { name: 'VFolder Identicon e2e-test-' })
176+
.getByRole('button')
179177
.nth(1)
180-
.locator('input');
181-
await nameInputInTrash.fill(folderName);
182-
// after filling the input, the vaadin-grid will be updated asynchronously. So we need to wait for the grid to be updated.
183-
await page.waitForTimeout(1000);
184-
await page
185-
.locator('vaadin-grid-cell-content')
186-
.filter({ hasText: folderName })
187-
.locator('//following-sibling::*[7]')
188-
.getByRole('button', { name: 'delete_forever' })
189178
.click();
179+
await page.getByRole('button', { name: 'Move' }).click();
180+
// await page.waitForLoadState('networkidle');
181+
await verifyVFolder(page, folderName, 'Trash');
182+
}
183+
184+
export async function deleteForeverAndVerifyFromTrash(
185+
page: Page,
186+
folderName: string,
187+
) {
188+
const searchInput = page.locator('#rc_select_8');
189+
await searchInput.fill(folderName);
190190
await page
191-
.getByRole('textbox', { name: 'Type folder name to delete' })
192-
.fill(folderName);
191+
.getByRole('row', { name: 'VFolder Identicon e2e-test-' })
192+
.getByRole('button')
193+
.nth(1)
194+
.click();
195+
await page.locator('#confirmText').fill(folderName);
196+
// Delete forever
193197
await page.getByRole('button', { name: 'Delete forever' }).click();
198+
// Verify
199+
await navigateTo(page, 'data');
200+
await page.getByRole('tab', { name: 'Trash' }).click();
201+
await page.locator('#react-root').getByTitle('Name').click();
202+
await page.getByRole('option', { name: 'Name' }).locator('div').click();
203+
await searchInput.fill(folderName);
194204
await expect(
195205
page
196-
.locator('vaadin-grid-cell-content')
197-
.filter({ hasText: folderName })
198-
.locator(':visible'),
206+
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
207+
.filter({ hasText: folderName }),
199208
).toHaveCount(0);
200-
await nameInputInTrash.fill('');
209+
// Remove searching folder name
210+
await page.getByRole('img', { name: 'close' }).locator('svg').click();
201211
}
202212

203213
export async function createSession(page: Page, sessionName: string) {

e2e/vfolder.test.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import {
22
createVFolderAndVerify,
3-
deleteVFolderAndVerify,
3+
deleteForeverAndVerifyFromTrash,
44
fillOutVaadinGridCellFilter,
55
loginAsUser,
66
loginAsUser2,
77
logout,
8+
moveToTrashAndVerify,
89
navigateTo,
910
userInfo,
1011
} from './test-util';
@@ -15,7 +16,7 @@ test.describe('VFolder ', () => {
1516
await loginAsUser(page);
1617
const folderName = 'e2e-test-folder-user-creation' + new Date().getTime();
1718
await createVFolderAndVerify(page, folderName);
18-
await deleteVFolderAndVerify(page, folderName);
19+
await deleteForeverAndVerifyFromTrash(page, folderName);
1920
});
2021
});
2122

@@ -89,7 +90,7 @@ test.describe('VFolder sharing', () => {
8990
await page2.getByLabel('Type folder name to leave').fill(sharingFolderName);
9091
await page2.getByRole('button', { name: 'Leave' }).click();
9192
// delete folder
92-
await deleteVFolderAndVerify(page, sharingFolderName);
93+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
9394
await page.close();
9495
await page2.close();
9596
});
@@ -129,7 +130,7 @@ test.describe('VFolder sharing', () => {
129130
.filter({ hasText: sharingFolderName }),
130131
).toBeVisible();
131132
// Delete folder as User before User2 accept the invitation
132-
await deleteVFolderAndVerify(page, sharingFolderName);
133+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
133134
// check the invitation is disappeared
134135
await page2.reload();
135136
await expect(
@@ -181,7 +182,7 @@ test.describe('VFolder sharing', () => {
181182
.filter({ hasText: sharingFolderName }),
182183
).toBeVisible();
183184
// User delete the folder when User2 is trying to accept
184-
await deleteVFolderAndVerify(page, sharingFolderName);
185+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
185186
// User2 accept the invitation
186187
await page2
187188
.getByText(`From ${userInfo.user.email}`)

0 commit comments

Comments
 (0)