@wordpress/e2e-tests 4.0.3 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/setup-test-framework.js +3 -0
- package/package.json +7 -7
- package/specs/{experiments/blocks/comments-query.test.js → editor/blocks/comments.test.js} +5 -13
- package/specs/editor/plugins/nonce.test.js +6 -7
- package/specs/editor/various/inserting-blocks.test.js +1 -66
- package/specs/editor/various/multi-block-selection.test.js +48 -0
- package/specs/editor/various/nux.test.js +18 -0
- package/specs/editor/various/rich-text.test.js +0 -22
- package/specs/editor/various/toolbar-roving-tabindex.test.js +5 -7
- package/specs/editor/blocks/paragraph.test.js +0 -26
- package/specs/editor/plugins/block-api.test.js +0 -33
- package/specs/editor/plugins/image-size.test.js +0 -71
- package/specs/editor/various/style-variation.test.js +0 -36
@@ -13,6 +13,7 @@ import {
|
|
13
13
|
clearLocalStorage,
|
14
14
|
enablePageDialogAccept,
|
15
15
|
isOfflineMode,
|
16
|
+
resetPreferences,
|
16
17
|
setBrowserViewport,
|
17
18
|
trashAllPosts,
|
18
19
|
} from '@wordpress/e2e-test-utils';
|
@@ -242,6 +243,7 @@ beforeAll( async () => {
|
|
242
243
|
enablePageDialogAccept();
|
243
244
|
observeConsoleLogging();
|
244
245
|
await simulateAdverseConditions();
|
246
|
+
await resetPreferences();
|
245
247
|
await activateTheme( 'twentytwentyone' );
|
246
248
|
await trashAllPosts();
|
247
249
|
await trashAllPosts( 'wp_block' );
|
@@ -253,6 +255,7 @@ beforeAll( async () => {
|
|
253
255
|
} );
|
254
256
|
|
255
257
|
afterEach( async () => {
|
258
|
+
await resetPreferences();
|
256
259
|
await setupBrowser();
|
257
260
|
} );
|
258
261
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@wordpress/e2e-tests",
|
3
|
-
"version": "4.0
|
3
|
+
"version": "4.2.0",
|
4
4
|
"description": "End-To-End (E2E) tests for WordPress.",
|
5
5
|
"author": "The WordPress Contributors",
|
6
6
|
"license": "GPL-2.0-or-later",
|
@@ -23,11 +23,11 @@
|
|
23
23
|
"node": ">=12"
|
24
24
|
},
|
25
25
|
"dependencies": {
|
26
|
-
"@wordpress/e2e-test-utils": "^7.
|
27
|
-
"@wordpress/jest-console": "^5.0.
|
28
|
-
"@wordpress/jest-puppeteer-axe": "^4.0.
|
29
|
-
"@wordpress/scripts": "^
|
30
|
-
"@wordpress/url": "^3.
|
26
|
+
"@wordpress/e2e-test-utils": "^7.4.0",
|
27
|
+
"@wordpress/jest-console": "^5.0.2",
|
28
|
+
"@wordpress/jest-puppeteer-axe": "^4.0.2",
|
29
|
+
"@wordpress/scripts": "^23.0.0",
|
30
|
+
"@wordpress/url": "^3.9.0",
|
31
31
|
"chalk": "^4.0.0",
|
32
32
|
"expect-puppeteer": "^4.4.0",
|
33
33
|
"filenamify": "^4.2.0",
|
@@ -46,5 +46,5 @@
|
|
46
46
|
"publishConfig": {
|
47
47
|
"access": "public"
|
48
48
|
},
|
49
|
-
"gitHead": "
|
49
|
+
"gitHead": "4631d515033397fcfeda77e5755960253caef9bf"
|
50
50
|
}
|
@@ -11,7 +11,7 @@ import {
|
|
11
11
|
trashAllComments,
|
12
12
|
} from '@wordpress/e2e-test-utils';
|
13
13
|
|
14
|
-
describe( '
|
14
|
+
describe( 'Comments', () => {
|
15
15
|
let previousPageComments,
|
16
16
|
previousCommentsPerPage,
|
17
17
|
previousDefaultCommentsPage;
|
@@ -27,19 +27,12 @@ describe( 'Comment Query Loop', () => {
|
|
27
27
|
it( 'We show no results message if there are no comments', async () => {
|
28
28
|
await trashAllComments();
|
29
29
|
await createNewPost();
|
30
|
-
await insertBlock( 'Comments
|
31
|
-
await page.
|
32
|
-
expect(
|
33
|
-
await page.evaluate(
|
34
|
-
( el ) => el.innerText,
|
35
|
-
await page.$( '[data-testid="noresults"]' )
|
36
|
-
)
|
37
|
-
).toEqual( 'No results found.' );
|
30
|
+
await insertBlock( 'Comments' );
|
31
|
+
await page.waitForXPath( '//p[contains(text(), "No results found.")]' );
|
38
32
|
} );
|
39
33
|
it( 'Pagination links are working as expected', async () => {
|
40
34
|
await createNewPost();
|
41
|
-
await insertBlock( 'Comments
|
42
|
-
await insertBlock( 'Post Comments Form' );
|
35
|
+
await insertBlock( 'Comments' );
|
43
36
|
await publishPost();
|
44
37
|
// Visit the post that was just published.
|
45
38
|
await page.click(
|
@@ -99,8 +92,7 @@ describe( 'Comment Query Loop', () => {
|
|
99
92
|
it( 'Pagination links are not appearing if break comments is not enabled', async () => {
|
100
93
|
await setOption( 'page_comments', '0' );
|
101
94
|
await createNewPost();
|
102
|
-
await insertBlock( 'Comments
|
103
|
-
await insertBlock( 'Post Comments Form' );
|
95
|
+
await insertBlock( 'Comments' );
|
104
96
|
await publishPost();
|
105
97
|
// Visit the post that was just published.
|
106
98
|
await page.click(
|
@@ -9,19 +9,18 @@ import {
|
|
9
9
|
} from '@wordpress/e2e-test-utils';
|
10
10
|
|
11
11
|
describe( 'Nonce', () => {
|
12
|
-
|
12
|
+
// While using beforeEach/afterEach is suboptimal for multiple tests, they
|
13
|
+
// are used here to ensure that the nonce plugin doesn't interfere with API
|
14
|
+
// calls made in global before/after calls, which may perform API requests.
|
15
|
+
beforeEach( async () => {
|
13
16
|
await activatePlugin( 'gutenberg-test-plugin-nonce' );
|
14
17
|
} );
|
15
|
-
|
16
|
-
afterAll( async () => {
|
18
|
+
afterEach( async () => {
|
17
19
|
await deactivatePlugin( 'gutenberg-test-plugin-nonce' );
|
18
20
|
} );
|
19
21
|
|
20
|
-
beforeEach( async () => {
|
21
|
-
await createNewPost();
|
22
|
-
} );
|
23
|
-
|
24
22
|
it( 'should refresh when expired', async () => {
|
23
|
+
await createNewPost();
|
25
24
|
await page.keyboard.press( 'Enter' );
|
26
25
|
// eslint-disable-next-line no-restricted-syntax
|
27
26
|
await page.waitForTimeout( 5000 );
|
@@ -10,7 +10,6 @@ import {
|
|
10
10
|
pressKeyTimes,
|
11
11
|
searchForBlock,
|
12
12
|
setBrowserViewport,
|
13
|
-
showBlockToolbar,
|
14
13
|
pressKeyWithModifier,
|
15
14
|
} from '@wordpress/e2e-test-utils';
|
16
15
|
|
@@ -170,68 +169,6 @@ describe( 'Inserting blocks', () => {
|
|
170
169
|
).not.toBeNull();
|
171
170
|
} );
|
172
171
|
|
173
|
-
// Check for regression of https://github.com/WordPress/gutenberg/issues/9583
|
174
|
-
it( 'should not allow transfer of focus outside of the block-insertion menu once open', async () => {
|
175
|
-
// Enter the default block and click the inserter toggle button to the left of it.
|
176
|
-
await page.keyboard.press( 'Enter' );
|
177
|
-
await showBlockToolbar();
|
178
|
-
await page.click(
|
179
|
-
'.block-editor-block-list__empty-block-inserter .block-editor-inserter__toggle'
|
180
|
-
);
|
181
|
-
|
182
|
-
// Expect the inserter search input to be the active element.
|
183
|
-
let activeElementClassList = await page.evaluate(
|
184
|
-
() => document.activeElement.classList
|
185
|
-
);
|
186
|
-
expect( Object.values( activeElementClassList ) ).toContain(
|
187
|
-
'components-search-control__input'
|
188
|
-
);
|
189
|
-
|
190
|
-
// Try using the up arrow key (vertical navigation triggers the issue described in #9583).
|
191
|
-
await page.keyboard.press( 'ArrowUp' );
|
192
|
-
|
193
|
-
// Expect the inserter search input to still be the active element.
|
194
|
-
activeElementClassList = await page.evaluate(
|
195
|
-
() => document.activeElement.classList
|
196
|
-
);
|
197
|
-
expect( Object.values( activeElementClassList ) ).toContain(
|
198
|
-
'components-search-control__input'
|
199
|
-
);
|
200
|
-
|
201
|
-
// Tab to the block list.
|
202
|
-
await page.keyboard.press( 'Tab' );
|
203
|
-
|
204
|
-
// Expect the block list to be the active element.
|
205
|
-
activeElementClassList = await page.evaluate(
|
206
|
-
() => document.activeElement.classList
|
207
|
-
);
|
208
|
-
expect( Object.values( activeElementClassList ) ).toContain(
|
209
|
-
'block-editor-block-types-list__item'
|
210
|
-
);
|
211
|
-
|
212
|
-
// Try using the up arrow key.
|
213
|
-
await page.keyboard.press( 'ArrowUp' );
|
214
|
-
|
215
|
-
// Expect the block list to still be the active element.
|
216
|
-
activeElementClassList = await page.evaluate(
|
217
|
-
() => document.activeElement.classList
|
218
|
-
);
|
219
|
-
expect( Object.values( activeElementClassList ) ).toContain(
|
220
|
-
'block-editor-block-types-list__item'
|
221
|
-
);
|
222
|
-
|
223
|
-
// Press escape to close the block inserter.
|
224
|
-
await page.keyboard.press( 'Escape' );
|
225
|
-
|
226
|
-
// Expect focus to have transferred back to the inserter toggle button.
|
227
|
-
activeElementClassList = await page.evaluate(
|
228
|
-
() => document.activeElement.classList
|
229
|
-
);
|
230
|
-
expect( Object.values( activeElementClassList ) ).toContain(
|
231
|
-
'block-editor-inserter__toggle'
|
232
|
-
);
|
233
|
-
} );
|
234
|
-
|
235
172
|
// Check for regression of https://github.com/WordPress/gutenberg/issues/23263
|
236
173
|
it( 'inserts blocks at root level when using the root appender while selection is in an inner block', async () => {
|
237
174
|
await insertBlock( 'Buttons' );
|
@@ -310,12 +247,11 @@ describe( 'Inserting blocks', () => {
|
|
310
247
|
await insertBlock( 'Paragraph' );
|
311
248
|
await page.keyboard.type( 'First paragraph' );
|
312
249
|
await insertBlock( 'Image' );
|
313
|
-
await showBlockToolbar();
|
314
250
|
const paragraphBlock = await page.$(
|
315
251
|
'p[aria-label="Paragraph block"]'
|
316
252
|
);
|
317
253
|
paragraphBlock.click();
|
318
|
-
await
|
254
|
+
await page.evaluate( () => new Promise( window.requestIdleCallback ) );
|
319
255
|
|
320
256
|
// Open the global inserter and search for the Heading block.
|
321
257
|
await searchForBlock( 'Heading' );
|
@@ -323,7 +259,6 @@ describe( 'Inserting blocks', () => {
|
|
323
259
|
const headingButton = (
|
324
260
|
await page.$x( `//button//span[contains(text(), 'Heading')]` )
|
325
261
|
)[ 0 ];
|
326
|
-
|
327
262
|
// Hover over the block should show the blue line indicator.
|
328
263
|
await headingButton.hover();
|
329
264
|
|
@@ -10,6 +10,7 @@ import {
|
|
10
10
|
clickBlockToolbarButton,
|
11
11
|
clickButton,
|
12
12
|
clickMenuItem,
|
13
|
+
insertBlock,
|
13
14
|
openListView,
|
14
15
|
saveDraft,
|
15
16
|
transformBlockTo,
|
@@ -975,4 +976,51 @@ describe( 'Multi-block selection', () => {
|
|
975
976
|
// Expect two blocks with "&" in between.
|
976
977
|
expect( await getEditedPostContent() ).toMatchSnapshot();
|
977
978
|
} );
|
979
|
+
describe( 'shift+click multi-selection', () => {
|
980
|
+
it( 'should multi-select block with text selection and a block without text selection', async () => {
|
981
|
+
await page.keyboard.press( 'Enter' );
|
982
|
+
await page.keyboard.type( 'hi' );
|
983
|
+
await page.keyboard.press( 'Enter' );
|
984
|
+
await insertBlock( 'Spacer' );
|
985
|
+
await page.keyboard.press( 'ArrowUp' );
|
986
|
+
|
987
|
+
const spacerBlock = await page.waitForSelector(
|
988
|
+
'.wp-block.wp-block-spacer'
|
989
|
+
);
|
990
|
+
const boundingBox = await spacerBlock.boundingBox();
|
991
|
+
const mousePosition = {
|
992
|
+
x: boundingBox.x + boundingBox.width / 2,
|
993
|
+
y: boundingBox.y + boundingBox.height / 2,
|
994
|
+
};
|
995
|
+
await page.keyboard.down( 'Shift' );
|
996
|
+
await page.mouse.click( mousePosition.x, mousePosition.y );
|
997
|
+
await page.keyboard.up( 'Shift' );
|
998
|
+
|
999
|
+
const selectedBlocks = await page.$$(
|
1000
|
+
'.wp-block.is-multi-selected'
|
1001
|
+
);
|
1002
|
+
expect( selectedBlocks.length ).toBe( 2 );
|
1003
|
+
} );
|
1004
|
+
it( 'should multi-select blocks without text selection', async () => {
|
1005
|
+
await insertBlock( 'Spacer' );
|
1006
|
+
// Get the first spacer block element.
|
1007
|
+
const spacerBlock = await page.waitForSelector(
|
1008
|
+
'.wp-block.wp-block-spacer'
|
1009
|
+
);
|
1010
|
+
const boundingBox = await spacerBlock.boundingBox();
|
1011
|
+
await page.keyboard.press( 'Enter' );
|
1012
|
+
await insertBlock( 'Spacer' );
|
1013
|
+
const mousePosition = {
|
1014
|
+
x: boundingBox.x + boundingBox.width / 2,
|
1015
|
+
y: boundingBox.y + boundingBox.height / 2,
|
1016
|
+
};
|
1017
|
+
await page.keyboard.down( 'Shift' );
|
1018
|
+
await page.mouse.click( mousePosition.x, mousePosition.y );
|
1019
|
+
await page.keyboard.up( 'Shift' );
|
1020
|
+
const selectedBlocks = await page.$$(
|
1021
|
+
'.wp-block.is-multi-selected'
|
1022
|
+
);
|
1023
|
+
expect( selectedBlocks.length ).toBe( 2 );
|
1024
|
+
} );
|
1025
|
+
} );
|
978
1026
|
} );
|
@@ -116,6 +116,24 @@ describe( 'New User Experience (NUX)', () => {
|
|
116
116
|
expect( welcomeGuide ).toBeNull();
|
117
117
|
} );
|
118
118
|
|
119
|
+
it( 'should focus post title field after welcome guide is dismissed and post is empty', async () => {
|
120
|
+
// Create a new post as a first-time user.
|
121
|
+
await createNewPost( { showWelcomeGuide: true } );
|
122
|
+
|
123
|
+
// Guide should be open.
|
124
|
+
const welcomeGuide = await page.$( '.edit-post-welcome-guide' );
|
125
|
+
expect( welcomeGuide ).not.toBeNull();
|
126
|
+
|
127
|
+
// Close the guide.
|
128
|
+
await page.click( 'button[aria-label="Close dialog"]' );
|
129
|
+
|
130
|
+
// Focus should be in post title field.
|
131
|
+
const postTitle = await page.waitForSelector(
|
132
|
+
'h1[aria-label="Add title"'
|
133
|
+
);
|
134
|
+
await expect( postTitle ).toHaveFocus();
|
135
|
+
} );
|
136
|
+
|
119
137
|
it( 'should show the welcome guide if it is manually opened', async () => {
|
120
138
|
let welcomeGuide;
|
121
139
|
|
@@ -485,28 +485,6 @@ describe( 'RichText', () => {
|
|
485
485
|
expect( await getEditedPostContent() ).toMatchSnapshot();
|
486
486
|
} );
|
487
487
|
|
488
|
-
it( 'should show/hide toolbar when entering/exiting format', async () => {
|
489
|
-
const blockToolbarSelector = '.block-editor-block-toolbar';
|
490
|
-
await clickBlockAppender();
|
491
|
-
await page.keyboard.type( '1' );
|
492
|
-
expect( await page.$( blockToolbarSelector ) ).toBe( null );
|
493
|
-
await pressKeyWithModifier( 'primary', 'b' );
|
494
|
-
expect( await page.$( blockToolbarSelector ) ).not.toBe( null );
|
495
|
-
await page.keyboard.type( '2' );
|
496
|
-
expect( await page.$( blockToolbarSelector ) ).not.toBe( null );
|
497
|
-
await pressKeyWithModifier( 'primary', 'b' );
|
498
|
-
expect( await page.$( blockToolbarSelector ) ).toBe( null );
|
499
|
-
await page.keyboard.type( '3' );
|
500
|
-
await page.keyboard.press( 'ArrowLeft' );
|
501
|
-
expect( await page.$( blockToolbarSelector ) ).toBe( null );
|
502
|
-
await page.keyboard.press( 'ArrowLeft' );
|
503
|
-
expect( await page.$( blockToolbarSelector ) ).not.toBe( null );
|
504
|
-
await page.keyboard.press( 'ArrowLeft' );
|
505
|
-
expect( await page.$( blockToolbarSelector ) ).not.toBe( null );
|
506
|
-
await page.keyboard.press( 'ArrowLeft' );
|
507
|
-
expect( await page.$( blockToolbarSelector ) ).toBe( null );
|
508
|
-
} );
|
509
|
-
|
510
488
|
it( 'should run input rules after composition end', async () => {
|
511
489
|
await clickBlockAppender();
|
512
490
|
// Puppeteer doesn't support composition, so emulate it by inserting
|
@@ -4,7 +4,6 @@
|
|
4
4
|
import {
|
5
5
|
createNewPost,
|
6
6
|
pressKeyWithModifier,
|
7
|
-
clickBlockToolbarButton,
|
8
7
|
insertBlock,
|
9
8
|
} from '@wordpress/e2e-test-utils';
|
10
9
|
|
@@ -42,9 +41,7 @@ async function testBlockToolbarKeyboardNavigation(
|
|
42
41
|
|
43
42
|
async function wrapCurrentBlockWithGroup( currentBlockTitle ) {
|
44
43
|
await page.click( `[aria-label="${ currentBlockTitle }"]` );
|
45
|
-
await page.
|
46
|
-
document.querySelector( '.editor-block-list-item-group' ).click();
|
47
|
-
} );
|
44
|
+
await page.click( '.editor-block-list-item-group' );
|
48
45
|
}
|
49
46
|
|
50
47
|
async function testGroupKeyboardNavigation(
|
@@ -128,10 +125,11 @@ describe( 'Toolbar roving tabindex', () => {
|
|
128
125
|
await insertBlock( 'Paragraph' );
|
129
126
|
await page.keyboard.type( 'Paragraph' );
|
130
127
|
await focusBlockToolbar();
|
131
|
-
await
|
132
|
-
await
|
128
|
+
await page.keyboard.press( 'ArrowRight' );
|
129
|
+
await expectLabelToHaveFocus( 'Move up' );
|
130
|
+
await page.keyboard.press( 'Tab' );
|
133
131
|
await pressKeyWithModifier( 'shift', 'Tab' );
|
134
|
-
await expectLabelToHaveFocus( '
|
132
|
+
await expectLabelToHaveFocus( 'Move up' );
|
135
133
|
} );
|
136
134
|
|
137
135
|
it( 'can reach toolbar items with arrow keys after pressing alt+F10', async () => {
|
@@ -1,26 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* WordPress dependencies
|
3
|
-
*/
|
4
|
-
import { createNewPost, insertBlock } from '@wordpress/e2e-test-utils';
|
5
|
-
|
6
|
-
describe( 'Paragraph', () => {
|
7
|
-
beforeEach( async () => {
|
8
|
-
await createNewPost();
|
9
|
-
} );
|
10
|
-
|
11
|
-
it( 'should output unwrapped editable paragraph', async () => {
|
12
|
-
await insertBlock( 'Paragraph' );
|
13
|
-
await page.keyboard.type( '1' );
|
14
|
-
|
15
|
-
const firstBlockTagName = await page.evaluate( () => {
|
16
|
-
return document.querySelector(
|
17
|
-
'.block-editor-block-list__layout .wp-block'
|
18
|
-
).tagName;
|
19
|
-
} );
|
20
|
-
|
21
|
-
// The outer element should be a paragraph. Blocks should never have any
|
22
|
-
// additional div wrappers so the markup remains simple and easy to
|
23
|
-
// style.
|
24
|
-
expect( firstBlockTagName ).toBe( 'P' );
|
25
|
-
} );
|
26
|
-
} );
|
@@ -1,33 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* WordPress dependencies
|
3
|
-
*/
|
4
|
-
import {
|
5
|
-
activatePlugin,
|
6
|
-
createNewPost,
|
7
|
-
deactivatePlugin,
|
8
|
-
insertBlock,
|
9
|
-
} from '@wordpress/e2e-test-utils';
|
10
|
-
|
11
|
-
describe( 'Using Block API', () => {
|
12
|
-
beforeAll( async () => {
|
13
|
-
await activatePlugin( 'gutenberg-test-block-api' );
|
14
|
-
} );
|
15
|
-
|
16
|
-
afterAll( async () => {
|
17
|
-
await deactivatePlugin( 'gutenberg-test-block-api' );
|
18
|
-
} );
|
19
|
-
|
20
|
-
beforeEach( async () => {
|
21
|
-
await createNewPost();
|
22
|
-
} );
|
23
|
-
|
24
|
-
test( 'Inserts the filtered hello world block even when filter added after block registration', async () => {
|
25
|
-
await insertBlock( 'Filtered Hello World' );
|
26
|
-
|
27
|
-
const blockContent = await page.$eval(
|
28
|
-
'div[data-type="e2e-tests/hello-world"]',
|
29
|
-
( element ) => element.textContent
|
30
|
-
);
|
31
|
-
expect( blockContent ).toEqual( 'Hello Editor!' );
|
32
|
-
} );
|
33
|
-
} );
|
@@ -1,71 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* External dependencies
|
3
|
-
*/
|
4
|
-
import path from 'path';
|
5
|
-
import fs from 'fs';
|
6
|
-
import os from 'os';
|
7
|
-
import { v4 as uuid } from 'uuid';
|
8
|
-
|
9
|
-
/**
|
10
|
-
* WordPress dependencies
|
11
|
-
*/
|
12
|
-
import {
|
13
|
-
activatePlugin,
|
14
|
-
createNewPost,
|
15
|
-
deactivatePlugin,
|
16
|
-
insertBlock,
|
17
|
-
openDocumentSettingsSidebar,
|
18
|
-
} from '@wordpress/e2e-test-utils';
|
19
|
-
|
20
|
-
describe( 'changing image size', () => {
|
21
|
-
beforeEach( async () => {
|
22
|
-
await activatePlugin( 'gutenberg-test-image-size' );
|
23
|
-
await createNewPost();
|
24
|
-
} );
|
25
|
-
|
26
|
-
afterEach( async () => {
|
27
|
-
await deactivatePlugin( 'gutenberg-test-image-size' );
|
28
|
-
} );
|
29
|
-
|
30
|
-
it( 'should insert and change my image size', async () => {
|
31
|
-
await insertBlock( 'Image' );
|
32
|
-
const inputElement = await page.waitForSelector(
|
33
|
-
'figure[aria-label="Block: Image"] input[type=file]'
|
34
|
-
);
|
35
|
-
const testImagePath = path.join(
|
36
|
-
__dirname,
|
37
|
-
'..',
|
38
|
-
'..',
|
39
|
-
'..',
|
40
|
-
'assets',
|
41
|
-
'1024x768_e2e_test_image_size.jpg'
|
42
|
-
);
|
43
|
-
const filename = uuid();
|
44
|
-
const tmpFileName = path.join( os.tmpdir(), filename + '.jpg' );
|
45
|
-
fs.copyFileSync( testImagePath, tmpFileName );
|
46
|
-
await inputElement.uploadFile( tmpFileName );
|
47
|
-
|
48
|
-
// Wait for upload to finish.
|
49
|
-
await page.waitForXPath( `//img[contains(@src, "${ filename }")]` );
|
50
|
-
|
51
|
-
// Select the new size updated with the plugin.
|
52
|
-
await openDocumentSettingsSidebar();
|
53
|
-
const imageSizeLabel = await page.waitForXPath(
|
54
|
-
'//label[text()="Image size"]'
|
55
|
-
);
|
56
|
-
await imageSizeLabel.click();
|
57
|
-
const imageSizeSelect = await page.evaluateHandle(
|
58
|
-
() => document.activeElement
|
59
|
-
);
|
60
|
-
await imageSizeSelect.select( 'custom-size-one' );
|
61
|
-
|
62
|
-
// Verify that the custom size was applied to the image.
|
63
|
-
await page.waitForSelector( '.wp-block-image.size-custom-size-one' );
|
64
|
-
await page.waitForFunction(
|
65
|
-
() =>
|
66
|
-
document.querySelector(
|
67
|
-
'.block-editor-image-size-control__width input'
|
68
|
-
).value === '499'
|
69
|
-
);
|
70
|
-
} );
|
71
|
-
} );
|
@@ -1,36 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* WordPress dependencies
|
3
|
-
*/
|
4
|
-
import {
|
5
|
-
createNewPost,
|
6
|
-
clickBlockToolbarButton,
|
7
|
-
insertBlock,
|
8
|
-
getEditedPostContent,
|
9
|
-
} from '@wordpress/e2e-test-utils';
|
10
|
-
|
11
|
-
describe( 'adding blocks', () => {
|
12
|
-
beforeAll( async () => {
|
13
|
-
await createNewPost();
|
14
|
-
} );
|
15
|
-
|
16
|
-
it( 'Should switch to the plain style of the quote block', async () => {
|
17
|
-
// Inserting a quote block.
|
18
|
-
await insertBlock( 'Quote' );
|
19
|
-
await page.keyboard.type( 'Quote content' );
|
20
|
-
|
21
|
-
await clickBlockToolbarButton( 'Quote' );
|
22
|
-
|
23
|
-
const plainStyleButton = await page.waitForXPath(
|
24
|
-
'//*[@role="menuitem"][contains(., "Plain")]'
|
25
|
-
);
|
26
|
-
await plainStyleButton.click();
|
27
|
-
|
28
|
-
// Check the content.
|
29
|
-
const content = await getEditedPostContent();
|
30
|
-
expect( content ).toMatchInlineSnapshot( `
|
31
|
-
"<!-- wp:quote {\\"className\\":\\"is-style-plain\\"} -->
|
32
|
-
<blockquote class=\\"wp-block-quote is-style-plain\\"><p>Quote content</p></blockquote>
|
33
|
-
<!-- /wp:quote -->"
|
34
|
-
` );
|
35
|
-
} );
|
36
|
-
} );
|