Skip to content

Latest commit

 

History

History
617 lines (403 loc) · 22.6 KB

CHANGELOG.md

File metadata and controls

617 lines (403 loc) · 22.6 KB

Changelog

All notable changes to this project will be documented in this file.

For detailed release notes, please refer to the GitHub releases page.

v1.0.0-beta-39 (20222-11-29)

Features

  • Improve the performance of push command when monitors are created or updated by chunking the monitors #666
  • Add an example lightweight monitor yaml file when a new synthetics project is created via init command #650

Bug Fixes

  • Parse varying NDJSON chunked responses sizes from Kibana when the API endpoint is behind a proxy #680
  • Skip adding empty values for locations when creating new synthetics project using init command #658

v1.0.0-beta-38 (20222-11-02)

Features

  • Improve the validation of project monitor schedule for both browser and lightweight monitors. Error would be thrown if users would configure monitor schedule that are not supported. For lightweight monitors, we would save the schedule to the nearest supported schedule frequency #622

    Current allowed schedule values are 1, 3, 5, 10, 15, 30, 60 minutes respectively.

  • Improve the push command experience by showing the monitor management URL link once the push has been completed successfully #637

Bug Fixes

  • Pick the correct loader when bundling TypeScript or JavaScript journey files during push command #626

v1.0.0-beta-37 (20222-10-07)

Bug Fixes

  • fix an issue in newer versions of sharp by creating separate sharp instance to produce screenshots data #623

v1.0.0-beta-36 (20222-09-30)

Features

Project based lightweight monitors

In addition to pushing Project based browser monitors to Monitor management UI, the agent now supports pushing existing lightweight monitors directly from the heartbeat.yml files #542. Users can directly import the existing heartbeat.yml files in to their Synthetics project and configure the required project settings (Kibana host, auth key, locations, etc.) and run the push command.

  1. Create a new Synthetics project using npx @elastic/synthetics init <dir-name> and configure the project related settings.
  2. Copy the existing heartbeat.yml files in to the synthetics project directory. Example
   // heartbeat.yml example
  - type: http
    enabled: true
    id: my-monitor
    name: My Monitor
    urls: ["http://localhost:9200"]
    schedule: @every 10m
    locations: ["singapore"]
    timeout: 16s
  1. Override the schedule, locations and private locations for specific monitors. Otherwise the defaults would be picked from synthetics.config.ts files.
  2. Run the push command SYNTHETICS_API_KEY=<key> npm run push.

Browser version

  • Playwright version has been updated to 1.26.0, this means the tests will be run on Google Chrome/106.0.5249.30.

Bug Fixes

  • Transfer size of network requests now includes both the response header and body sizes #615

v1.0.0-beta.35 (2022-09-19)

Features

  • Agent now prompts a warning question in interactive mode when users attempt to run push command without any active monitors which would nuke an entire project #598
  • Users can suppress all prompt questions when running push command with --yes flag #602
    SYNTHETICS_API_KEY="key" npx @ealstic/synthetics push --yes

v1.0.0-beta.34 (2022-09-14)

Features

  • Synthetics push command now supports bundling external packages from node_modules folder for browser monitors, users can now use external packages utility packages like lodash, moment.js, etc, in their synthetics scripts and push them instantaneously to Kibana. #580

    Example journey code below using an external package is-positive from NPM.

    // test.journey.ts
    import { journey, step, monitor, expect } from '@elastic/synthetics';
    import isPositive from 'is-positive';
    
    journey('bundle test', ({ page, params }) => {
      step('check if positive', () => {
        expect(isPositive(4)).toBe(true);
      });
    });

    If you run npm run push inside the synthetics project, we would bundle the whole journey file along with the package is-positive to make the experience smooth. However, there are a few caveats when pushing external modules.

    1. Packages that use native bindings will not work.
    2. Users cannot push bundles that are more than 800 Kilobytes.
  • Introduce configuring project monitor settings in the Synthetics config file #592. Comes in handy when running push command, users would be able to configure project-related settings like projectId, kibana host, and schedule and save them for successive runs.

  • Support the SYNTHETICS_API_KEY env variable for Kibana authentication when pushing monitors to Kibana #588

Full Changelog: https://github.com/elastic/synthetics/compare/v1.0.0-beta.33...v1.0.0-beta.34

