wordpress-develop/tests/e2e/specs/edit-posts.test.js
Riad Benguella 07fc9b2d74 Block Editor: Updated the WordPress packages to include Gutenberg 15.1.0 changes.
In addition to all the packages being updated to the latest versions, 
this commit also includes some mandatory changes to avoid editor breakage:

 - Update React to to 18.2.0.
 - Add the right stylesheets to support iframed block editors.

Props ntsekouras, mamaduka, flixos90, desrosj, peterwilsoncc.
See #57471.


git-svn-id: https://develop.svn.wordpress.org/trunk@55246 602fd350-edb4-49c9-b593-d223f7449a82
2023-02-07 07:01:56 +00:00

138 lines
4.1 KiB
JavaScript

import {
createNewPost,
pressKeyTimes,
publishPost,
trashAllPosts,
visitAdminPage,
canvas,
} from '@wordpress/e2e-test-utils';
describe( 'Edit Posts', () => {
beforeEach( async () => {
await trashAllPosts();
} );
it( 'displays a message in the posts table when no posts are present', async () => {
await visitAdminPage( '/edit.php' );
const noPostsMessage = await page.$x(
'//td[text()="No posts found."]'
);
expect( noPostsMessage.length ).toBe( 1 );
} );
it( 'shows a single post after one is published with the correct title', async () => {
const title = 'Test Title';
await createNewPost( { title } );
await publishPost();
await visitAdminPage( '/edit.php' );
await page.waitForSelector( '#the-list .type-post' );
// Expect there to be one row in the post list.
const posts = await page.$$( '#the-list .type-post' );
expect( posts.length ).toBe( 1 );
const [ firstPost ] = posts;
// Expect the title of the post to be correct.
const postTitle = await firstPost.$x(
`//a[contains(@class, "row-title")][contains(text(), "${ title }")]`
);
expect( postTitle.length ).toBe( 1 );
} );
it( 'allows an existing post to be edited using the Edit button', async () => {
const title = 'Test Title';
await createNewPost( { title } );
await publishPost();
await visitAdminPage( '/edit.php' );
await page.waitForSelector( '#the-list .type-post' );
// Click the post title (edit) link
const [ editLink ] = await page.$x(
`//a[contains(@class, "row-title")][contains(text(), "${ title }")]`
);
await editLink.click();
// Edit the post.
await page.waitForNavigation();
// Wait for title field to render onscreen.
await page.waitForSelector( 'iframe[name="editor-canvas"]' );
await canvas().waitForSelector( '.editor-post-title__input' );
// Expect to now be in the editor with the correct post title shown.
const editorPostTitleInput = await canvas().$x(
`//h1[contains(@class, "editor-post-title__input")][contains(text(), "${ title }")]`
);
expect( editorPostTitleInput.length ).toBe( 1 );
} );
it( 'allows an existing post to be quick edited using the Quick Edit button', async () => {
const title = 'Test Title';
await createNewPost( { title } );
await publishPost();
await visitAdminPage( '/edit.php' );
await page.waitForSelector( '#the-list .type-post' );
// Focus on the post title link.
const [ editLink ] = await page.$x(
`//a[contains(@class, "row-title")][contains(text(), "${ title }")]`
);
await editLink.focus();
// Tab to the Quick Edit button and press Enter to quick edit.
await pressKeyTimes( 'Tab', 2 );
await page.keyboard.press( 'Enter' );
// Type in the currently focused (title) field to modify the title, testing that focus is moved to the input.
await page.keyboard.type( ' Edited' );
// Update the post.
await page.click( '.button.save' );
// Wait for the quick edit button to reappear.
await page.waitForSelector( 'button.editinline', { visible: true } );
// Expect there to be one row in the post list.
const posts = await page.$$( '#the-list tr.type-post' );
expect( posts.length ).toBe( 1 );
const [ firstPost ] = posts;
// Expect the title of the post to be correct.
const postTitle = await firstPost.$x(
`//a[contains(@class, "row-title")][contains(text(), "${ title } Edited")]`
);
expect( postTitle.length ).toBe( 1 );
} );
it( 'allows an existing post to be deleted using the Trash button', async () => {
const title = 'Test Title';
await createNewPost( { title } );
await publishPost();
await visitAdminPage( '/edit.php' );
await page.waitForSelector( '#the-list .type-post' );
// Focus on the post title link.
const [ editLink ] = await page.$x(
`//a[contains(@class, "row-title")][contains(text(), "${ title }")]`
);
await editLink.focus();
// Tab to the Trash button and press Enter to delete the post.
await pressKeyTimes( 'Tab', 3 );
await page.keyboard.press( 'Enter' );
const noPostsMessage = await page.waitForSelector(
'#the-list .no-items td'
);
expect(
await noPostsMessage.evaluate( ( element ) => element.innerText )
).toBe( 'No posts found.' );
} );
} );