Grafana功能开关
简介
Grafana使用称为功能开关的机制,在运行时使代码可以开启或关闭。插件可以选择性地对功能开关的状态做出反应,以相应地改变其行为;如果是这样,您可以在端到端测试中涵盖这一点。本指南描述了@grafana/plugin-e2e的特性,使其更容易处理功能开关。
将功能开关配置传递给Grafana
配置整个Grafana堆栈中可用的功能开关的最简单方法是在启动您的Grafana实例时指定操作环境变量。有关如何操作的说明,请参阅我们的文档。
在端到端测试中覆盖前端功能开关
@grafana/plugin-e2e工具允许您覆盖Grafana配置的前端功能开关。您可以通过在Playwright配置文件中指定自定义选项featureToggles来实现这一点。
// playwright.config.ts
import { defineConfig, devices } from '@playwright/test';
import { PluginOptions } from '@grafana/plugin-e2e';
export default defineConfig<PluginOptions>({
testDir: './tests',
reporter: 'html',
use: {
baseURL: 'https://127.0.0.1:3000',
featureToggles: {
experimentalPluginQueryEditor: false,
experimentalPluginConfigEditor: true,
},
},
...
}
注意
以这种方式定义的功能开关将传播到window.grafanaBootData.settings.featureToggles
。这意味着它们只会影响Grafana的前端。如果您需要功能开关在整个堆栈中产生影响,请参阅上一节。
在特定测试文件中覆盖功能开关
要覆盖特定测试文件中的功能开关,请使用以下代码。
import { test, expect } from '@grafana/plugin-e2e';
test.use({
featureToggles: {
experimentalPluginQueryEditor: true,
},
});
检查测试中是否启用了功能
使用isFeatureToggleEnabled
fixture 确定是否启用了某个功能开关。在底层,isFeatureToggleEnabled
检查给定的功能是否在window.grafanaBootData.settings.featureToggles
对象中定义并启用。
import { test, expect } from '@grafana/plugin-e2e';
import * as semver from 'semver';
test('valid credentials should return a 200 status code', async ({
createDataSourceConfigPage,
page,
isFeatureToggleEnabled,
}) => {
const configPage = await createDataSourceConfigPage({ type: 'grafana-snowflake-datasource' });
await configPage.getByGrafanaSelector('Data source connection URL').fill('https://127.0.0.1:9090');
const isSecureSocksDSProxyEnabled = await isFeatureToggleEnabled('secureSocksDSProxyEnabled');
if (isSecureSocksDSProxyEnabled) {
page.getByLabel('Enabled').check();
}
await expect(configPage.saveAndTest()).toBeOK();
});