Skip to content

Commit 7d028d1

Browse files
committed
feat(FR-636): add delete and delete-forever test case
1 parent 6a482b3 commit 7d028d1

2 files changed

Lines changed: 76 additions & 51 deletions

File tree

e2e/test-util.ts

Lines changed: 68 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,28 @@ 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 page.getByRole('button', { name: 'search' }).click();
138+
await expect(
139+
page
140+
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
141+
.filter({ hasText: folderName }),
142+
).toBeVisible();
143+
// remove searching folder name
144+
await page.getByRole('img', { name: 'close' }).locator('svg').click();
145+
}
146+
125147
export async function createVFolderAndVerify(
126148
page: Page,
127149
folderName: string,
@@ -135,69 +157,70 @@ export async function createVFolderAndVerify(
135157
await page.getByRole('textbox', { name: 'Folder name' }).fill(folderName);
136158

137159
// select parsed parameters in create modal form
160+
await page.getByTestId(`${usageMode}-usage-mode`).isVisible({
161+
timeout: 1,
162+
});
138163
await page.getByTestId(`${usageMode}-usage-mode`).click();
164+
await page.getByTestId(`${usageMode}-type`).isVisible({
165+
timeout: 1,
166+
});
139167
await page.getByTestId(`${type}-type`).click();
140168
await page.getByTestId(`${permission}-permission`).click();
141169

142170
await page.getByRole('button', { name: 'Create', exact: true }).click();
143-
await page.reload();
171+
await verifyVFolder(page, folderName);
172+
}
173+
174+
export async function moveToTrashAndVerify(page: Page, folderName: string) {
175+
await navigateTo(page, 'data');
144176
await page.locator('#react-root').getByTitle('Name').click();
145177
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);
178+
const searchInput = page.locator('#rc_select_8');
179+
await searchInput.click();
180+
await searchInput.fill(folderName);
148181
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();
182+
await page
183+
.getByRole('row', { name: 'VFolder Identicon e2e-test-' })
184+
.getByRole('button')
185+
.nth(1)
186+
.click();
187+
await page.getByRole('button', { name: 'Move' }).click();
188+
// remove searching folder name
189+
await page.getByRole('img', { name: 'close' }).locator('svg').click();
190+
await verifyVFolder(page, folderName, 'Trash');
155191
}
156192

157-
export async function deleteVFolderAndVerify(page: Page, folderName: string) {
193+
export async function deleteForeverAndVerifyFromTrash(
194+
page: Page,
195+
folderName: string,
196+
) {
158197
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();
198+
await page.getByRole('tab', { name: 'Trash' }).click();
199+
const searchInput = page.locator('#rc_select_8');
200+
await searchInput.fill(folderName);
201+
await page.getByRole('button', { name: 'search' }).click();
202+
// Delete forever
169203
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')
204+
.getByRole('row', { name: 'VFolder Identicon e2e-test-' })
205+
.getByRole('button')
179206
.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' })
189207
.click();
190-
await page
191-
.getByRole('textbox', { name: 'Type folder name to delete' })
192-
.fill(folderName);
208+
await page.locator('#confirmText').click();
209+
await page.locator('#confirmText').fill(folderName);
193210
await page.getByRole('button', { name: 'Delete forever' }).click();
211+
// Verify
212+
await page.locator('#react-root').getByTitle('Name').click();
213+
await page.getByRole('option', { name: 'Name' }).locator('div').click();
214+
await searchInput.click();
215+
await searchInput.fill(folderName);
216+
await page.getByRole('button', { name: 'search' }).click();
194217
await expect(
195218
page
196-
.locator('vaadin-grid-cell-content')
197-
.filter({ hasText: folderName })
198-
.locator(':visible'),
219+
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
220+
.filter({ hasText: folderName }),
199221
).toHaveCount(0);
200-
await nameInputInTrash.fill('');
222+
// Remove searching folder name
223+
await page.getByRole('img', { name: 'close' }).locator('svg').click();
201224
}
202225

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

e2e/vfolder.test.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
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';
1112
import { test, expect } from '@playwright/test';
1213

1314
test.describe('VFolder ', () => {
15+
const folderName = 'e2e-test-folder-user-creation' + new Date().getTime();
1416
test('User can create and delete vFolder', async ({ page }) => {
1517
await loginAsUser(page);
16-
const folderName = 'e2e-test-folder-user-creation' + new Date().getTime();
1718
await createVFolderAndVerify(page, folderName);
18-
await deleteVFolderAndVerify(page, folderName);
19+
await moveToTrashAndVerify(page, folderName);
20+
await deleteForeverAndVerifyFromTrash(page, folderName);
1921
});
2022
});
2123

@@ -89,7 +91,7 @@ test.describe('VFolder sharing', () => {
8991
await page2.getByLabel('Type folder name to leave').fill(sharingFolderName);
9092
await page2.getByRole('button', { name: 'Leave' }).click();
9193
// delete folder
92-
await deleteVFolderAndVerify(page, sharingFolderName);
94+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
9395
await page.close();
9496
await page2.close();
9597
});
@@ -129,7 +131,7 @@ test.describe('VFolder sharing', () => {
129131
.filter({ hasText: sharingFolderName }),
130132
).toBeVisible();
131133
// Delete folder as User before User2 accept the invitation
132-
await deleteVFolderAndVerify(page, sharingFolderName);
134+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
133135
// check the invitation is disappeared
134136
await page2.reload();
135137
await expect(
@@ -181,7 +183,7 @@ test.describe('VFolder sharing', () => {
181183
.filter({ hasText: sharingFolderName }),
182184
).toBeVisible();
183185
// User delete the folder when User2 is trying to accept
184-
await deleteVFolderAndVerify(page, sharingFolderName);
186+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
185187
// User2 accept the invitation
186188
await page2
187189
.getByText(`From ${userInfo.user.email}`)

0 commit comments

Comments
 (0)