插件功能测试编辑

插件在 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