Skip to content

Latest commit

 

History

History
656 lines (369 loc) · 19.2 KB

CHANGELOG.md

File metadata and controls

656 lines (369 loc) · 19.2 KB

Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Info

Added

Changed

Deprecated

Removed

Fixed

Fixed

  • fix logging in "debug" mode

Fixed

  • catch potential errors due to the "unique" method from the "unique-selector" library

Added

  • use collectorApiUrl property in /settings response to make tracking requests

Changed

  • GravityRecordingSettingsError enumeration
  • AddSessionUserActionsError enumeration

Info

  • update documentation about selectors

Removed

  • DOM snapshot recording has been totally removed,
  • and option inlineResources has been removed consequently

Info

  • add logger in collector options
  • add stop function to stop recording
  • don't record userActions on elements having (or having parent having) rr-ignore or rr-block classnames

Fixed

  • catch 'querySelector' exception in findLabelForElement (not so relevant)

Info

  • new anonymization consideration: all texts/images are systematically anonymized. Exceptions are set via Gravity through the parameter allowList (see type AnonymizationSettings)
  • use @smartesting/rrweb-XXX packages
  • pass window from collectorOptions to video recorder

Added

  • option allowList to control anonymization exceptions (set via Gravity client)

Removed

  • options videoAnonymization, snapshotAnonymization, anonymizeSelectors & ignoreSelectors removed

Fixed

  • revert sending snapshot when recording is initialized: this was causing a problem when running Cypress tests

Info

  • send snapshot when initialize recording to prevent missing snapshots

Fixed

  • if the initWithOverride method is used, a session started user action is now sent

Fixed

  • if a window is passed as an option, it is now used to complete certain information on user actions, such as the title or the path of the page for example

Added

  • inlineResources option to inline (or not) the style of the recorded snapshots

Added

  • GravityCollector.getSessionId() provides the current session id.
  • GravityCollector.initWithOverride() overrides potential existing instances.

Removed

Changed

  • compress snapshots before sending them to Gravity server

Added

  • store screenshot of the visited pages.

Removed

  • all the recording options have been removed from the GravityCollector initialization. These options are now exclusively settable from the Gravity app.

Added

  • options cookieStrategy and cookieWriter to enable various strategies for setting cookies. #29

Added

  • option useHashInUrlAsPathname which handles cases where the href of the pages looks like this http://mysite.com/#/something/else

Added

  • add optional interactiveTarget field in TargetedUserAction to save ancestor element holding click listener

Removed

mouseenter and mouseleave events capture, which could be the cause of slowdowns

Removed

  • wheel event capture, which could be the cause of slowdowns

Fixed

  • catch exception Uncaught ReferenceError: process is not defined in method discoverBuildId

Added

  • Add options anonymizeSelectors & ignoreSelectors to precisely control recording of some elements

Changed

  • Some events are not replicated anymore when they are triggered multiple times with the same target to avoid spamming:
    • scroll
    • wheel
    • touchmove
    • resize

Removed

  • remove the following deprecated options:
    • excludeRegex: use selectorsOptions instead
    • customSelector: use selectorsOptions instead
    • originsToRecord: use recordRequestsFor instead

Fixed

  • fix exception Uncaught ReferenceError: process is not defined in method discoverBuildId

Fixed

  • The session timeout was reset with each new tab, causing sessions to last several days
  • The session timeout was not reset after new user events

Changed

  • Update UserActionData to embed data about the targeted element.

Added

  • Anonymization of video recordings controllable from Gravity
  • Option to enable/disable video recording anonymization in debug mode
  • Track new HTML events:
    • contextmenu
    • dblclick
    • copy
    • cut
    • paste
    • select
    • dragstart
    • drop
    • play
    • pause
    • seeked
    • fullscreenchange
    • resize
    • hashchange
    • focus
    • blur
    • submit
    • reset
    • mouseenter
    • mouseleave
    • scroll
    • wheel
    • toggle
    • touchstart
    • touchmove
    • touchend
    • touchcancel

Changed

  • data-testid attribute is now collected by default on targeted user actions

Added

  • add collector option enableEventRecording to (de)activate event recording
  • add collector option enableVideoRecording to (de)activate video recording

Deprecated

  • Option disableVideoRecording replaced by enableVideoRecording (reversed)

Fixed

  • Fix video records loss after session timeout

Added

  • Option to disable video recording of sessions

Changed

  • Request interval option default value is reduced to 1000 (instead of 5000)

Fixed

  • Last events of video recording were not sent to Gravity

Changed

  • Stream screen recordings

Added

  • Add screen recording with rrweb

Changed

  • Centralize API endpoints in the HttpGravityClient.ts file

Added

  • Add option buildId to ease specifying the buildId instead of relying on global variables.

Added

  • Add request errors project_not_found and project_expired to prepare the concept renaming domain into project

Added

  • Allow specifying window when initializing collector #24

Fixed

  • Gravity Data Collector import from an HTML tag #23

