23 lines
656 B
JavaScript
23 lines
656 B
JavaScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { getAllBlocks, selectBlockByClientId } from '@wordpress/e2e-test-utils';
|
|
|
|
export const selectBlockByName = async ( blockName ) => {
|
|
const blocksInEditor = await getAllBlocks();
|
|
const flatBlockArray = ( blocks ) =>
|
|
blocks
|
|
.map( ( block ) => [
|
|
{ [ block.name ]: block.clientId },
|
|
block.innerBlocks ? flatBlockArray( block.innerBlocks ) : [],
|
|
] )
|
|
.flat( Infinity );
|
|
const blocksObject = Object.fromEntries(
|
|
flatBlockArray( blocksInEditor )
|
|
.map( ( block ) => Object.entries( block ) )
|
|
.flat()
|
|
);
|
|
const clientId = blocksObject[ blockName ];
|
|
return selectBlockByClientId( clientId );
|
|
};
|