Skip to content

Commit 2ad58c7

Browse files
committed
e2e(FR-1221): add visual regression test for vfolder, import and start page (#3988)
resolves #3921 (FR-1221) ## description In this PR, I added vrt file for vfolder, import, and start page. Because I didn't upload image file, you need to run this command before you run test file. `pnpm playwright test e2e/<filename> --update-snapshots` that code makes expected image for vrt.
1 parent d64f8f1 commit 2ad58c7

File tree

10 files changed

+110
-5
lines changed

10 files changed

+110
-5
lines changed

e2e/utils/test-util.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ export async function verifyVFolder(
154154
await page.getByRole('tab', { name: statusTab }).click();
155155
await page.getByTestId('vfolder-filter').locator('div').nth(2).click();
156156
await page.getByRole('option', { name: 'Name' }).locator('div').click();
157-
const searchInput = page.locator('#rc_select_8');
157+
158+
const searchInput = page.locator('input[type="search"].ant-input');
158159
await searchInput.fill(folderName);
159160
await page.getByRole('button', { name: 'search' }).click();
160161
await expect(
@@ -189,15 +190,17 @@ export async function moveToTrashAndVerify(page: Page, folderName: string) {
189190
await page.getByRole('link', { name: 'Data' }).click();
190191
await page.getByTestId('vfolder-filter').locator('div').nth(2).click();
191192
await page.getByRole('option', { name: 'Name' }).locator('div').click();
192-
const searchInput = page.locator('#rc_select_8');
193+
const searchInput = page.locator('input[type="search"].ant-input');
193194
await searchInput.fill(folderName);
194195
await page.getByRole('button', { name: 'search' }).click();
195196
await page
196197
.getByRole('row', { name: `VFolder Identicon ${folderName}` })
197198
.getByRole('button')
198199
.nth(1)
199200
.click();
200-
await page.getByRole('button', { name: 'Move' }).click();
201+
const moveButton = page.getByRole('button', { name: 'Move' });
202+
await expect(moveButton).toBeVisible();
203+
await moveButton.click();
201204
await removeSearchButton(page, folderName);
202205
await verifyVFolder(page, folderName, 'Trash');
203206
}
@@ -208,7 +211,7 @@ export async function deleteForeverAndVerifyFromTrash(
208211
) {
209212
await page.getByRole('link', { name: 'Data' }).click();
210213
await page.getByRole('tab', { name: 'Trash' }).click();
211-
const searchInput = page.locator('#rc_select_8');
214+
const searchInput = page.locator('input[type="search"].ant-input');
212215
await searchInput.fill(folderName);
213216
await page.getByRole('button', { name: 'search' }).click();
214217
// Delete forever
@@ -284,7 +287,7 @@ export async function restoreVFolderAndVerify(page: Page, folderName: string) {
284287
await page.getByRole('tab', { name: 'Trash' }).click();
285288
await page.locator('#react-root').getByTitle('Name').click();
286289
await page.getByRole('option', { name: 'Name' }).locator('div').click();
287-
const searchInput = page.locator('#rc_select_8');
290+
const searchInput = page.locator('input[type="search"].ant-input');
288291
await searchInput.fill(folderName);
289292
// Restore
290293
await page
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { loginAsVisualRegressionUser2 } from '../../utils/test-util';
2+
import { expect, test } from '@playwright/test';
3+
4+
test.beforeEach(async ({ page }) => {
5+
await page.setViewportSize({
6+
width: 1500,
7+
height: 1500,
8+
});
9+
await loginAsVisualRegressionUser2(page);
10+
await page.getByRole('menuitem', { name: 'Import & Run' }).click();
11+
await page.waitForLoadState('networkidle');
12+
});
13+
14+
test('Import & Run page Visual Regression Test', async ({ page }) => {
15+
await expect(page).toHaveScreenshot('import_page.png', {
16+
mask: [
17+
page.locator('#cpu-usage-bar #front'),
18+
page.locator('#cpu-usage-bar-2 #front'),
19+
page.locator('#mem-usage-bar'),
20+
page.locator('#mem-usage-bar-2'),
21+
page.locator('#concurrency-usage-bar'),
22+
],
23+
fullPage: true,
24+
});
25+
});
130 KB
Loading
95.9 KB
Loading
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { loginAsVisualRegressionUser2 } from '../../utils/test-util';
2+
import { expect, test } from '@playwright/test';
3+
4+
test.beforeEach(async ({ page }) => {
5+
await page.setViewportSize({
6+
width: 1500,
7+
height: 1000,
8+
});
9+
await loginAsVisualRegressionUser2(page);
10+
await page.getByRole('menuitem', { name: 'Start' }).click();
11+
await page.waitForLoadState('networkidle');
12+
});
13+
14+
test('Start page Visual Regression Test', async ({ page }) => {
15+
await expect(page).toHaveScreenshot('start_page.png', {
16+
fullPage: true,
17+
});
18+
});
25.3 KB
Loading
62.6 KB
Loading
18.7 KB
Loading
102 KB
Loading
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { loginAsVisualRegressionUser2 } from '../../utils/test-util';
2+
import { expect, test } from '@playwright/test';
3+
4+
test.beforeEach(async ({ page }) => {
5+
await loginAsVisualRegressionUser2(page);
6+
await page.setViewportSize({
7+
width: 1500,
8+
height: 1000,
9+
});
10+
await page.getByRole('link', { name: 'Data' }).click();
11+
await page.getByText('This storage backend').waitFor();
12+
});
13+
14+
test.describe('Vfolder page Visual Regression Test', () => {
15+
test('Full page', async ({ page }) => {
16+
await expect(page).toHaveScreenshot('vfolder_page.png', {
17+
fullPage: true,
18+
});
19+
});
20+
21+
test('Create Folder modal', async ({ page }) => {
22+
await page.getByRole('button', { name: 'Create Folder' }).nth(1).click();
23+
const folderCreationModal = page.locator('.ant-modal-content').first();
24+
await expect(folderCreationModal).toHaveScreenshot(
25+
'create_folder_modal.png',
26+
);
27+
await page.getByRole('button', { name: 'Close' }).click();
28+
});
29+
30+
test.describe('existing folder action modal', () => {
31+
test('Folder info modal', async ({ page }) => {
32+
await page.getByRole('link', { name: 'model_folder' }).click();
33+
await page
34+
.getByRole('heading', {
35+
name: 'model_folder',
36+
exact: true,
37+
})
38+
.waitFor();
39+
40+
const folderInfoModal = page.locator('.ant-modal-content').first();
41+
await expect(folderInfoModal).toHaveScreenshot('folder_info_modal.png');
42+
await page.getByRole('button', { name: 'Close' }).click();
43+
});
44+
45+
test('Modify Permission modal', async ({ page }) => {
46+
await page
47+
.getByRole('row', { name: `VFolder Identicon model_folder` })
48+
.getByRole('button')
49+
.first()
50+
.click();
51+
await page.getByText('Modify Permissions').waitFor();
52+
const modifyPermissionModal = page.locator('.ant-modal-content').first();
53+
await expect(modifyPermissionModal).toHaveScreenshot(
54+
'modify_permission_modal.png',
55+
);
56+
await page.getByRole('button', { name: 'Close' }).click();
57+
});
58+
});
59+
});

0 commit comments

Comments
 (0)