跳至主要内容

从 @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 install @grafana/plugin-e2e@latest --save-dev

步骤 3:配置 Playwright

打开在安装 Playwright 时生成的 Playwright 配置文件。

  1. 取消 baseUrl 的注释,并将其更改为 'https://127.0.0.1:3000'
playwright.config.ts
  baseURL: 'https://127.0.0.1:3000',
  1. Playwright 使用 项目 来逻辑地对具有相同配置的测试进行分组。 我们将添加两个项目

    1. auth 是一个设置项目,它将登录 Grafana 并将已验证的状态存储在磁盘上。
    2. run-tests 在您选择的浏览器中运行所有测试。 通过向 auth 项目添加依赖项,我们确保登录只发生一次,并且 run-tests 项目中的所有测试都将以已验证的方式开始。

    您的 Playwright 配置应具有以下项目配置

playwright.config.ts
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 文件中添加以下行

.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",