插件功能测试

插件在 Kibana repo 外部运行并使用 FunctionalTestRunner 。在继续之前,请确认您的 Kibana 开发环境配置正确。

编写您自己的配置

每个工程或插件应该有自己的 FunctionalTestRunner 配置文件。就像 Kibana,配置文件会定义所有要加载的测试文件、服务提供者和 PageObjects,还有某些服务的配置选项。

通过复制下面的例子到 test/functional/config.js 文件开始测试:

import { resolve } from 'path';import { MyServiceProvider } from './services/my_service';import { MyAppPageProvider } from './services/my_app_page;// 允许重写默认的 kibana 目录// 使用 KIBANA_DIR 环境变量const KIBANA_CONFIG_PATH = resolve(process.env.KIBANA_DIR || '../kibana', 'test/functional/config.js');// 配置文件的默认导出必须是一个配置提供程序(config provider)// 它返回带有项目配置值的对象export default async function ({ readConfigFile }) {  // 读取 Kibana 配置文件,这样我们可以使用它的一些服务和 PageObjects  const kibanaConfig = await readConfigFile(KIBANA_CONFIG_PATH);  return {    // 列出包含您插件测试用例的文件路径    testFiles: [      resolve(__dirname, './my_test_file.js'),    ],    // 定义在您的测试中可用的服务和提供程序,    // 否则,只有内置的服务可用    services: {      ...kibanaConfig.get('services'),      myService: MyServiceProvider,    },    // 就像服务那样,PageObjects 定义为提供者的名称映射    // 在 Kibana 中合并或选择指定一个    pageObjects: {      management: kibanaConfig.get('pageObjects.management'),      myApp: MyAppPageProvider,    },    // apps 部分定义 PageObjects.common.navigateTo(appKey) 使用的 urls    // 为您的插件合并 Kibana 配置中定义的 url,以便使用帮助    apps: {      ...kibanaConfig.get('apps'),      myApp: {        pathname: '/app/my_app',      }    },    // 选择 esArchiver 从哪里加载    esArchiver: {      directory: resolve(__dirname, './es_archives'),    },    // 选择 screenshots 保存到哪里    screenshots: {      directory: resolve(__dirname, './tmp/screenshots'),    }    // 更多设置,例如 timeouts、 mochaOpts 等定义在配置模式。参见 {blob}src/functional_test_runner/lib/config/schema.js[src/functional_test_runner/lib/config/schema.js]  };}

现在可以在 repo 的根目录运行您插件工程的 FunctionalTestRunner 脚本。

node ../kibana/scripts/functional_test_runner

使用 esArchiver

我们正在为这部分准备文档,但目前最好的资料是原始的 pull request