块编辑器开发文档

@wordpress/e2e-test-utils-playwright

💡 云策文档标注

概述

@wordpress/e2e-test-utils-playwright 是一个用于 WordPress 端到端测试的 Playwright 工具包,提供针对管理员界面、块编辑器、页面交互和 REST API 的实用工具。它要求最低 Gutenberg 9.2.0 或 WordPress 5.6.0 版本,并处于活跃开发阶段,可能存在破坏性变更。

关键要点

  • 该包为 Playwright 测试提供扩展模块,包括 admin、editor、pageUtils 和 requestUtils 等 fixture。
  • 安装需使用 npm install @wordpress/e2e-test-utils-playwright --save-dev,并确保 Node.js 版本为长期支持版。
  • API 包括 test(扩展的 Playwright test 模块)、expect(Playwright/Jest 的 expect 函数)以及 Admin、Editor、PageUtils、RequestUtils 等类。
  • Admin 类用于 WordPress 管理员界面测试,如访问管理页面。
  • Editor 类用于块编辑器测试,需在测试文件中通过 test.use 实例化,并使用 canvas 属性操作 iframe 中的元素。
  • PageUtils 类提供通用页面交互功能,如模拟按键。
  • RequestUtils 类用于与 WordPress REST API 交互,支持用户认证设置。
  • 该包是 Gutenberg 项目的一部分,采用 monorepo 结构,贡献者需参考项目的主要贡献指南。

注意事项

该包仍处于活跃开发中,文档可能不最新,v0.x 版本可能引入破坏性变更而无详细迁移指南,建议使用锁文件防止意外中断。


📄 原文内容

End-To-End (E2E) Playwright test utils for WordPress.

It works properly with the minimum version of Gutenberg 9.2.0 or the minimum version of WordPress 5.6.0.

This package is still under active development. Documentation might not be up-to-date, and the v0.x version can introduce breaking changes without a detailed migration guide. Early adopters are encouraged to use a lock file to prevent unexpected breakages.

Installation

Install the module

npm install @wordpress/e2e-test-utils-playwright --save-dev

Note: This package requires Node.js version with long-term support status (check Active LTS or Maintenance LTS releases). It is not compatible with older versions.

API

test

The extended Playwright’s test module with the admin, editor, pageUtils and the requestUtils fixtures.

expect

The Playwright/Jest’s expect function.

Admin

End to end test utilities for WordPress admin’s user interface.

const admin = new Admin( { page, pageUtils } );
await admin.visitAdminPage( 'options-general.php' );

Editor

End to end test utilities for the WordPress Block Editor.

To use these utilities, instantiate them within each test file:

test.use( {
    editor: async ( { page }, use ) => {
        await use( new Editor( { page } ) );
    },
} );

Within a test or test utility, use the canvas property to select elements within the iframe canvas:

await editor.canvas.locator( 'role=document[name="Paragraph block"i]' );

PageUtils

Generic Playwright utilities for interacting with web pages.

const pageUtils = new PageUtils( { page } );
await pageUtils.pressKeys( 'primary+a' );

RequestUtils

Playwright utilities for interacting with the WordPress REST API.

Create a request utils instance.

const requestUtils = await RequestUtils.setup( {
    user: {
        username: 'admin',
        password: 'password',
    },
} );

Contributing to this package

This is an individual package that’s part of the Gutenberg project. The project is organized as a monorepo. It’s made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to npm and used by WordPress as well as other software projects.

To find out more about contributing to this package or Gutenberg as a whole, please read the project’s main contributor guide.