New / Breaking Browser Heartbeat Config Syntax in 7.12

To our synthetics / browser monitor users, with the release of 7.12 today you'll notice a new, improved syntax for specifying browser monitors. Please see our updated docs for more info.

Here's a sample of the new config

heartbeat.monitors:
- type: browser
  id: my-monitor 
  name: My Monitor
  schedule: "@every 1m"
  source:
    inline:
      script: |- 
        step("load homepage", async () => {
            await page.goto('https://www.elastic.co');
        });
        step("hover over products menu", async () => {
            await page.hover('css=[data-nav-item=products]');
        });
- name: Todos
  id: todos
  type: browser
  schedule: "@every 1m"
  source:
    local: 
      path: "/opt/todos" 

The gist of it is, that we got rid of the heartbeat.synthetic_suites top level config, and combined that functionality into the browser monitor type. This yields a more consistent syntax. It's a breaking change for existing configs.

Additionally, we changed the structure of the browser type config, to include a notion of source. The idea here is we now have two types of source inline and local, and are planning to add a third one for remote zips, which this syntax now lets us do. See [Heartbeat] Zip URL Support by andrewvc · Pull Request #24714 · elastic/beats · GitHub to track remote zip support, which can be used in conjunction with a git repo that hosts zips (like github) to let you deploy new synthetic tests by simply pushing a new change to git.