Skip to content

Commit 7c52206

Browse files
committed
adds visual comparison test
1 parent 5c21fdd commit 7c52206

File tree

8 files changed

+85
-12
lines changed

8 files changed

+85
-12
lines changed

tests/e2e/feature-flags.spec.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
DisableFlag,
88
OpenSdkModal,
99
SaveFlags,
10-
deleteLastFlag,
10+
deleteAllFlags,
1111
} from './helper';
1212

1313
// eslint-disable-next-line
@@ -16,18 +16,14 @@ test.use({ storageState: process.env.WP_AUTH_STORAGE });
1616
test.describe('Feature flags', () => {
1717
test.beforeEach(async ({ page, admin }) => {
1818
await admin.visitAdminPage('/');
19-
20-
//Find the feature flags in side menu
2119
await page.getByRole('link', { name: 'Feature Flags' }).click();
22-
23-
//Confirm the setting page header
2420
await expect(
2521
page.getByRole('heading', { name: 'Feature Flags' })
2622
).toBeVisible();
2723
});
2824

2925
test.afterEach(async ({ page }) => {
30-
await deleteLastFlag(page);
26+
await deleteAllFlags(page);
3127
});
3228

3329
test('Create and save new flag successfully', async ({ page }) => {
@@ -61,11 +57,9 @@ test.describe('Feature flags', () => {
6157
});
6258

6359
test('Check duplicate and invalid flag', async ({ page }) => {
64-
//Create new flag
6560
await AddNewFlagAndFill(page, 'testDuplicate');
6661
await SaveFlags(page);
6762

68-
//Confirm save success
6963
expect(
7064
await page.getByLabel('Dismiss this notice').innerText()
7165
).toMatch(/Saved successfully!/);
@@ -80,9 +74,6 @@ test.describe('Feature flags', () => {
8074
expect(page.getByText(ERROR_FLAG_INVALID)).toBeVisible();
8175
expect(page.getByRole('button', { name: 'Save' })).toBeDisabled();
8276

83-
//Delete the flag
84-
await deleteLastFlag(page);
85-
8677
expect(
8778
await page.getByLabel('Dismiss this notice').innerText()
8879
).toMatch(/Saved successfully!/);
@@ -121,7 +112,6 @@ test.describe('Feature flags', () => {
121112
`window.codebFeatureFlags.isEnabled('${flagName}')`
122113
);
123114

124-
//Close SDK modal
125115
await CloseSdkModal(page);
126116
});
127117
});

tests/e2e/helper/index.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,30 @@ export async function deleteLastFlag(page: Page) {
1010
.last()
1111
.getByLabel('Delete Flag')
1212
.click();
13+
1314
await page.getByRole('button', { name: 'Yes' }).click();
1415
},
1516
{ box: true }
1617
);
1718
}
1819

20+
export async function deleteAllFlags(page: Page) {
21+
await test.step(
22+
'Delete all flag',
23+
async () => {
24+
const count = await page
25+
.locator('id=mr-feature-flag-item')
26+
.getByLabel('Delete Flag')
27+
.count();
28+
29+
if (count > 0) {
30+
for (let i = 0; i < count; ++i) await deleteLastFlag(page);
31+
}
32+
},
33+
{ box: true }
34+
);
35+
}
36+
1937
export async function AddNewFlag(page: Page, text: string) {
2038
await test.step(
2139
'Add new flag',
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import { test, expect } from '@wordpress/e2e-test-utils-playwright';
2+
import {
3+
AddNewFlagAndFill,
4+
CloseSdkModal,
5+
DisableFlag,
6+
OpenSdkModal,
7+
SaveFlags,
8+
deleteAllFlags,
9+
} from './helper';
10+
11+
test.describe('Visual tests', () => {
12+
test.use({ storageState: process.env.WP_AUTH_STORAGE });
13+
14+
test.beforeEach(async ({ page, admin }) => {
15+
await admin.visitAdminPage('/');
16+
await page.getByRole('link', { name: 'Feature Flags' }).click();
17+
});
18+
19+
test.afterEach(async ({ page }) => {
20+
await deleteAllFlags(page);
21+
});
22+
23+
test('Feature flags screen without flags', async ({ page }) => {
24+
await expect(page).toHaveScreenshot('no-flags.png');
25+
});
26+
27+
test('Feature flags screen with some flags', async ({ page }) => {
28+
await AddNewFlagAndFill(page, 'hello_test');
29+
await AddNewFlagAndFill(page, '123');
30+
await DisableFlag(page, true);
31+
await AddNewFlagAndFill(page, 'healthCheck');
32+
33+
await SaveFlags(page);
34+
await expect(page).toHaveScreenshot('some-flags.png');
35+
});
36+
37+
test('Toggle feature flag', async ({ page }) => {
38+
await AddNewFlagAndFill(page, 'auth0');
39+
await DisableFlag(page, true);
40+
await expect(page).toHaveScreenshot('flag-disabled.png');
41+
});
42+
43+
test('Delete flag modal', async ({ page }) => {
44+
await AddNewFlagAndFill(page, 'helloWorld');
45+
46+
await page
47+
.locator('id=mr-feature-flag-item')
48+
.last()
49+
.getByLabel('Delete Flag')
50+
.click();
51+
52+
await expect(page).toHaveScreenshot('delete-flag-modal.png');
53+
54+
await page.getByRole('button', { name: 'Yes' }).click();
55+
});
56+
57+
test('SDK modal', async ({ page }) => {
58+
await AddNewFlagAndFill(page, 'drag-drop');
59+
await OpenSdkModal(page);
60+
61+
await expect(page).toHaveScreenshot('sdk-modal.png');
62+
63+
await CloseSdkModal(page);
64+
});
65+
});
67.3 KB
Loading
61.8 KB
Loading
45.1 KB
Loading
112 KB
Loading
71.3 KB
Loading

0 commit comments

Comments
 (0)