How DOM Capture and Replay works
DOM Capture relies on the Document Object Model (DOM), which provides a structured representation of the web page (document). The DOM Capture Service captures a "snapshot" of the rendered DOM. The "snapshot" is sent to the server as a Type 12 JSON message. The Replay server processes the DOM for Browser Based Replay (BBR).
Stages of DOM Capture and Replay
Stage | Processing |
---|---|
Capture | During this stage, UI Capture processes the DOM message into a UI hit request. |
PCA Processing | During this stage, PCA handles decompression of the compressed POST data. |
Pipeline Processing | During this stage, the pipeline moves the captured DOM from the UI hit to a 'virtual' hit that uses the captured DOM as the hit response. |
Replay | This stage processes the session on the replay server according to the defined rules. |
Capture
After the raw DOM is captured, Tealeaf® updates input variables and applies privacy masking according to the UI Capture privacy masking rules. Inline script elements are deleted.
If the captured DOM is below the configured size limit, the capture is serialized into JSON Type 12 message format. The message is compressed or not, depending on the settings. If the captured DOM is over the configured size limit, the capture is discarded and an error message is logged.
PCA processing
- JSON text with no compression
- JSON text with gzip compression
Pipeline processing
The Windows pipeline moves the captured DOM from the UI hit into a virtual hit with the captured DOM as a response. The DOM Capture data is removed from the JSON and metadata is modified. The virtual hit has the same PAGE URL as the UI hit that had the DOM captured data.
Replay
The replay server processes the session according to the defined rules. For pages on which DOM Capture is enabled, the replay server goes through the UI events and identifies those events that have a captured DOM associated with them. The Replay server uses the page ID and token of the captured DOM to identify the virtual hit and the rendered DOM for the UI event.