Changed

Changed

  • fetch methods now automatically follow redirects

Changed

  • Cypress event tracking: reduce command.args property if too large

Fixed

  • force "user actions" flushing on Cypress event "test:after:run"

Fixed

  • Cypress event tracking: send all the events to Gravity
  • batch user action sending

Fixed

  • CookieSessionIdHandler: prevent error when document.location has not been defined

Changed

  • Cypress event tracking: skip some events (named 'then', 'task' or 'wrap')

Added

  • track Cypress test information (if available) as a new TestCommand user action

Fixed

  • Prevent creating a new session for each action if the URL is an IP address

Added

  • add testingTool property to TestContext to store used testing tool (e.g. Cypress)

Added

  • Store Cypress test context in tracked SessionStartedUserAction

Fixed

  • Prevent "Cannot read properties of undefined (reading 'toLowerCase')" runtime error

Fixed

  • Trigger a Change event when typing in a text field (<input type="text" /> or <textarea />) #20

Fixed

  • XHR requests were not recorded

Deprecated

  • Option originsToRecord, renamed recordRequestsFor

Added

  • Track multiple selectors for targets
  • Option selectorsOptions allowing fine tuning of target selectors
  • Option originsToRecord allowing record of requests
  • Fetch button on sample page

Deprecated

  • Field selector of UserActionTarget.
  • Option excludeRegex and customSelector of CollectorOptions

Fixed

  • Prevent the error triggered by a drag'n drop event

Fixed

  • Fix the search for the label associated with an element

Added

  • Send buildId in SessionStartedUserAction when GRAVITY_BUILD_ID or REACT_APP_GRAVITY_BUILD_ID is set.

Changed

  • IdentifySessionError enumeration

Changed

  • AddSessionUserActionsError enumeration

Added

  • New option sessionsPercentageKept: rate (in 0..100) of sessions to be collected (default is 100).
  • New option rejectSession: boolean function to disable session tracking

Added

  • New option excludeRegex: regular expression to define ID and class names to ignore in selector computation.
  • New option customSelector: string indicates the attribute to use as a selector if defined on an HTML element targeted by a user action.

Fixed

  • Session cookies are now saved at the root of the website. This prevents some bugs due to a change of session id between two different pathnames

Added

  • New storage for session identifiers: session cookies. This ensures that the same session is maintained when browsing different subdomains of a superdomain
  • A session now expires after 30 minutes without user action

Changed

  • Type Traits renamed more precisely to SessionTraits and moved to types.ts file
  • Type TraitValue renamed more precisely to SessionTraitValue
  • Method sendSessionTraits now returns a response typed IdentifySessionResponse with well-typed error
  • Method sendSessionUserActions now returns a response typed AddSessionUserActionsResponse with well-typed error

Fixed

  • Stop tracking when receiving errors specified in config.ts
  • Prevent error in method isKeyAllowedByKeyListeners

Added

  • onPublish callback function called each time events are sent to the gravity server.

Changed

  • Update README.md: describe how to identify session with traits

Added

  • Add GravityCollector.identifySession method to record custom session data

Changed

  • Records all click events, even where they are fired by a key or an automated test framework

Fixed

  • Sending user actions twice when maxDelay is set to 0

Added

  • Collect Enter and NumpadEnter key down and press while targeting an input

Changed

  • Start a new session when the collector is run in a Cypress test context and the current test name is different from the previous one.

Changed

  • Stop collecting consecutive keydown actions targeting the same element ( see #9)

Fixed

  • Remove version from the minified script link in README and sample

Fixed

  • Restore the local link toward local dist-sandbox/bundle.js in sample

Info

  • Minified version are not available for previous releases

Added

  • A minified version is now deploy with npm package and can be accessed using UNPKG service

Fixed

  • Do not set Origin header when no source is provided. ( see #8)
  • Do not access directly global.document, leave it to a function dedicated if global is not defined. ( see #7)

Changed

  • Add source: string optional parameter to sendSessionUserActions

Added

  • Export sendSessionUserActions in types.ts

Fixed

  • Use window.sessionStorage to save and retrieve user session id.
  • Use beforeunload to collect form submission

Added

  • Add display info to target: label, placeholder and text.
  • Add a select element to sample.

Changed

  • Emit ES5 Javascript code instead of es2021

Added

  • Add keyup event listener (see #2)
  • Add keydown event listener (see #2)

Changed

  • Stop recording click while it is fired by keyboard ( see #2)
  • Objects sent to Gravity Server are now called SessionUserAction instead of SessionEvent

Removed

  • Stop recording unload
  • Stop recording the whole attributes object from html elements

Fixed

  • Simplify sample

Fixed

  • Strip trailing slash in gravityServerUrl (see #6)

Security

Info

  • Previous releases were broken.

Added

  • Track user events: sessionStarted, click, change and sessionEnded (which corresponds to the unload DOM event)
  • Add debug options: when set to true, logs events in the console instead of sending to Gravity