Skip to content

Commit e35eab1

Browse files
committed
Add e2e tests
1 parent af85c52 commit e35eab1

File tree

3 files changed

+78
-4
lines changed

3 files changed

+78
-4
lines changed

packages/block-library/src/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,12 @@ export const registerCoreBlocks = (
317317
window.__unstableAutoRegisterBlocks.forEach( ( blockName ) => {
318318
registerBlockType( blockName, {
319319
title: blockName,
320-
category: 'text',
321-
edit: ( { attributes } ) =>
322-
createElement( ServerSideRender, {
320+
edit: ( { attributes } ) => {
321+
return createElement( ServerSideRender, {
323322
block: blockName,
324323
attributes,
325-
} ),
324+
} );
325+
},
326326
save: () => null,
327327
} );
328328
} );

packages/e2e-tests/plugins/server-side-rendered-block.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,30 @@ static function () {
4343
'editor_script_handles' => array( 'server-side-rendered-block' ),
4444
)
4545
);
46+
47+
// PHP-only block with auto_register flag, will be auto-registered without JS code
48+
register_block_type(
49+
'test/auto-register-block',
50+
array(
51+
'api_version' => 3,
52+
'render_callback' => static function () {
53+
return '<div>Auto-register block content</div>';
54+
},
55+
'supports' => array(
56+
'auto_register' => true,
57+
),
58+
)
59+
);
60+
61+
// PHP-only block WITHOUT auto_register flag, will NOT be auto-registered without JS code
62+
register_block_type(
63+
'test/php-only-no-auto-register',
64+
array(
65+
'api_version' => 3,
66+
'render_callback' => static function () {
67+
return '<div>PHP-only block content</div>';
68+
},
69+
)
70+
);
4671
}
4772
);

test/e2e/specs/editor/plugins/server-side-rendered-block.spec.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,52 @@ test.describe( 'Server-side rendered block', () => {
104104
await expect( block ).toHaveText( 'Coffee count: 3' );
105105
} );
106106
} );
107+
108+
test.describe( 'PHP-only auto-register blocks', () => {
109+
test.beforeAll( async ( { requestUtils } ) => {
110+
await requestUtils.activatePlugin(
111+
'gutenberg-test-server-side-rendered-block'
112+
);
113+
} );
114+
115+
test.afterAll( async ( { requestUtils } ) => {
116+
await requestUtils.deactivatePlugin(
117+
'gutenberg-test-server-side-rendered-block'
118+
);
119+
} );
120+
121+
test.beforeEach( async ( { admin } ) => {
122+
await admin.createNewPost();
123+
} );
124+
125+
test( 'should only register blocks with auto_register flag', async ( {
126+
editor,
127+
} ) => {
128+
// Block with auto_register flag should be insertable
129+
await editor.insertBlock( { name: 'test/auto-register-block' } );
130+
131+
const block = editor.canvas.getByText( 'Auto-register block content' );
132+
await expect( block ).toBeVisible();
133+
134+
// Block without auto_register flag should NOT exist in registry
135+
const blockExists = await editor.page.evaluate( () => {
136+
return (
137+
window.wp.blocks.getBlockType(
138+
'test/php-only-no-auto-register'
139+
) !== undefined
140+
);
141+
} );
142+
expect( blockExists ).toBe( false );
143+
} );
144+
145+
test( 'should render server-side content for auto-registered blocks', async ( {
146+
editor,
147+
} ) => {
148+
await editor.insertBlock( {
149+
name: 'test/auto-register-block',
150+
} );
151+
152+
const block = editor.canvas.getByText( 'Auto-register block content' );
153+
await expect( block ).toBeVisible();
154+
} );
155+
} );

0 commit comments

Comments
 (0)