/
sidebar.spec.js
136 lines (112 loc) · 3.61 KB
/
sidebar.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/**
* WordPress dependencies
*/
const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' );
test.describe( 'Sidebar', () => {
test.beforeAll( async ( { requestUtils } ) => {
// The test expects clean user preferences.
await requestUtils.resetPreferences();
} );
test.beforeEach( async ( { admin } ) => {
await admin.createNewPost();
} );
test( 'should have sidebar visible at the start with document sidebar active on desktop', async ( {
page,
pageUtils,
} ) => {
await pageUtils.setBrowserViewport( 'large' );
const activeTab = page
.getByRole( 'region', {
name: 'Editor settings',
} )
.getByRole( 'tab', { selected: true } );
await expect( activeTab ).toBeVisible();
await expect( activeTab ).toHaveText( 'Post' );
} );
test( 'should have the sidebar closed by default on mobile', async ( {
page,
pageUtils,
} ) => {
await pageUtils.setBrowserViewport( 'small' );
await expect(
page.getByRole( 'region', {
name: 'Editor settings',
} )
).toBeHidden();
} );
test( 'should close the sidebar when resizing from desktop to mobile', async ( {
page,
pageUtils,
} ) => {
await pageUtils.setBrowserViewport( 'large' );
const settingsSideber = page.getByRole( 'region', {
name: 'Editor settings',
} );
await expect( settingsSideber ).toBeVisible();
await pageUtils.setBrowserViewport( 'small' );
// Sidebar should be closed when resizing to mobile.
await expect( settingsSideber ).toBeHidden();
} );
test( 'should reopen sidebar the sidebar when resizing from mobile to desktop if the sidebar was closed automatically', async ( {
page,
pageUtils,
} ) => {
await pageUtils.setBrowserViewport( 'large' );
await pageUtils.setBrowserViewport( 'small' );
const settingsSideber = page.getByRole( 'region', {
name: 'Editor settings',
} );
await expect( settingsSideber ).toBeHidden();
await pageUtils.setBrowserViewport( 'large' );
await expect( settingsSideber ).toBeVisible();
} );
test( 'should preserve tab order while changing active tab', async ( {
page,
pageUtils,
} ) => {
// Region navigate to Sidebar.
await pageUtils.pressKeys( 'ctrl+`' );
// Tab lands at first (presumed selected) option "Post".
await page.keyboard.press( 'Tab' );
const activeTab = page
.getByRole( 'region', {
name: 'Editor settings',
} )
.getByRole( 'tab', { selected: true } );
// The Post tab should be focused and selected.
await expect( activeTab ).toHaveText( 'Post' );
await expect( activeTab ).toBeFocused();
// Arrow key into and activate "Block".
await page.keyboard.press( 'ArrowRight' );
await page.keyboard.press( 'Space' );
// The Block tab should be focused and selected.
await expect( activeTab ).toHaveText( 'Block' );
await expect( activeTab ).toBeFocused();
} );
test( 'should be possible to programmatically remove Document Settings panels', async ( {
page,
} ) => {
const documentSettingsPanels = page
.getByRole( 'tabpanel', { name: 'Post' } )
.getByRole( 'heading', { level: 2 } );
await expect( documentSettingsPanels ).toHaveText( [
'Summary',
'Categories',
'Tags',
'Featured image',
'Excerpt',
'Discussion',
] );
await page.evaluate( () => {
const { removeEditorPanel } =
window.wp.data.dispatch( 'core/editor' );
removeEditorPanel( 'taxonomy-panel-category' );
removeEditorPanel( 'taxonomy-panel-post_tag' );
removeEditorPanel( 'featured-image' );
removeEditorPanel( 'post-excerpt' );
removeEditorPanel( 'discussion-panel' );
removeEditorPanel( 'post-status' );
} );
await expect( documentSettingsPanels ).toHaveCount( 0 );
} );
} );