配置 Synthetics 项目编辑

综合测试支持配置可在项目中使用的动态参数。此外,基于 Playwright 构建的 Synthetics 代理支持配置 Playwright 特定方法中可用的浏览器和上下文选项,例如,ignoreHTTPSErrorsextraHTTPHeadersviewport

在 Synthetics 项目的根目录中创建一个 synthetics.config.jssynthetics.config.ts 文件,并指定选项。例如

import type { SyntheticsConfig } from '@elastic/synthetics';

export default env => {
  const config: SyntheticsConfig = {
    params: {
      url: 'https://elastic.ac.cn',
    },
    playwrightOptions: {
      ignoreHTTPSErrors: false,
    },
    /**
     * Configure global monitor settings
     */
    monitor: {
      schedule: 10,
      locations: [ 'us_east' ],
    },
    /**
     * Project monitors settings
     */
    project: {
      id: 'my-project',
      url: 'https://abc123',
      space: 'custom-space',
    },
  };
  if (env !== 'development') {
    /**
     * Override configuration specific to environment
     * For example, config.params.url = ""
     */
  }
  return config;
};

上面示例中的 env 是您从中推送的环境,*而不是* 监控器将在其中运行的环境。换句话说,env 对应于配置的 NODE_ENV

配置文件可以导出一个对象,也可以导出一个函数,该函数在被调用时应返回生成的配置。要详细了解如何根据环境配置测试,请参阅动态配置文档。

params编辑

一个 JSON 对象,用于定义测试所需的任何变量。在使用参数和密钥中了解更多信息。

playwrightOptions编辑

有关所有可用选项,请参阅Playwright 文档

请勿尝试在通过 Elastic 的全球托管测试基础设施或私有位置运行时以有头模式(使用 headless:false)运行,因为不支持此模式。

以下是与 Elastic Synthetics 特别相关的几个 Playwright 选项的详细信息,包括超时、时区和设备仿真。

超时编辑

Playwright 有两种类型的超时用于 Elastic Synthetics:操作和导航超时

Elastic Synthetics 使用默认的操作和导航超时 50 秒。您可以使用 playwrightOptions 中的 actionTimeoutnavigationTimeout 覆盖此默认值。

时区和语言环境编辑

Elastic 全球托管测试基础设施当前未设置时区。对于私有位置,监控器将使用运行 Elastic Agent 的主机上的时区。如果您想测试 Web 应用程序在不同时区中的行为方式,这并不总是可取的。要指定监控器运行时使用的时区,您可以按监控器或全局使用 playwrightOptions

要为项目中的所有监控器使用时区和/或语言环境,请在配置文件中设置 locale 和/或 timezoneId

playwrightOptions: {
  locale: 'en-AU',
  timezoneId: 'Australia/Brisbane',
}

要为*特定*监控器使用时区和/或语言环境,请使用 monitor.use 将这些选项添加到行程中。

设备仿真编辑

用户可以使用配置文件模拟移动设备。以下示例配置在“Pixel 5”仿真模式下运行测试。

import { SyntheticsConfig } from "@elastic/synthetics"
import { devices } from "playwright-chromium"

const config: SyntheticsConfig = {
  playwrightOptions: {
    ...devices['Pixel 5']
  }
}

export default config;

project编辑

有关项目的信息。

id (string)

与您的项目关联的唯一 ID。它将用于对监控器进行逻辑分组。

如果您使用 init 创建了一个项目,则这是您指定的 <项目名称>

url (string)
要将监控器上传到的部署的 Kibana URL。
space (string)
已推送监控器的目标Kibana 空间的标识符。空间可帮助您组织已推送的监控器。如果未指定,则推送到“默认”空间。

monitor编辑

使用 @elastic/synthetics push 命令时要应用于*所有*监控器的默认值。

id (string)
此监控器的唯一标识符。
name (string)
监控器的人类可读名称。
tags (Array<string>)
将与监控器事件一起发送的标签列表。标签显示在 Synthetics 应用程序中,并允许您按标签搜索监控器。
schedule (number)
监控器应运行的时间间隔(以分钟为单位)。
enabled (boolean)
启用或禁用监控器运行,而无需删除和重新创建它。
locations (Array<SyntheticsLocationsType>)

在哪里部署监控器。监控器可以部署在多个位置,以便您可以检测这些位置之间可用性和响应时间的差异。

要列出可用位置,您可以

privateLocations (Array<string>)

监控器将部署到的私有位置。这些私有位置指的是由您托管和管理的位置,而 locations 是由 Elastic 托管的。您可以使用位置名称指定私有位置。

要列出可用的私有位置,您可以

  • 使用要从中获取可用位置的部署的 Kibana URL 运行 elastic-synthetics locations 命令
  • 转到 Synthetics管理 并单击 创建监控器。私有位置将在*位置*中列出。
throttling (boolean | ThrottlingOptions)
控制监控器的下载速度、上传速度和延迟,以模拟您的应用程序在速度较慢或延迟较高的网络上的行为。设置为 false 以完全禁用限流。
screenshot (ScreenshotOptions)
控制是否捕获屏幕截图。选项包括 'on''off''only-on-failure'
alert.status.enabled (boolean)
启用或禁用监控器状态警报。在警报中详细了解警报。
retestOnFailure (boolean)

启用或禁用监控器失败时的重新测试。默认值为 true

默认情况下,如果监控器从“up”变为“down”,则会自动重新测试监控器。如果重新测试的结果也是“down”,则会创建一个错误,并且如果已配置,则会发送警报。然后,监控器将根据定义的计划恢复运行。使用 retestOnFailure 可以减少与瞬态问题相关的噪音。

有关单独配置监控器的信息,请参阅