v1.0.0-beta.33 (2022-09-06)

  • Issue individual requests when pushing monitors to Kibana. This is to avoid timeout issues when monitors are pushed without streaming support #586

v1.0.0-beta.32 (2022-08-24)

Features

  • Improve the scaffolding experience of init command by setting up a brand new synthetics project by automatically connecting to your Kibana instance. With this, creating synthetics monitors and pushing them to Kibana becomes a lot easier #566
npx @elastic/synthetics init [project]

cd <project> && SYNTHETICS_API_KEY=<api-key> npm run push

Setting up the project is a one time operation, Once the init command is done, Synthetics agent stores the project releated settings under project.json file. From then, users can push all the synthetics monitors by specifying just the authentication key. If users want to push the monitors under different Kibana instance, project, spaces etc. They can do so by passing the CLI options explicitly.

npx @elastic/synthetics --url <url> --project <name> --space <kibana-spaces>
  • Introduce a new CLI command locations to list all the available public and private locations for running synthetic monitoring across the globe #571
// List all the available global locations managed by Elastic for
// running synthetics monitors
npx @elastic/synthetics locations


// List all managed locations as well as custom private locations
npx @elastic/synthetics locations --url <kibana-host> --auth <api-key>
  • Warns when users accidently trying to push same sets of monitors under different project name #566
  • Push command now can display progress in the terminal whenever monitors are created, updated and deleted along with errors #576

Bug Fixes

  • Report error when monitors with duplicate ids are pushed to Kibana #568
  • Allow CLI sub commands(push, locations, init) to receive common options #572
  • Bundled push monitor contents must be idempotent, this caused performance issues in the Kibana side when monitors were updated everytime user ran the push command #579
  • Report warnings in the terminal when Kibana fails to delete stale monitors #565

v1.0.0-beta.31 (2022-07-27)

Features

  • Expose request context as part of the Journey if you want to make calls to the HTTP API of your application #555

Bug Fixes

  • Push command fails to push the monitors in windows platform #553

v1.0.0-beta.30 (2022-06-28)

Bug fixes

  • Use fixed playwright version to avoid running in to dependency issues #540

v1.0.0-beta.29 (2022-06-21)

Bug fixes

  • Setup github workflow template correctly #529
  • Stop pushing monitors on bundle errors #530
  • Delete stale monitors by default on push command #534
  • Allow controlling timeouts via actions #532
  • Remove trailing slash from Kibana host #536

v1.0.0-beta.28 (2022-06-13)

Features

  • Now that push only supports configurations in the current working directory, it also allows users to use the --match, --pattern and --tags flags to filter which journeys to push #523
  • The init command now generates more detailed examples, and includes documentation reference #524

Bug fixes

  • Upgrade sharp version to avoid known vulnerabilities #519
  • Update source-map-support so that we use correct filepaths when bundling and pushing monitors #520

v1.0.0-beta.27 (2022-06-03)

Features

  • Use Kibana Uptime APIKeys instead of Basic Auth for pushing monitors #512
  • Update all the available Synthetics test node locations #515
  • Interactive scaffolding using the npx @elastic/synthetics init <dir> command, allows users to choose default test location and schedule for the monitors to be pushed to Kibana #508

Bug fixes

  • Write .gitignore files for scaffolding instead of managing under assets #510
  • Preserve the original User-Agent string if the user configured the value and do not append 'Elastic/Synthetics' identifier #514
  • Override the PlaywrightOptions when configured via CLI and Synthetics config file #517

v1.0.0-beta.26 (2022-05-20)

Features

  • Introduce new npx @elastic/synthetics push command that allows users to manage the monitors in the Kibana Monitor Management UI from the command line #482
  • Allow users to scaffolding a brand new Synthetics project from scratch using the npx @elastic/synthetics init command #502
  • Custom Reporter interface that allows for more extensability when building new reporters for the Synthetics runner #492
  • Expose monitor DSL along with journey and step that allows configuring each individual monitors #493

v1.0.0-beta.25 (2022-04-12)

Features

  • Use network events emitted from playwright browser context, This would allow the synthetics agent to capture network requests that are part of popups and other page objects #488

v1.0.0-beta.24 (2021-04-01)

Bug fixes

  • Update the playwright to version 1.20.1 to address issues related to core dumps #485

Breaking Changes

  • With the playwright update to version 1.20.1, Synthetics agent offically dropped support for CentOS and Heartbeat images will be distributed based on ubuntu 20.04 which is supported by Playwright as well.

