Skip to content

Commit c1155a6

Browse files
committed
feat(FR-636): add delete and delete-forever test case
1 parent 23e06c2 commit c1155a6

2 files changed

Lines changed: 84 additions & 53 deletions

File tree

e2e/test-util.ts

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

125+
async function removeSearchButton(page: Page, folderName: string) {
126+
await page
127+
.getByTestId('vfolder-filter')
128+
.locator('div')
129+
.filter({ hasText: `Name: ${folderName}` })
130+
.locator('svg')
131+
.first()
132+
.click();
133+
}
134+
135+
export async function verifyVFolder(
136+
page: Page,
137+
folderName: string,
138+
statusTab: 'Created' | 'Trash' = 'Created',
139+
) {
140+
await page.getByRole('link', { name: 'Data' }).click();
141+
await page.getByRole('tab', { name: statusTab }).click();
142+
await page.getByTestId('vfolder-filter').locator('div').nth(2).click();
143+
await page.getByRole('option', { name: 'Name' }).locator('div').click();
144+
const searchInput = page.locator('#rc_select_8');
145+
await searchInput.fill(folderName);
146+
await page.getByRole('button', { name: 'search' }).click();
147+
await expect(
148+
page
149+
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
150+
.filter({ hasText: folderName }),
151+
).toBeVisible();
152+
await removeSearchButton(page, folderName);
153+
}
154+
125155
export async function createVFolderAndVerify(
126156
page: Page,
127157
folderName: string,
128158
usageMode: 'general' | 'model' = 'general',
129159
type: 'user' | 'project' = 'user',
130160
permission: 'rw' | 'ro' = 'rw',
131161
) {
132-
await navigateTo(page, 'data');
162+
await page.getByRole('link', { name: 'Data' }).click();
133163

134164
await page.getByRole('button', { name: 'Create Folder' }).nth(1).click();
135165
await page.getByRole('textbox', { name: 'Folder name' }).fill(folderName);
@@ -140,63 +170,55 @@ export async function createVFolderAndVerify(
140170
await page.getByTestId(`${permission}-permission`).click();
141171

142172
await page.getByRole('button', { name: 'Create', exact: true }).click();
143-
await page.reload();
173+
await verifyVFolder(page, folderName);
174+
}
175+
176+
export async function moveToTrashAndVerify(page: Page, folderName: string) {
177+
await page.getByRole('link', { name: 'Data' }).click();
144178
await page.getByTestId('vfolder-filter').locator('div').nth(2).click();
145179
await page.getByRole('option', { name: 'Name' }).locator('div').click();
146-
await page.locator('#rc_select_8').fill(folderName);
180+
const searchInput = page.locator('#rc_select_8');
181+
await searchInput.fill(folderName);
147182
await page.getByRole('button', { name: 'search' }).click();
148-
await page.getByRole('link', { name: folderName }).click();
149-
await expect(
150-
page
151-
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
152-
.filter({ hasText: folderName }),
153-
).toBeVisible();
183+
await page
184+
.getByRole('row', { name: 'VFolder Identicon e2e-test-' })
185+
.getByRole('button')
186+
.nth(1)
187+
.click();
188+
await page.getByRole('button', { name: 'Move' }).click();
189+
await removeSearchButton(page, folderName);
190+
await verifyVFolder(page, folderName, 'Trash');
154191
}
155192

156-
export async function deleteVFolderAndVerify(page: Page, folderName: string) {
157-
await navigateTo(page, 'data');
158-
const nameInput = page
159-
.locator('#general-folder-storage vaadin-grid-cell-content')
160-
.filter({ hasText: 'Name' })
161-
.locator('vaadin-text-field')
162-
.nth(1)
163-
.locator('input');
164-
await nameInput.click();
165-
await nameInput.fill(folderName);
166-
await page.waitForTimeout(1000);
167-
await page.getByRole('button', { name: 'delete' }).first().click();
193+
export async function deleteForeverAndVerifyFromTrash(
194+
page: Page,
195+
folderName: string,
196+
) {
197+
await page.getByRole('link', { name: 'Data' }).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
168203
await page
169-
.locator('#delete-without-confirm-button')
170-
.getByLabel('delete')
171-
.click();
172-
await page.waitForLoadState('networkidle');
173-
await page.getByRole('tab', { name: 'delete' }).click();
174-
const nameInputInTrash = page
175-
.locator('#trash-bin-folder-storage vaadin-grid-cell-content')
176-
.filter({ hasText: 'Name' })
177-
.locator('vaadin-text-field')
204+
.getByRole('row', { name: 'VFolder Identicon e2e-test-' })
205+
.getByRole('button')
178206
.nth(1)
179-
.locator('input');
180-
await nameInputInTrash.fill(folderName);
181-
// after filling the input, the vaadin-grid will be updated asynchronously. So we need to wait for the grid to be updated.
182-
await page.waitForTimeout(1000);
183-
await page
184-
.locator('vaadin-grid-cell-content')
185-
.filter({ hasText: folderName })
186-
.locator('//following-sibling::*[7]')
187-
.getByRole('button', { name: 'delete_forever' })
188207
.click();
189-
await page
190-
.getByRole('textbox', { name: 'Type folder name to delete' })
191-
.fill(folderName);
208+
await page.locator('#confirmText').click();
209+
await page.locator('#confirmText').fill(folderName);
192210
await page.getByRole('button', { name: 'Delete forever' }).click();
211+
// Verify
212+
await page.getByTestId('vfolder-filter').locator('div').nth(2).click();
213+
await page.getByRole('option', { name: 'Name' }).locator('div').click();
214+
await searchInput.fill(folderName);
215+
await page.getByRole('button', { name: 'search' }).click();
193216
await expect(
194217
page
195-
.locator('vaadin-grid-cell-content')
196-
.filter({ hasText: folderName })
197-
.locator(':visible'),
218+
.getByRole('cell', { name: `VFolder Identicon ${folderName}` })
219+
.filter({ hasText: folderName }),
198220
).toHaveCount(0);
199-
await nameInputInTrash.fill('');
221+
await removeSearchButton(page, folderName);
200222
}
201223

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

e2e/vfolder.test.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
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 ', () => {
14-
test('User can create and delete vFolder', async ({ page }) => {
15+
test.beforeEach(async ({ page }) => {
1516
await loginAsUser(page);
16-
const folderName = 'e2e-test-folder-user-creation' + new Date().getTime();
17+
});
18+
const folderName = 'e2e-test-folder-user-creation' + new Date().getTime();
19+
test('User can create and delete, delete forever vFolder', async ({
20+
page,
21+
}) => {
1722
await createVFolderAndVerify(page, folderName);
18-
await deleteVFolderAndVerify(page, folderName);
23+
await moveToTrashAndVerify(page, folderName);
24+
await deleteForeverAndVerifyFromTrash(page, folderName);
1925
});
2026
});
2127

@@ -89,7 +95,8 @@ test.describe('VFolder sharing', () => {
8995
await page2.getByLabel('Type folder name to leave').fill(sharingFolderName);
9096
await page2.getByRole('button', { name: 'Leave' }).click();
9197
// delete folder
92-
await deleteVFolderAndVerify(page, sharingFolderName);
98+
await moveToTrashAndVerify(page, sharingFolderName);
99+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
93100
await page.close();
94101
await page2.close();
95102
});
@@ -129,7 +136,8 @@ test.describe('VFolder sharing', () => {
129136
.filter({ hasText: sharingFolderName }),
130137
).toBeVisible();
131138
// Delete folder as User before User2 accept the invitation
132-
await deleteVFolderAndVerify(page, sharingFolderName);
139+
await moveToTrashAndVerify(page, sharingFolderName);
140+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
133141
// check the invitation is disappeared
134142
await page2.reload();
135143
await expect(
@@ -181,7 +189,8 @@ test.describe('VFolder sharing', () => {
181189
.filter({ hasText: sharingFolderName }),
182190
).toBeVisible();
183191
// User delete the folder when User2 is trying to accept
184-
await deleteVFolderAndVerify(page, sharingFolderName);
192+
await moveToTrashAndVerify(page, sharingFolderName);
193+
await deleteForeverAndVerifyFromTrash(page, sharingFolderName);
185194
// User2 accept the invitation
186195
await page2
187196
.getByText(`From ${userInfo.user.email}`)

0 commit comments

Comments
 (0)