Skip to content

Commit a585b8b

Browse files
authored
Testing: Add an e2e test about view persistence to avoid regressions (WordPress#72133)
1 parent 5992373 commit a585b8b

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
/**
2+
* WordPress dependencies
3+
*/
4+
const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' );
5+
6+
test.describe( 'Pages View Persistence', () => {
7+
test.beforeAll( async ( { requestUtils } ) => {
8+
await requestUtils.activateTheme( 'emptytheme' );
9+
// Create some test pages
10+
await requestUtils.createPage( {
11+
title: 'Test Page 1',
12+
status: 'publish',
13+
} );
14+
await requestUtils.createPage( {
15+
title: 'Test Page 2',
16+
status: 'draft',
17+
} );
18+
} );
19+
20+
test.afterAll( async ( { requestUtils } ) => {
21+
await requestUtils.activateTheme( 'twentytwentyone' );
22+
await requestUtils.deleteAllPages();
23+
} );
24+
25+
test.beforeEach( async ( { admin, page } ) => {
26+
await admin.visitSiteEditor();
27+
await page.getByRole( 'button', { name: 'Pages' } ).click();
28+
29+
const resetButton = page.getByRole( 'button', { name: 'Reset view' } );
30+
if ( await resetButton.isVisible() ) {
31+
await resetButton.click();
32+
await expect( resetButton ).toBeHidden();
33+
}
34+
} );
35+
36+
test( 'persists table layout and shows reset button across navigation', async ( {
37+
page,
38+
} ) => {
39+
// Change layout to table view
40+
await page.getByRole( 'button', { name: 'Layout' } ).click();
41+
await page.getByRole( 'menuitemradio', { name: 'Table' } ).click();
42+
43+
// Verify table is visible
44+
await expect( page.getByRole( 'table' ) ).toBeVisible();
45+
46+
// Verify the Reset button appears when view is modified
47+
const resetButton = page.getByRole( 'button', { name: 'Reset view' } );
48+
await expect( resetButton ).toBeVisible();
49+
await expect( resetButton ).toBeEnabled();
50+
51+
// Navigate to Drafts view
52+
await page
53+
.getByRole( 'button', {
54+
name: 'Drafts',
55+
exact: true,
56+
} )
57+
.click();
58+
59+
// On Drafts view, we should be back to default view (list)
60+
// and Reset button should not be visible/enabled for modifications
61+
await expect( page.getByRole( 'grid' ) ).toBeVisible();
62+
await expect( resetButton ).toBeHidden();
63+
// Verify canvas (preview) is visible in list layout
64+
await expect(
65+
page.getByRole( 'region', { name: 'Editor content' } )
66+
).toBeVisible();
67+
68+
// Navigate back to All Pages
69+
await page
70+
.getByRole( 'button', {
71+
name: 'All Pages',
72+
} )
73+
.click();
74+
75+
// Verify table layout persisted
76+
await expect( page.getByRole( 'table' ) ).toBeVisible();
77+
78+
// Verify Reset button is still visible
79+
await expect( resetButton ).toBeVisible();
80+
await expect( resetButton ).toBeEnabled();
81+
82+
// Click the Reset button
83+
await resetButton.click();
84+
85+
// wait for the reset button to be hidden
86+
await expect( resetButton ).toBeHidden();
87+
88+
// Verify view returns to list layout
89+
await expect( page.getByRole( 'grid' ) ).toBeVisible();
90+
91+
// Verify canvas is still visible in list layout
92+
await expect(
93+
page.getByRole( 'region', { name: 'Editor content' } )
94+
).toBeVisible();
95+
} );
96+
} );

0 commit comments

Comments
 (0)