v1.0.0-beta.23 (2022-03-23)

Features

  • Add location metadata for journeys and step #474
  • Export Action type from the Synthetics formatter #454
  • Enhance the synthetics formatter to control when the step begins and ends #457
  • Add ability to add subcommands to the cli in #475

v1.0.0-beta.22 (2022-03-14)

Bug fixes

  • Empty the write buffer before exit the Node.js process #446
  • Reduce the network information data by writing only the necessary fields #466

v1.0.0-beta.21 (2022-02-22)

Bug fixes

  • Do not override User agent string when doing device emulation #462

v1.0.0-beta.20 (2022-02-16)

Bug fixes

  • Capture syntax errors inside inline journeys without throwing promise rejection errors #450

v1.0.0-beta.19 (2022-01-31)

Bug fixes

  • Ensure journey/end is written to file descriptor by flushing out the last bytes in underlying stream #446
  • Debug logs should be logged to stdout instead of using the reporter file descriptor #423

v1.0.0-beta.18 (2022-01-13)

Bug fixes

  • Do not read configuration files for inline journeys unless a --config parameter is passed #426
  • Stop runner from hanging indefinitely within ubuntu docker images [elastic/beats#29681] #441

v1.0.0-beta.17 (2021-11-11)

Breaking Changes

  • Remove 'suiteparams' CLI option which was depreacted in the previous releases. Use --params instead #406

Features

  • Add support for --playwright-options CLI flag that lets user specify all browser and context options that Playwright supports in addition to passing it via synthetics.config.js file #405

Bug fixes

  • Timestamp of journey/end event reflects the time when the event happens instead of the time event was written to the output stream. This fixes issue when duration is calculated based on journey/start and journey/end #409
  • Rewrite screenshot timestamp based on when screenshot was taken instead of when the screenshot was processed and reconstructed #411

v1.0.0-beta.16 (2021-10-19)

Bug fixes

  • Revert to Playwright 1.14.0 as the newer versions of chromium breaks CentOS7. As a result of this revert, network events from other contexts like popups, iframes, tabs would not get captured #402

v1.0.0-beta.15 (2021-10-14)

Breaking Changes

  • Drop support for Node 12 #397

Features

  • Enable trace events when invoked via Heartbeat, enables step level metrics like FCP, LCP and other performance metrics for all journeys #387
  • Use network events from playwright context which captures network requests from iframes, new tabs, etc. #372
  • Add default network emulation for journeys to be able to capture performance measurements more effectively. Default is 5Mbps download, 3Mbps Upload and 20ms latency. Users can control network throttling with --throttling '10d/2u/30l' flag or can disable the throttling via --no-throttling flag #284
  • Add Elastic/Synthetics user-agent identifier to all network requests. This enables users to analyze traffic from Elastic Synthetic monitoring platform #232
  • Introduce more assetion commands to formatter #385

Bug fixes

  • Account for page closing while capturing network events #398

v1.0.0-beta.14 (2021-09-16)

Bug fixes

  • Bring back --suite-params flag support to support Heartbeat 7.15 #379

v1.0.0-beta.13 (2021-09-16)

Features

  • Add step level tracing API which enables capturing performance metrics (core web vitals) for each navigation as part of the journey #369
  • Capture all page errors and unhandled exceptions as part of the journeys #374
  • Introduce synthetics script generator which can transform the recorder actions into code #375

v1.0.0-beta.12 (2021-08-19)

Features

  • Add support for expect assertions for inline suites #365
  • Add ignore-https-errors to the CLI to ignore any HTTPS errors during navigation #361

Notable changes

  • Bump playwright to 1.14.0 #366
  • Bump Node.js version to 14 #364

v1.0.0-beta.11 (2021-08-09)

Breaking Changes

  • Drop support for Heartbeat 7.13 #354

Features

  • Add quiet mode for Heartbeat via --quiet-exit-code and make it default for > 7.14 Heartbeat versions #357

v1.0.0-beta.10 (2021-07-27)

Bug fixes

  • Record correct screenshots for popups in new tabs and windows #353
  • Capture URL correctly for steps that involve navigations inside popups and windows #352

v1.0.0-beta.9 (2021-07-13)

Bug fixes

  • Populate journey id when its not explicitly specified #346
  • Remove Node.js 12 version restriction #343

v1.0.0-beta.8 (2021-07-07)

Bug fixes

  • Capture screenshots correctly when using device emulation #340

v1.0.0-beta.7 (2021-07-01)

Features

  • Deprecate 'suiteparams' infavor of 'params' #331

Bug fixes

  • Bring --network flag back till 7.14 is released #336

v1.0.0-beta.6 (2021-06-30)

Bug fixes

  • Bring --json flag back till 7.14 is released #333

v1.0.0-beta.5 (2021-06-30)

Features

  • Add support for passing playwright context and browser options via synthetics config #317

Bug fixes

  • Compability bug with FS apis on Node 12 #328
  • Add fallback symbols for non utf8 support in windows #324

v1.0.0-beta.4 (2021-06-28)

Breaking Changes

  • Remove -e from CLI args and use NODE_ENV for controlling the environment #318

Features

  • Add new screenshots options - on|off|only-on-failure to manage capturing the step screenshots #311
  • Enable screenshot deduplication feature by default when the agent is invoked via Heartbeat #322

Bug fixes

  • Avoid creating duplicate screenshot JSON docs for each journey #320
  • Associate beforeAll hook errors across all journeys #316
  • Provide journey isolation via context #314

v1.0.0-beta.3 (2021-06-15)

Features

  • Capture all core-vitals and user experience metrics like FPC, LCP, CLS, User timing metrics, etc via chrome tracing #194
  • Split the captured screenshot from each step in to 64 blocks to optimzie the storage when indexed the same block in Elaticsearch #290
  • Add support for filtering journeys by name and tags #300
  • Expose expect assetion method in the API #201
  • Update Cumulative Layout Shift(CLS) metric based on maximum session window with 1 second gap, capped at 5 seconds #301
  • Expose time taken to complete single step under step.duration.us #302
  • Expose new capabilities via --capability through CLI options #295
  • Add new flag --rich-events which mimicks heartbeat behaviour #289.
  • Expose suite parameters from CLI and config file to all hooks and journeys callbacks#272

Bug fixes

  • Move all of the trace events like FCP, LCP, User timings under browser.relative_trace#303
  • Prioritize suite params from CLI over config file #298
  • Report errors from before and after hooks #273

v1.0.0-beta.2 (2021-05-17)

Features

  • Allow dynamic suite parameters configuration via synthetics.config.{js|ts} #270

Performance Improvements

  • Improve execution time of test suites by spawning journeys in isolated context instead of launcing browser for each run #274

v1.0.0-beta.1 (2021-05-04)

Bug fixes

  • Exclude all data URI requests from network events #267

v1.0.0-beta.0 (2021-04-23)

Features

  • Default to JPEG images with quality 80 for individual step screenshots#233

Bug fixes

  • Keep journey callback types to be synchronous to match with how steps are executed synchronously#256
  • Report correct page URL on navigation failures#255

NOTE: Playwright version is updated to 1.10.0

v0.0.1-alpha14 (2021-04-14)

Features

  • Add support for custom reporters for the Synthetics runner #254

v0.0.1-alpha13 (2021-04-08)

Features

  • Remove duplicate payload fields and keep the network fields under ECS #252

Bug fixes

  • Measure the network timings for aborted and inflight network requests correctly#251

v0.0.1-alpha12 (2021-03-31)

Features

  • Record transfer size and resource size for all network events #220
  • Report the number of journeys as part of the new synthetics/metadata event which would be used by heartbeat eventually for sharding #247

v0.0.1-alpha11 (2021-03-10)

Features

  • Expose driver type information from the agent #239

Exposing the types allows developers to import the driver type information directly from the synthetics package instead of using via playwright specific packages which would result in inconsistent types (version mismatch or browser specific types).

v0.0.1-alpha10 (2021-03-04)

Features

  • Move all the ECS specific fields under root_fields #164
  • Add support for Junit reporter #149
  • Expose status field for step/end and journey/end #230

Bug fixes

  • Disable chromium sandboxing by default #225

v0.0.1-alpha9 (2021-02-01)

Features

  • Add runtime seccomp profiler for the synthetics agent #181

Bug fixes

  • Exit with non-zero code when any step/journey fails #191
  • Calculate blocking time properly for missing network data #187
  • Preserve typescript source fails without transpiling to older JS versions #195
  • Capture redirected requests in network timing data #180