从 @grafana/e2e 迁移
当 Grafana 11.0.0 发布时,@grafana/e2e
将被弃用,并且支持将被取消。 我们建议所有插件作者将其端到端测试迁移到使用 Playwright 和 @grafana/plugin-e2e
,而不是 Cypress 和 @grafana/e2e
。
在本指南中,您将学习
- 如何在您的插件中手动设置
@grafana/plugin-e2e
- 如何迁移测试
- 如何在 CI 中运行 Playwright 测试
- 如何卸载 Cypress 和
@grafana/e2e
手动安装 @grafana/plugin-e2e
使用 create-plugin v4.6.0 及更高版本构建的插件会自动包含 @grafana/plugin-e2e
和 @playwright/test
的配置。 要手动添加此配置,请按照以下步骤操作
步骤 1:安装 Playwright
@grafana/plugin-e2e
工具扩展了 Playwright API,因此您需要在插件的 package.json
文件中安装版本至少为 1.41.2 的 @playwright/test
作为开发依赖项。 请参考 Playwright 文档 获取有关如何安装的说明。 确保您可以运行安装过程中生成的示例测试。 如果示例测试运行成功,您可以继续删除它们,因为它们不再需要了。
步骤 2:安装 @grafana/plugin-e2e
打开终端,并在您的插件项目目录中运行以下命令
- npm
- yarn
- pnpm
npm install @grafana/plugin-e2e@latest --save-dev
yarn add @grafana/plugin-e2e@latest --dev
pnpm add @grafana/plugin-e2e@latest -D
步骤 3:配置 Playwright
打开在安装 Playwright 时生成的 Playwright 配置文件。
- 取消
baseUrl
的注释,并将其更改为'https://127.0.0.1:3000'
。
baseURL: 'https://127.0.0.1:3000',
-
Playwright 使用 项目 来逻辑地对具有相同配置的测试进行分组。 我们将添加两个项目
auth
是一个设置项目,它将登录 Grafana 并将已验证的状态存储在磁盘上。run-tests
在您选择的浏览器中运行所有测试。 通过向auth
项目添加依赖项,我们确保登录只发生一次,并且run-tests
项目中的所有测试都将以已验证的方式开始。
您的 Playwright 配置应具有以下项目配置
import { dirname } from 'path';
import { defineConfig, devices } from '@playwright/test';
import type { PluginOptions } from '@grafana/plugin-e2e';
const pluginE2eAuth = `${dirname(require.resolve('@grafana/plugin-e2e'))}/auth`;
export default defineConfig<PluginOptions>({
...
projects: [
{
name: 'auth',
testDir: pluginE2eAuth,
testMatch: [/.*\.js/],
},
{
name: 'run-tests',
use: {
...devices['Desktop Chrome'],
// @grafana/plugin-e2e writes the auth state to this file,
// the path should not be modified
storageState: 'playwright/.auth/admin.json',
},
dependencies: ['auth'],
}
],
});
已验证的状态存储在磁盘上,文件名模式为:<plugin-root>/playwright/.auth/<username>.json
。
为了防止这些文件被版本控制,您可以在您的 .gitignore
文件中添加以下行
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
/playwright/.auth/
从 @grafana/e2e
迁移
安装和配置好 Playwright 和 @grafana/plugin-e2e
后,您可以按照以下步骤从 @grafana/e2e
迁移。
迁移测试
目前没有工具可以自动将基于 @grafana/e2e
的 Cypress 测试迁移到基于 @grafana/plugin-e2e
的 Playwright 测试。 这意味着您需要逐一转换测试或使用基于 Playwright 的新测试集替换它们。 请参考以下资源,获取有关如何编写 Playwright 测试的灵感
在 CI 中运行测试
要在 CI 中运行针对 Grafana 多个版本的 Playwright 测试,请使用 CI 指南中的示例工作流程之一。
请注意,Grafana 不提供任何支持的方式来运行针对 Grafana 多个版本的端到端测试,这些测试在其他 CI 平台(如 Drone 或 CircleCI)上运行。 但是您可以轻松地配置您的 CI 来复制参考的 Github Action 的操作,因为我们没有做任何其他 CI 系统无法做到的特定事情。
卸载 Cypress 和 @grafana/e2e
虽然我们建议您及时从 @grafana/e2e
迁移到 @grafana/plugin-e2e
,但没有什么可以阻止您在过渡阶段并排使用它们。
当所有 Cypress 测试都迁移完成后,打开终端,并在您的本地插件开发目录中运行以下脚本
1. 删除 Cypress 测试和配置文件
rm ./cypress.json
rm -rf ./cypress
2. 卸载依赖项
npm uninstall --save-dev @grafana/e2e @grafana/e2e-selectors
3. 更新脚本
在 package.json
文件中,完全删除 e2e:update
脚本,并将 e2e
脚本更改为以下内容
"e2e": "playwright test",