From 3a14f299520c65d0148b4fe0b93fcffa06369f48 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Thu, 6 Jul 2023 19:59:36 -0400 Subject: [PATCH 1/2] feat: add forked sentry tests This adds tests for the features that Sentry has added --- .github/workflows/ci-cd.yml | 9 +- .../__snapshots__/integration.test.ts.snap | 11 +- .../rrweb-snapshot/test/html/form-fields.html | 8 +- packages/rrweb-snapshot/test/snapshot.test.ts | 24 +- packages/rrweb/src/types.ts | 16 + .../integration-sentry.test.ts.snap | 49159 ++++++++++++++++ .../rrweb/test/events/shadow-dom-sentry.ts | 437 + packages/rrweb/test/html/attributes-mask.html | 29 + packages/rrweb/test/html/block.html | 8 + packages/rrweb/test/html/form-masked.html | 41 + packages/rrweb/test/html/form.html | 28 +- packages/rrweb/test/html/mask-text.html | 10 + .../rrweb/test/integration-sentry.test.ts | 434 + packages/rrweb/test/integration.test.ts | 27 +- .../cross-origin-iframes.test.ts.snap | 651 +- packages/rrweb/test/replayer.test.ts | 15 + packages/rrweb/test/utils.ts | 9 + 17 files changed, 50790 insertions(+), 126 deletions(-) create mode 100644 packages/rrweb/test/__snapshots__/integration-sentry.test.ts.snap create mode 100644 packages/rrweb/test/events/shadow-dom-sentry.ts create mode 100644 packages/rrweb/test/html/attributes-mask.html create mode 100644 packages/rrweb/test/html/form-masked.html create mode 100644 packages/rrweb/test/integration-sentry.test.ts diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index a1ad8e81cf..fa618e607b 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -1,6 +1,11 @@ name: Tests -on: [push, pull_request] +on: + push: + branches: + - master + - release/** + pull_request: concurrency: ${{ github.workflow }}-${{ github.ref }} @@ -8,6 +13,8 @@ jobs: release: name: Tests runs-on: ubuntu-latest + # For now, we know this will fail, so we allow failures + continue-on-error: true steps: - name: Checkout Repo uses: actions/checkout@v3 diff --git a/packages/rrweb-snapshot/test/__snapshots__/integration.test.ts.snap b/packages/rrweb-snapshot/test/__snapshots__/integration.test.ts.snap index 529a51eeff..5c66b682aa 100644 --- a/packages/rrweb-snapshot/test/__snapshots__/integration.test.ts.snap +++ b/packages/rrweb-snapshot/test/__snapshots__/integration.test.ts.snap @@ -246,7 +246,10 @@ exports[`integration tests [html file]: form-fields.html 1`] = ` + + + + + + + + diff --git a/packages/rrweb/test/html/mask-text.html b/packages/rrweb/test/html/mask-text.html index 2abaaaa511..7610310985 100644 --- a/packages/rrweb/test/html/mask-text.html +++ b/packages/rrweb/test/html/mask-text.html @@ -16,5 +16,15 @@
mask3
+
+ mask4 +
+
+ mask5 +
+ +
+ + diff --git a/packages/rrweb/test/integration-sentry.test.ts b/packages/rrweb/test/integration-sentry.test.ts new file mode 100644 index 0000000000..fc518939a1 --- /dev/null +++ b/packages/rrweb/test/integration-sentry.test.ts @@ -0,0 +1,434 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import type * as puppeteer from 'puppeteer'; +import { + assertSnapshot, + startServer, + getServerURL, + launchPuppeteer, + replaceLast, + generateRecordSnippet, + ISuite, +} from './utils'; +import type { recordOptions } from '../src/types'; +import { eventWithTime, EventType, IncrementalSource } from '@rrweb/types'; + +/** + * Used to filter scroll events out of snapshots as they are flakey + */ +function isNotScroll(snapshot: eventWithTime) { + return !( + snapshot.type === EventType.IncrementalSnapshot && + snapshot.data.source === IncrementalSource.Scroll + ); +} + +describe('record integration tests', function (this: ISuite) { + jest.setTimeout(10_000); + + const getHtml = ( + fileName: string, + options: recordOptions = {}, + ): string => { + const filePath = path.resolve(__dirname, `./html/${fileName}`); + const html = fs.readFileSync(filePath, 'utf8'); + return replaceLast( + html, + '', + ` + + + `, + ); + }; + + let server: ISuite['server']; + let serverURL: string; + let code: ISuite['code']; + let browser: ISuite['browser']; + + beforeAll(async () => { + server = await startServer(); + serverURL = getServerURL(server); + browser = await launchPuppeteer(); + + const bundlePath = path.resolve(__dirname, '../dist/rrweb.min.js'); + const pluginsCode = [ + path.resolve(__dirname, '../dist/plugins/console-record.min.js'), + ] + .map((path) => fs.readFileSync(path, 'utf8')) + .join(); + code = fs.readFileSync(bundlePath, 'utf8') + pluginsCode; + }); + + afterAll(async () => { + await browser.close(); + server.close(); + }); + + it('can configure onMutation', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + + await page.setContent( + getHtml.call(this, 'mutation-observer.html', { + // XXX(sentry) + // onMutation: `(mutations) => { window.lastMutationsLength = mutations.length; return mutations.length < 500 }`, + }), + ); + + await page.evaluate(() => { + const ul = document.querySelector('ul') as HTMLUListElement; + + for (let i = 0; i < 2000; i++) { + const li = document.createElement('li'); + ul.appendChild(li); + const p = document.querySelector('p') as HTMLParagraphElement; + p.appendChild(document.createElement('span')); + } + }); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + + const lastMutationsLength = await page.evaluate( + 'window.lastMutationsLength', + ); + expect(lastMutationsLength).toBe(4000); + }); + + it('should not record input values on selectively masked elements when maskAllInputs is disabled', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'form-masked.html', { + maskAllInputs: false, + // XXX(sentry) + // maskInputSelector: '.rr-mask', + }), + ); + + await page.type('input[type="text"]', 'test'); + await page.click('input[type="radio"]'); + await page.click('input[type="checkbox"]'); + await page.type('input[type="password"]', 'password'); + await page.type('textarea', 'textarea test'); + await page.select('select', '1'); + await page.type('#empty', 'test'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('correctly masks & unmasks attribute values', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'attributes-mask.html', { + // XXX(sentry) + // maskAllText: true, + // unmaskTextSelector: '.rr-unmask', + }), + ); + + // Change attributes, should still be masked + await page.evaluate(() => { + document + .querySelectorAll('body [title]') + .forEach((el) => el.setAttribute('title', 'new title')); + document + .querySelectorAll('body [aria-label]') + .forEach((el) => el.setAttribute('aria-label', 'new aria label')); + document + .querySelectorAll('body [placeholder]') + .forEach((el) => el.setAttribute('placeholder', 'new placeholder')); + document + .querySelectorAll('input[type="button"],input[type="submit"]') + .forEach((el) => el.setAttribute('value', 'new value')); + }); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('should record input values if dynamically added and maskAllInputs is false', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'empty.html', { maskAllInputs: false }), + ); + + await page.evaluate(() => { + const el = document.createElement('input'); + el.id = 'input'; + el.value = 'input should not be masked'; + + const nextElement = document.querySelector('#one')!; + nextElement.parentNode!.insertBefore(el, nextElement); + }); + + await page.type('#input', 'moo'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots.filter(isNotScroll)); + }); + + it('should record textarea values if dynamically added and maskAllInputs is false', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'empty.html', { maskAllInputs: false }), + ); + + await page.evaluate(() => { + const el = document.createElement('textarea'); + el.id = 'textarea'; + el.innerText = `textarea should not be masked +`; + + const nextElement = document.querySelector('#one')!; + nextElement.parentNode!.insertBefore(el, nextElement); + }); + + await page.type('#textarea', 'moo'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots.filter(isNotScroll)); + }); + + it('should record input values if dynamically added, maskAllInputs is false, and mask selector is used', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'empty.html', { + maskAllInputs: false, + // XXX(sentry) + // maskInputSelector: '.rr-mask', + }), + ); + + await page.evaluate(() => { + const el = document.createElement('input'); + el.id = 'input-masked'; + el.className = 'rr-mask'; + el.value = 'input should be masked'; + + const nextElement = document.querySelector('#one')!; + nextElement.parentNode!.insertBefore(el, nextElement); + }); + + await page.type('#input-masked', 'moo'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots.filter(isNotScroll)); + }); + + it('should not record textarea values if dynamically added and maskAllInputs is true', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'empty.html', { maskAllInputs: true }), + ); + + await page.evaluate(() => { + const el = document.createElement('textarea'); + el.id = 'textarea'; + el.innerText = `textarea should be masked +`; + + const nextElement = document.querySelector('#one')!; + nextElement.parentNode!.insertBefore(el, nextElement); + }); + + await page.type('#textarea', 'moo'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots.filter(isNotScroll)); + }); + + it('should record input values if dynamically added, maskAllInputs is true, and unmask selector is used', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'empty.html', { + maskAllInputs: true, + // XXX(sentry) + // unmaskInputSelector: '.rr-unmask', + }), + ); + + await page.evaluate(() => { + const el = document.createElement('input'); + el.id = 'input-unmasked'; + el.className = 'rr-unmask'; + el.value = 'input should be unmasked'; + + const nextElement = document.querySelector('#one')!; + nextElement.parentNode!.insertBefore(el, nextElement); + }); + + await page.type('#input-unmasked', 'moo'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots.filter(isNotScroll)); + }); + + it('should always mask value attribute of passwords', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'password.html', { + maskInputOptions: {}, + }), + ); + + await page.type('#password', 'secr3t'); + + // Change type to text (simulate "show password") + await page.click('#show-password'); + await page.type('#password', 'XY'); + await page.click('#show-password'); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('should mask text in form elements', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'form.html', { + // XXX(sentry) + // maskAllText: true + }), + ); + + // Ensure also masked when we change stuff + await page.evaluate(() => { + document + .querySelector('input[type="submit"]') + ?.setAttribute('value', 'new value'); + }); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('should not record blocked elements from blockSelector, when dynamically added', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'block.html', { + blockSelector: 'video', + }), + ); + + await page.evaluate(() => { + const el2 = document.createElement('video'); + el2.className = 'rr-block'; + el2.style.width = '100px'; + el2.style.height = '100px'; + const source2 = document.createElement('source'); + source2.src = 'file:///foo.mp4'; + // These aren't valid, but doing this for testing + source2.style.width = '100px'; + source2.style.height = '100px'; + el2.appendChild(source2); + + const el = document.createElement('video'); + el.style.width = '100px'; + el.style.height = '100px'; + const source = document.createElement('source'); + source.src = 'file:///foo.mp4'; + // These aren't valid, but doing this for testing + source.style.width = '100px'; + source.style.height = '100px'; + el.appendChild(source); + + const nextElement = document.querySelector('.rr-block')!; + nextElement.parentNode!.insertBefore(el, nextElement); + nextElement.parentNode!.insertBefore(el2, nextElement); + }); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('should only record unblocked elements', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'block.html', { + blockSelector: 'img,svg', + // XXX(sentry) + // unblockSelector: '.rr-unblock', + }), + ); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('should mask only inputs', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'mask-text.html', { + maskAllInputs: true, + // XXX(sentry) + // maskAllText: false, + }), + ); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); + + it('should mask all text (except unmaskTextSelector), using maskAllText ', async () => { + const page: puppeteer.Page = await browser.newPage(); + await page.goto('about:blank'); + await page.setContent( + getHtml.call(this, 'mask-text.html', { + maskTextClass: 'none', + // XXX(sentry) + // maskAllText: true, + // unmaskTextSelector: '.rr-unmask', + }), + ); + + const snapshots = (await page.evaluate( + 'window.snapshots', + )) as eventWithTime[]; + assertSnapshot(snapshots); + }); +}); diff --git a/packages/rrweb/test/integration.test.ts b/packages/rrweb/test/integration.test.ts index 39e32dbcd6..3bdbe764e7 100644 --- a/packages/rrweb/test/integration.test.ts +++ b/packages/rrweb/test/integration.test.ts @@ -12,7 +12,12 @@ import { ISuite, } from './utils'; import type { recordOptions } from '../src/types'; -import { eventWithTime, EventType, RecordPlugin } from '@rrweb/types'; +import { + eventWithTime, + EventType, + RecordPlugin, + IncrementalSource, +} from '@rrweb/types'; import { visitSnapshot, NodeType } from 'rrweb-snapshot'; describe('record integration tests', function (this: ISuite) { @@ -122,7 +127,7 @@ describe('record integration tests', function (this: ISuite) { assertSnapshot(snapshots); }); - it('can record character data muatations', async () => { + it('can record character data mutations', async () => { const page: puppeteer.Page = await browser.newPage(); await page.goto('about:blank'); await page.setContent(getHtml.call(this, 'mutation-observer.html')); @@ -167,7 +172,13 @@ describe('record integration tests', function (this: ISuite) { it('handles null attribute values', async () => { const page: puppeteer.Page = await browser.newPage(); await page.goto('about:blank'); - await page.setContent(getHtml.call(this, 'mutation-observer.html', {})); + await page.setContent( + getHtml.call(this, 'mutation-observer.html', { + maskAllInputs: true, + // XXX(sentry) + // maskAllText: true, + }), + ); await page.evaluate(() => { const li = document.createElement('li'); @@ -262,7 +273,11 @@ describe('record integration tests', function (this: ISuite) { const page: puppeteer.Page = await browser.newPage(); await page.goto('about:blank'); await page.setContent( - getHtml.call(this, 'form.html', { maskAllInputs: true }), + getHtml.call(this, 'form.html', { + maskAllInputs: true, + // XXX(sentry) + // unmaskTextSelector: '.rr-unmask', + }), ); await page.type('input[type="text"]', 'test'); @@ -271,6 +286,7 @@ describe('record integration tests', function (this: ISuite) { await page.type('input[type="password"]', 'password'); await page.type('textarea', 'textarea test'); await page.select('select', '1'); + await page.type('#empty', 'test'); const snapshots = (await page.evaluate( 'window.snapshots', @@ -286,12 +302,13 @@ describe('record integration tests', function (this: ISuite) { maskInputOptions: { text: false, textarea: false, - password: true, + color: true, }, }), ); await page.type('input[type="text"]', 'test'); + await page.type('input[type="color"]', '#FF0000'); await page.click('input[type="radio"]'); await page.click('input[type="checkbox"]'); await page.type('textarea', 'textarea test'); diff --git a/packages/rrweb/test/record/__snapshots__/cross-origin-iframes.test.ts.snap b/packages/rrweb/test/record/__snapshots__/cross-origin-iframes.test.ts.snap index 48d4bdb33a..a82228fe9f 100644 --- a/packages/rrweb/test/record/__snapshots__/cross-origin-iframes.test.ts.snap +++ b/packages/rrweb/test/record/__snapshots__/cross-origin-iframes.test.ts.snap @@ -1310,9 +1310,8 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"#000000\\" }, \\"childNodes\\": [], \\"rootId\\": 11, @@ -1350,9 +1349,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"rootId\\": 11, @@ -1377,9 +1374,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -1391,7 +1386,9 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"rootId\\": 11, @@ -1413,6 +1410,124 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"rootId\\": 11, \\"id\\": 51 }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 53 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 54 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 55 + } + ], + \\"rootId\\": 11, + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 56 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 58 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 59 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 60 + } + ], + \\"rootId\\": 11, + \\"id\\": 57 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 61 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 63 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 64 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 65 + } + ], + \\"rootId\\": 11, + \\"id\\": 62 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 66 + }, { \\"type\\": 2, \\"tagName\\": \\"label\\", @@ -1424,7 +1539,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 53 + \\"id\\": 68 }, { \\"type\\": 2, @@ -1438,23 +1553,23 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = }, \\"childNodes\\": [], \\"rootId\\": 11, - \\"id\\": 54 + \\"id\\": 69 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 55 + \\"id\\": 70 } ], \\"rootId\\": 11, - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -1467,7 +1582,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -1482,7 +1597,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 60 + \\"id\\": 75 }, { \\"type\\": 2, @@ -1494,19 +1609,19 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", + \\"textContent\\": \\"Option A\\", \\"rootId\\": 11, - \\"id\\": 62 + \\"id\\": 77 } ], \\"rootId\\": 11, - \\"id\\": 61 + \\"id\\": 76 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 63 + \\"id\\": 78 }, { \\"type\\": 2, @@ -1517,39 +1632,39 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", + \\"textContent\\": \\"Option BB\\", \\"rootId\\": 11, - \\"id\\": 65 + \\"id\\": 80 } ], \\"rootId\\": 11, - \\"id\\": 64 + \\"id\\": 79 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 66 + \\"id\\": 81 } ], \\"rootId\\": 11, - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 67 + \\"id\\": 82 } ], \\"rootId\\": 11, - \\"id\\": 57 + \\"id\\": 72 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 68 + \\"id\\": 83 }, { \\"type\\": 2, @@ -1562,7 +1677,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 70 + \\"id\\": 85 }, { \\"type\\": 2, @@ -1572,23 +1687,119 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = }, \\"childNodes\\": [], \\"rootId\\": 11, - \\"id\\": 71 + \\"id\\": 86 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 87 + } + ], + \\"rootId\\": 11, + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 88 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 90 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 91 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 92 + } + ], + \\"rootId\\": 11, + \\"id\\": 89 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 93 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 95 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 96 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 72 + \\"id\\": 97 } ], \\"rootId\\": 11, - \\"id\\": 69 + \\"id\\": 94 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 98 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 99 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 73 + \\"id\\": 100 } ], \\"rootId\\": 11, @@ -1598,7 +1809,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n\\\\n\\", \\"rootId\\": 11, - \\"id\\": 74 + \\"id\\": 101 } ], \\"rootId\\": 11, @@ -1668,7 +1879,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 39 + \\"id\\": 44 } }, { @@ -1684,7 +1895,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 39 + \\"id\\": 44 } }, { @@ -1692,7 +1903,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 39 + \\"id\\": 44 } }, { @@ -1700,7 +1911,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 39, + \\"id\\": 44, \\"pointerType\\": 0 } }, @@ -1710,16 +1921,25 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"on\\", \\"isChecked\\": true, - \\"id\\": 39 + \\"id\\": 44 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"off\\", + \\"text\\": \\"radio-on\\", \\"isChecked\\": false, - \\"id\\": 44 + \\"id\\": 49 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"radio-off\\", + \\"isChecked\\": false, + \\"id\\": 54 } }, { @@ -1727,7 +1947,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 49 + \\"id\\": 59 } }, { @@ -1735,7 +1955,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 39 + \\"id\\": 44 } }, { @@ -1743,7 +1963,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 49 + \\"id\\": 59 } }, { @@ -1751,7 +1971,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 49 + \\"id\\": 59 } }, { @@ -1759,7 +1979,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 49, + \\"id\\": 59, \\"pointerType\\": 0 } }, @@ -1768,8 +1988,8 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 5, \\"text\\": \\"on\\", - \\"isChecked\\": true, - \\"id\\": 49 + \\"isChecked\\": false, + \\"id\\": 59 } }, { @@ -1777,7 +1997,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 49 + \\"id\\": 59 } }, { @@ -1785,7 +2005,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1794,7 +2014,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1803,7 +2023,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"**\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1812,7 +2032,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"***\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1821,7 +2041,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"****\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1830,7 +2050,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"*****\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1839,7 +2059,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"******\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1848,7 +2068,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"*******\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1857,7 +2077,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"********\\", \\"isChecked\\": false, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1865,7 +2085,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 71 + \\"id\\": 86 } }, { @@ -1873,7 +2093,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1882,7 +2102,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"t\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1891,7 +2111,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"te\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1900,7 +2120,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"tex\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1909,7 +2129,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"text\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1918,7 +2138,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"texta\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1927,7 +2147,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textar\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1936,7 +2156,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textare\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1945,7 +2165,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textarea\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1954,7 +2174,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textarea \\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1963,7 +2183,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textarea t\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1972,7 +2192,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textarea te\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1981,7 +2201,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textarea tes\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1990,7 +2210,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"textarea test\\", \\"isChecked\\": false, - \\"id\\": 54 + \\"id\\": 69 } }, { @@ -1999,7 +2219,7 @@ exports[`cross origin iframes form.html should map input events correctly 1`] = \\"source\\": 5, \\"text\\": \\"1\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } } ]" @@ -2307,9 +2527,8 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"#000000\\" }, \\"childNodes\\": [], \\"rootId\\": 11, @@ -2347,9 +2566,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"rootId\\": 11, @@ -2374,9 +2591,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -2388,7 +2603,9 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"rootId\\": 11, @@ -2410,6 +2627,124 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"rootId\\": 11, \\"id\\": 51 }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 53 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 54 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 55 + } + ], + \\"rootId\\": 11, + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 56 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 58 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 59 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 60 + } + ], + \\"rootId\\": 11, + \\"id\\": 57 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 61 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 63 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 64 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 65 + } + ], + \\"rootId\\": 11, + \\"id\\": 62 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 66 + }, { \\"type\\": 2, \\"tagName\\": \\"label\\", @@ -2421,7 +2756,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 53 + \\"id\\": 68 }, { \\"type\\": 2, @@ -2435,23 +2770,23 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = }, \\"childNodes\\": [], \\"rootId\\": 11, - \\"id\\": 54 + \\"id\\": 69 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 55 + \\"id\\": 70 } ], \\"rootId\\": 11, - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -2464,7 +2799,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -2479,7 +2814,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 60 + \\"id\\": 75 }, { \\"type\\": 2, @@ -2491,19 +2826,19 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", + \\"textContent\\": \\"Option A\\", \\"rootId\\": 11, - \\"id\\": 62 + \\"id\\": 77 } ], \\"rootId\\": 11, - \\"id\\": 61 + \\"id\\": 76 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 63 + \\"id\\": 78 }, { \\"type\\": 2, @@ -2514,39 +2849,39 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", + \\"textContent\\": \\"Option BB\\", \\"rootId\\": 11, - \\"id\\": 65 + \\"id\\": 80 } ], \\"rootId\\": 11, - \\"id\\": 64 + \\"id\\": 79 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 66 + \\"id\\": 81 } ], \\"rootId\\": 11, - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 67 + \\"id\\": 82 } ], \\"rootId\\": 11, - \\"id\\": 57 + \\"id\\": 72 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 68 + \\"id\\": 83 }, { \\"type\\": 2, @@ -2559,7 +2894,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 70 + \\"id\\": 85 }, { \\"type\\": 2, @@ -2569,23 +2904,119 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = }, \\"childNodes\\": [], \\"rootId\\": 11, - \\"id\\": 71 + \\"id\\": 86 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 87 + } + ], + \\"rootId\\": 11, + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 88 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 90 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 91 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 92 + } + ], + \\"rootId\\": 11, + \\"id\\": 89 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 93 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 95 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 96 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 72 + \\"id\\": 97 } ], \\"rootId\\": 11, - \\"id\\": 69 + \\"id\\": 94 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"rootId\\": 11, + \\"id\\": 98 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"rootId\\": 11, + \\"id\\": 99 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"rootId\\": 11, - \\"id\\": 73 + \\"id\\": 100 } ], \\"rootId\\": 11, @@ -2595,7 +3026,7 @@ exports[`cross origin iframes form.html should map scroll events correctly 1`] = \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n\\\\n\\", \\"rootId\\": 11, - \\"id\\": 74 + \\"id\\": 101 } ], \\"rootId\\": 11, diff --git a/packages/rrweb/test/replayer.test.ts b/packages/rrweb/test/replayer.test.ts index 7756710410..38214cab99 100644 --- a/packages/rrweb/test/replayer.test.ts +++ b/packages/rrweb/test/replayer.test.ts @@ -16,6 +16,7 @@ import inputEvents from './events/input'; import iframeEvents from './events/iframe'; import selectionEvents from './events/selection'; import shadowDomEvents from './events/shadow-dom'; +import shadowDomEventsSentry from './events/shadow-dom-sentry'; import StyleSheetTextMutation from './events/style-sheet-text-mutation'; import canvasInIframe from './events/canvas-in-iframe'; import adoptedStyleSheet from './events/adopted-style-sheet'; @@ -1076,4 +1077,18 @@ describe('replayer', function () { ), ).toBe(':hover'); }); + + it('should have `:defined` web components', async () => { + await page.evaluate(`events = ${JSON.stringify(shadowDomEventsSentry)}`); + const result = await page.evaluate(` + const { Replayer } = rrweb; + const replayer = new Replayer(events); + replayer.play(); + replayer.pause(1000); + replayer.iframe.contentDocument.querySelectorAll(':not(:defined)').length; + `); + await page.waitForTimeout(200); + + expect(result).toEqual(0); + }); }); diff --git a/packages/rrweb/test/utils.ts b/packages/rrweb/test/utils.ts index dd5a8cf7cc..0cbd82507e 100644 --- a/packages/rrweb/test/utils.ts +++ b/packages/rrweb/test/utils.ts @@ -588,6 +588,13 @@ export async function waitForRAF( } export function generateRecordSnippet(options: recordOptions) { + // XXX(sentry) + // maskInputSelector: ${JSON.stringify(options.maskInputSelector)}, + // onMutation: ${options.onMutation || undefined}, + // maskAllText: ${options.maskAllText}, + // unmaskTextSelector: ${JSON.stringify(options.unmaskTextSelector)}, + // unmaskInputSelector: ${JSON.stringify(options.unmaskInputSelector)}, + // unblockSelector: ${JSON.stringify(options.unblockSelector)}, return ` window.snapshots = []; rrweb.record({ @@ -595,11 +602,13 @@ export function generateRecordSnippet(options: recordOptions) { window.snapshots.push(event); }, maskTextSelector: ${JSON.stringify(options.maskTextSelector)}, + blockSelector: ${JSON.stringify(options.blockSelector)}, maskAllInputs: ${options.maskAllInputs}, maskInputOptions: ${JSON.stringify(options.maskAllInputs)}, userTriggeredOnInput: ${options.userTriggeredOnInput}, maskTextFn: ${options.maskTextFn}, maskInputFn: ${options.maskInputFn}, + blockSelector: ${JSON.stringify(options.blockSelector)}, recordCanvas: ${options.recordCanvas}, recordAfter: '${options.recordAfter || 'load'}', inlineImages: ${options.inlineImages}, From bfc4c1a352b6445ab19781a9cd38c555d40c7a71 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Fri, 7 Jul 2023 15:06:01 -0400 Subject: [PATCH 2/2] update snapshots --- .../__snapshots__/integration.test.ts.snap | 2377 ++++++++++++++--- 1 file changed, 1932 insertions(+), 445 deletions(-) diff --git a/packages/rrweb/test/__snapshots__/integration.test.ts.snap b/packages/rrweb/test/__snapshots__/integration.test.ts.snap index f244948b67..370a205b1b 100644 --- a/packages/rrweb/test/__snapshots__/integration.test.ts.snap +++ b/packages/rrweb/test/__snapshots__/integration.test.ts.snap @@ -974,7 +974,7 @@ exports[`record integration tests can record attribute mutation 1`] = ` ]" `; -exports[`record integration tests can record character data muatations 1`] = ` +exports[`record integration tests can record character data mutations 1`] = ` "[ { \\"type\\": 0, @@ -1796,9 +1796,8 @@ exports[`record integration tests can record form interactions 1`] = ` \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"#000000\\" }, \\"childNodes\\": [], \\"id\\": 27 @@ -1831,9 +1830,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"id\\": 32 @@ -1854,9 +1851,7 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -1867,7 +1862,9 @@ exports[`record integration tests can record form interactions 1`] = ` \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"id\\": 37 @@ -1885,6 +1882,109 @@ exports[`record integration tests can record form interactions 1`] = ` \\"textContent\\": \\"\\\\n \\", \\"id\\": 39 }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 41 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + } + ], + \\"id\\": 40 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 44 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 46 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 47 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + } + ], + \\"id\\": 45 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 49 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 53 + } + ], + \\"id\\": 50 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 54 + }, { \\"type\\": 2, \\"tagName\\": \\"label\\", @@ -1895,7 +1995,7 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 41 + \\"id\\": 56 }, { \\"type\\": 2, @@ -1908,20 +2008,20 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data-unmask-example\\": \\"true\\" }, \\"childNodes\\": [], - \\"id\\": 42 + \\"id\\": 57 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 43 + \\"id\\": 58 } ], - \\"id\\": 40 + \\"id\\": 55 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 44 + \\"id\\": 59 }, { \\"type\\": 2, @@ -1933,7 +2033,7 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 46 + \\"id\\": 61 }, { \\"type\\": 2, @@ -1947,7 +2047,7 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 48 + \\"id\\": 63 }, { \\"type\\": 2, @@ -1959,16 +2059,16 @@ exports[`record integration tests can record form interactions 1`] = ` \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", - \\"id\\": 50 + \\"textContent\\": \\"Option A\\", + \\"id\\": 65 } ], - \\"id\\": 49 + \\"id\\": 64 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 51 + \\"id\\": 66 }, { \\"type\\": 2, @@ -1979,32 +2079,32 @@ exports[`record integration tests can record form interactions 1`] = ` \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", - \\"id\\": 53 + \\"textContent\\": \\"Option BB\\", + \\"id\\": 68 } ], - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 54 + \\"id\\": 69 } ], - \\"id\\": 47 + \\"id\\": 62 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 55 + \\"id\\": 70 } ], - \\"id\\": 45 + \\"id\\": 60 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -2016,7 +2116,7 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -2025,20 +2125,104 @@ exports[`record integration tests can record form interactions 1`] = ` \\"type\\": \\"password\\" }, \\"childNodes\\": [], - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 60 + \\"id\\": 75 } ], - \\"id\\": 57 + \\"id\\": 72 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 76 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 78 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"id\\": 79 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 80 + } + ], + \\"id\\": 77 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 81 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 83 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 85 + } + ], + \\"id\\": 82 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 86 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"id\\": 87 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 61 + \\"id\\": 88 } ], \\"id\\": 18 @@ -2046,7 +2230,7 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\", - \\"id\\": 62 + \\"id\\": 89 }, { \\"type\\": 2, @@ -2056,15 +2240,15 @@ exports[`record integration tests can record form interactions 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 64 + \\"id\\": 91 } ], - \\"id\\": 63 + \\"id\\": 90 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", - \\"id\\": 65 + \\"id\\": 92 } ], \\"id\\": 16 @@ -2130,7 +2314,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -2146,7 +2330,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -2154,7 +2338,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -2162,7 +2346,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 27, + \\"id\\": 32, \\"pointerType\\": 0 } }, @@ -2172,16 +2356,25 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"on\\", \\"isChecked\\": true, - \\"id\\": 27 + \\"id\\": 32 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"off\\", + \\"text\\": \\"radio-on\\", \\"isChecked\\": false, - \\"id\\": 32 + \\"id\\": 37 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"radio-off\\", + \\"isChecked\\": false, + \\"id\\": 42 } }, { @@ -2189,7 +2382,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -2197,7 +2390,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -2205,7 +2398,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -2213,7 +2406,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -2221,7 +2414,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 37, + \\"id\\": 47, \\"pointerType\\": 0 } }, @@ -2230,8 +2423,8 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 5, \\"text\\": \\"on\\", - \\"isChecked\\": true, - \\"id\\": 37 + \\"isChecked\\": false, + \\"id\\": 47 } }, { @@ -2239,7 +2432,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -2247,7 +2440,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2256,7 +2449,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"t\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2265,7 +2458,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"te\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2274,7 +2467,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"tex\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2283,7 +2476,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"text\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2292,7 +2485,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"texta\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2301,7 +2494,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textar\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2310,7 +2503,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textare\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2319,7 +2512,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2328,7 +2521,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea \\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2337,7 +2530,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea t\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2346,7 +2539,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea te\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2355,7 +2548,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea tes\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2364,7 +2557,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea test\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -2373,7 +2566,7 @@ exports[`record integration tests can record form interactions 1`] = ` \\"source\\": 5, \\"text\\": \\"1\\", \\"isChecked\\": false, - \\"id\\": 47 + \\"id\\": 62 } } ]" @@ -3577,9 +3770,8 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"#000000\\" }, \\"childNodes\\": [], \\"id\\": 27 @@ -3612,9 +3804,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"id\\": 32 @@ -3635,9 +3825,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -3648,7 +3836,9 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"id\\": 37 @@ -3669,15 +3859,118 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"textarea\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", \\"id\\": 41 }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + } + ], + \\"id\\": 40 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 44 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 46 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 47 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + } + ], + \\"id\\": 45 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 49 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 53 + } + ], + \\"id\\": 50 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 54 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"textarea\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 56 + }, { \\"type\\": 2, \\"tagName\\": \\"textarea\\", @@ -3689,20 +3982,20 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data-unmask-example\\": \\"true\\" }, \\"childNodes\\": [], - \\"id\\": 42 + \\"id\\": 57 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 43 + \\"id\\": 58 } ], - \\"id\\": 40 + \\"id\\": 55 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 44 + \\"id\\": 59 }, { \\"type\\": 2, @@ -3714,7 +4007,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 46 + \\"id\\": 61 }, { \\"type\\": 2, @@ -3728,7 +4021,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 48 + \\"id\\": 63 }, { \\"type\\": 2, @@ -3740,16 +4033,16 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", - \\"id\\": 50 + \\"textContent\\": \\"Option A\\", + \\"id\\": 65 } ], - \\"id\\": 49 + \\"id\\": 64 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 51 + \\"id\\": 66 }, { \\"type\\": 2, @@ -3760,32 +4053,32 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", - \\"id\\": 53 + \\"textContent\\": \\"Option BB\\", + \\"id\\": 68 } ], - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 54 + \\"id\\": 69 } ], - \\"id\\": 47 + \\"id\\": 62 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 55 + \\"id\\": 70 } ], - \\"id\\": 45 + \\"id\\": 60 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -3797,7 +4090,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -3806,20 +4099,104 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"type\\": \\"password\\" }, \\"childNodes\\": [], - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 60 + \\"id\\": 75 } ], - \\"id\\": 57 + \\"id\\": 72 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 76 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 78 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"id\\": 79 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 80 + } + ], + \\"id\\": 77 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 81 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 83 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 85 + } + ], + \\"id\\": 82 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 86 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"id\\": 87 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 61 + \\"id\\": 88 } ], \\"id\\": 18 @@ -3827,7 +4204,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\", - \\"id\\": 62 + \\"id\\": 89 }, { \\"type\\": 2, @@ -3837,15 +4214,15 @@ exports[`record integration tests can use maskInputOptions to configure which ty { \\"type\\": 3, \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 64 + \\"id\\": 91 } ], - \\"id\\": 63 + \\"id\\": 90 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", - \\"id\\": 65 + \\"id\\": 92 } ], \\"id\\": 16 @@ -3910,16 +4287,32 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"type\\": 3, \\"data\\": { \\"source\\": 2, - \\"type\\": 1, + \\"type\\": 6, + \\"id\\": 22 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 2, + \\"type\\": 5, \\"id\\": 27 } }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 2, + \\"type\\": 1, + \\"id\\": 32 + } + }, { \\"type\\": 3, \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 22 + \\"id\\": 27 } }, { @@ -3927,7 +4320,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -3935,7 +4328,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -3943,7 +4336,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 27, + \\"id\\": 32, \\"pointerType\\": 0 } }, @@ -3953,16 +4346,25 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"on\\", \\"isChecked\\": true, - \\"id\\": 27 + \\"id\\": 32 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"off\\", + \\"text\\": \\"radio-on\\", \\"isChecked\\": false, - \\"id\\": 32 + \\"id\\": 37 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"radio-off\\", + \\"isChecked\\": false, + \\"id\\": 42 } }, { @@ -3970,7 +4372,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -3978,7 +4380,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -3986,7 +4388,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -3994,7 +4396,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -4002,7 +4404,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 37, + \\"id\\": 47, \\"pointerType\\": 0 } }, @@ -4011,8 +4413,8 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 5, \\"text\\": \\"on\\", - \\"isChecked\\": true, - \\"id\\": 37 + \\"isChecked\\": false, + \\"id\\": 47 } }, { @@ -4020,7 +4422,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -4028,7 +4430,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4037,7 +4439,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"t\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4046,7 +4448,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"te\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4055,7 +4457,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"tex\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4064,7 +4466,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"text\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4073,7 +4475,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"texta\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4082,7 +4484,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textar\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4091,7 +4493,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textare\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4100,7 +4502,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textarea\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4109,7 +4511,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textarea \\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4118,7 +4520,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textarea t\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4127,7 +4529,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textarea te\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4136,7 +4538,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textarea tes\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4145,7 +4547,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"textarea test\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4153,7 +4555,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -4161,7 +4563,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4170,7 +4572,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4179,7 +4581,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"**\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4188,7 +4590,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"***\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4197,7 +4599,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"****\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4206,7 +4608,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"*****\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4215,7 +4617,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"******\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4224,7 +4626,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"*******\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4233,7 +4635,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"********\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -4242,7 +4644,7 @@ exports[`record integration tests can use maskInputOptions to configure which ty \\"source\\": 5, \\"text\\": \\"1\\", \\"isChecked\\": false, - \\"id\\": 47 + \\"id\\": 62 } } ]" @@ -5578,9 +5980,8 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"*******\\" }, \\"childNodes\\": [], \\"id\\": 27 @@ -5613,9 +6014,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"id\\": 32 @@ -5636,9 +6035,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -5649,7 +6046,9 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"id\\": 37 @@ -5667,6 +6066,109 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"textContent\\": \\"\\\\n \\", \\"id\\": 39 }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 41 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + } + ], + \\"id\\": 40 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 44 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 46 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 47 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + } + ], + \\"id\\": 45 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 49 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 53 + } + ], + \\"id\\": 50 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 54 + }, { \\"type\\": 2, \\"tagName\\": \\"label\\", @@ -5677,7 +6179,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 41 + \\"id\\": 56 }, { \\"type\\": 2, @@ -5690,20 +6192,20 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data-unmask-example\\": \\"true\\" }, \\"childNodes\\": [], - \\"id\\": 42 + \\"id\\": 57 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 43 + \\"id\\": 58 } ], - \\"id\\": 40 + \\"id\\": 55 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 44 + \\"id\\": 59 }, { \\"type\\": 2, @@ -5715,7 +6217,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 46 + \\"id\\": 61 }, { \\"type\\": 2, @@ -5729,7 +6231,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 48 + \\"id\\": 63 }, { \\"type\\": 2, @@ -5740,16 +6242,16 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", - \\"id\\": 50 + \\"textContent\\": \\"Option A\\", + \\"id\\": 65 } ], - \\"id\\": 49 + \\"id\\": 64 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 51 + \\"id\\": 66 }, { \\"type\\": 2, @@ -5760,32 +6262,32 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", - \\"id\\": 53 + \\"textContent\\": \\"Option BB\\", + \\"id\\": 68 } ], - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 54 + \\"id\\": 69 } ], - \\"id\\": 47 + \\"id\\": 62 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 55 + \\"id\\": 70 } ], - \\"id\\": 45 + \\"id\\": 60 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -5797,7 +6299,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -5806,20 +6308,104 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"type\\": \\"password\\" }, \\"childNodes\\": [], - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 60 + \\"id\\": 75 } ], - \\"id\\": 57 + \\"id\\": 72 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 76 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 78 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"id\\": 79 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 80 + } + ], + \\"id\\": 77 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 81 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 83 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 85 + } + ], + \\"id\\": 82 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 86 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"id\\": 87 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 61 + \\"id\\": 88 } ], \\"id\\": 18 @@ -5827,7 +6413,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\", - \\"id\\": 62 + \\"id\\": 89 }, { \\"type\\": 2, @@ -5837,15 +6423,15 @@ exports[`record integration tests should mask inputs via function call 1`] = ` { \\"type\\": 3, \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 64 + \\"id\\": 91 } ], - \\"id\\": 63 + \\"id\\": 90 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", - \\"id\\": 65 + \\"id\\": 92 } ], \\"id\\": 16 @@ -5911,7 +6497,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -5927,7 +6513,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -5935,7 +6521,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -5943,7 +6529,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 27, + \\"id\\": 32, \\"pointerType\\": 0 } }, @@ -5953,16 +6539,25 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"on\\", \\"isChecked\\": true, - \\"id\\": 27 + \\"id\\": 32 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"off\\", + \\"text\\": \\"radio-on\\", \\"isChecked\\": false, - \\"id\\": 32 + \\"id\\": 37 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"radio-off\\", + \\"isChecked\\": false, + \\"id\\": 42 } }, { @@ -5970,7 +6565,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -5978,7 +6573,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -5986,7 +6581,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -5994,7 +6589,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -6002,7 +6597,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 37, + \\"id\\": 47, \\"pointerType\\": 0 } }, @@ -6011,8 +6606,8 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 5, \\"text\\": \\"on\\", - \\"isChecked\\": true, - \\"id\\": 37 + \\"isChecked\\": false, + \\"id\\": 47 } }, { @@ -6020,7 +6615,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -6028,7 +6623,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6037,7 +6632,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6046,7 +6641,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"**\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6055,7 +6650,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"***\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6064,7 +6659,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"****\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6073,7 +6668,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"*****\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6082,7 +6677,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"******\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6091,7 +6686,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"*******\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6100,7 +6695,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"********\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6108,7 +6703,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -6116,7 +6711,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6125,7 +6720,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"t\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6134,7 +6729,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"te\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6143,7 +6738,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"tex\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6152,7 +6747,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"text\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6161,7 +6756,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"texta\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6170,7 +6765,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textar\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6179,7 +6774,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textare\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6188,7 +6783,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6197,7 +6792,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea \\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6206,7 +6801,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea t\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6215,7 +6810,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea te\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6224,7 +6819,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea tes\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6233,7 +6828,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"textarea test\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -6242,7 +6837,7 @@ exports[`record integration tests should mask inputs via function call 1`] = ` \\"source\\": 5, \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 47 + \\"id\\": 62 } } ]" @@ -6934,17 +7529,17 @@ exports[`record integration tests should mask texts 1`] = ` }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\", + \\"textContent\\": \\"\\\\n \\", \\"id\\": 35 }, { \\"type\\": 2, - \\"tagName\\": \\"script\\", + \\"tagName\\": \\"div\\", \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", + \\"textContent\\": \\"\\\\n mask4\\\\n \\", \\"id\\": 37 } ], @@ -6952,20 +7547,127 @@ exports[`record integration tests should mask texts 1`] = ` }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", + \\"textContent\\": \\"\\\\n \\", \\"id\\": 38 - } - ], - \\"id\\": 16 - } - ], - \\"id\\": 3 - } - ], - \\"id\\": 1 - }, - \\"initialOffset\\": { - \\"left\\": 0, + }, + { + \\"type\\": 2, + \\"tagName\\": \\"div\\", + \\"attributes\\": { + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n mask5\\\\n \\", + \\"id\\": 40 + } + ], + \\"id\\": 39 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 41 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"placeholder\\": \\"mask6\\" + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"div\\", + \\"attributes\\": { + \\"title\\": \\"mask7\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 45 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"button\\", + \\"attributes\\": { + \\"aria-label\\": \\"mask8\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"mask9\\", + \\"id\\": 47 + } + ], + \\"id\\": 46 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"textarea\\", + \\"attributes\\": { + \\"value\\": \\"mask10\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"mask10\\", + \\"id\\": 50 + } + ], + \\"id\\": 49 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"script\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", + \\"id\\": 53 + } + ], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", + \\"id\\": 54 + } + ], + \\"id\\": 44 + } + ], + \\"id\\": 16 + } + ], + \\"id\\": 3 + } + ], + \\"id\\": 1 + }, + \\"initialOffset\\": { + \\"left\\": 0, \\"top\\": 0 } } @@ -7212,17 +7914,17 @@ exports[`record integration tests should mask texts using maskTextFn 1`] = ` }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\", + \\"textContent\\": \\"\\\\n \\", \\"id\\": 35 }, { \\"type\\": 2, - \\"tagName\\": \\"script\\", + \\"tagName\\": \\"div\\", \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", + \\"textContent\\": \\"\\\\n mask4\\\\n \\", \\"id\\": 37 } ], @@ -7230,8 +7932,115 @@ exports[`record integration tests should mask texts using maskTextFn 1`] = ` }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", + \\"textContent\\": \\"\\\\n \\", \\"id\\": 38 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"div\\", + \\"attributes\\": { + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n mask5\\\\n \\", + \\"id\\": 40 + } + ], + \\"id\\": 39 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 41 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"placeholder\\": \\"mask6\\" + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"div\\", + \\"attributes\\": { + \\"title\\": \\"mask7\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 45 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"button\\", + \\"attributes\\": { + \\"aria-label\\": \\"mask8\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"mask9\\", + \\"id\\": 47 + } + ], + \\"id\\": 46 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"textarea\\", + \\"attributes\\": { + \\"value\\": \\"mask10\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"mask10\\", + \\"id\\": 50 + } + ], + \\"id\\": 49 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"script\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", + \\"id\\": 53 + } + ], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", + \\"id\\": 54 + } + ], + \\"id\\": 44 } ], \\"id\\": 16 @@ -8151,47 +8960,162 @@ exports[`record integration tests should not record blocked elements and its chi }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\", + \\"textContent\\": \\"\\\\n\\\\n \\", \\"id\\": 19 }, { \\"type\\": 2, - \\"tagName\\": \\"script\\", - \\"attributes\\": {}, - \\"childNodes\\": [ - { - \\"type\\": 3, - \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 21 - } - ], + \\"tagName\\": \\"img\\", + \\"attributes\\": { + \\"class\\": \\"rr-block\\", + \\"rr_width\\": \\"16px\\", + \\"rr_height\\": \\"16px\\" + }, + \\"childNodes\\": [], \\"id\\": 20 }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 21 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"img\\", + \\"attributes\\": { + \\"href\\": \\"about:blank#href\\" + }, + \\"childNodes\\": [], \\"id\\": 22 - } - ], - \\"id\\": 16 - } - ], - \\"id\\": 3 - } - ], - \\"id\\": 1 - }, - \\"initialOffset\\": { - \\"left\\": 0, - \\"top\\": 0 - } - } - } -]" -`; - -exports[`record integration tests should not record blocked elements dynamically added 1`] = ` -"[ + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 23 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"img\\", + \\"attributes\\": { + \\"class\\": \\"rr-unblock\\", + \\"src\\": \\"about:blank#href\\" + }, + \\"childNodes\\": [], + \\"id\\": 24 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n\\\\n \\", + \\"id\\": 25 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"svg\\", + \\"attributes\\": { + \\"class\\": \\"rr-block\\", + \\"rr_width\\": \\"1904px\\", + \\"rr_height\\": \\"1904px\\" + }, + \\"childNodes\\": [], + \\"isSVG\\": true, + \\"id\\": 26 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 27 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"svg\\", + \\"attributes\\": { + \\"viewBox\\": \\"0 0 80 80\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 2, + \\"tagName\\": \\"path\\", + \\"attributes\\": { + \\"d\\": \\"M79 71.91a7.32 7.32 0 0 0 0-7.38L46.4 8A7.22 7.22 0 0 0 40 4.37 7.33 7.33 0 0 0 33.62 8L23.06 26.33l2.66 1.54A51.42 51.42 0 0 1 44.6 46.75a50.41 50.41 0 0 1 6.81 22.72H44a44.34 44.34 0 0 0-5.84-19A43.76 43.76 0 0 0 22.07 34.2l-2.66-1.54-9.83 17.13 2.65 1.54A24.9 24.9 0 0 1 24.3 69.47H7.39a1.2 1.2 0 0 1-1.06-.59 1.21 1.21 0 0 1 0-1.23l4.73-8.14a17.67 17.67 0 0 0-5.38-3.08L1 64.57A7.34 7.34 0 0 0 1 72a7.25 7.25 0 0 0 6.39 3.67h23.24v-3.12a31.32 31.32 0 0 0-4.09-15.38 31.26 31.26 0 0 0-8.67-9.57l3.71-6.39a38 38 0 0 1 11.33 12.28 38.1 38.1 0 0 1 5.1 19v3.08h19.68v-3.02a57.52 57.52 0 0 0-7.76-28.88A57.48 57.48 0 0 0 31.47 24.1l7.51-13a1.18 1.18 0 0 1 1.02-.57 1.16 1.16 0 0 1 1.05.59L73.7 67.61a1.2 1.2 0 0 1 0 1.22 1.13 1.13 0 0 1-1.06.59H65c.1 2.07.1 4.09 0 6.16h7.65A7.1 7.1 0 0 0 79 71.91z\\" + }, + \\"childNodes\\": [], + \\"isSVG\\": true, + \\"id\\": 29 + } + ], + \\"isSVG\\": true, + \\"id\\": 28 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 30 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"svg\\", + \\"attributes\\": { + \\"class\\": \\"rr-unblock\\", + \\"viewBox\\": \\"0 0 80 80\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 2, + \\"tagName\\": \\"path\\", + \\"attributes\\": { + \\"d\\": \\"M79 71.91a7.32 7.32 0 0 0 0-7.38L46.4 8A7.22 7.22 0 0 0 40 4.37 7.33 7.33 0 0 0 33.62 8L23.06 26.33l2.66 1.54A51.42 51.42 0 0 1 44.6 46.75a50.41 50.41 0 0 1 6.81 22.72H44a44.34 44.34 0 0 0-5.84-19A43.76 43.76 0 0 0 22.07 34.2l-2.66-1.54-9.83 17.13 2.65 1.54A24.9 24.9 0 0 1 24.3 69.47H7.39a1.2 1.2 0 0 1-1.06-.59 1.21 1.21 0 0 1 0-1.23l4.73-8.14a17.67 17.67 0 0 0-5.38-3.08L1 64.57A7.34 7.34 0 0 0 1 72a7.25 7.25 0 0 0 6.39 3.67h23.24v-3.12a31.32 31.32 0 0 0-4.09-15.38 31.26 31.26 0 0 0-8.67-9.57l3.71-6.39a38 38 0 0 1 11.33 12.28 38.1 38.1 0 0 1 5.1 19v3.08h19.68v-3.02a57.52 57.52 0 0 0-7.76-28.88A57.48 57.48 0 0 0 31.47 24.1l7.51-13a1.18 1.18 0 0 1 1.02-.57 1.16 1.16 0 0 1 1.05.59L73.7 67.61a1.2 1.2 0 0 1 0 1.22 1.13 1.13 0 0 1-1.06.59H65c.1 2.07.1 4.09 0 6.16h7.65A7.1 7.1 0 0 0 79 71.91z\\" + }, + \\"childNodes\\": [], + \\"isSVG\\": true, + \\"id\\": 32 + } + ], + \\"isSVG\\": true, + \\"id\\": 31 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\", + \\"id\\": 33 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"script\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", + \\"id\\": 35 + } + ], + \\"id\\": 34 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", + \\"id\\": 36 + } + ], + \\"id\\": 16 + } + ], + \\"id\\": 3 + } + ], + \\"id\\": 1 + }, + \\"initialOffset\\": { + \\"left\\": 0, + \\"top\\": 0 + } + } + } +]" +`; + +exports[`record integration tests should not record blocked elements dynamically added 1`] = ` +"[ { \\"type\\": 0, \\"data\\": {} @@ -8331,9 +9255,124 @@ exports[`record integration tests should not record blocked elements dynamically }, { \\"type\\": 3, - \\"textContent\\": \\"\\\\n \\\\n \\", + \\"textContent\\": \\"\\\\n\\\\n \\", \\"id\\": 19 }, + { + \\"type\\": 2, + \\"tagName\\": \\"img\\", + \\"attributes\\": { + \\"class\\": \\"rr-block\\", + \\"rr_width\\": \\"16px\\", + \\"rr_height\\": \\"16px\\" + }, + \\"childNodes\\": [], + \\"id\\": 20 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 21 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"img\\", + \\"attributes\\": { + \\"href\\": \\"about:blank#href\\" + }, + \\"childNodes\\": [], + \\"id\\": 22 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 23 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"img\\", + \\"attributes\\": { + \\"class\\": \\"rr-unblock\\", + \\"src\\": \\"about:blank#href\\" + }, + \\"childNodes\\": [], + \\"id\\": 24 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n\\\\n \\", + \\"id\\": 25 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"svg\\", + \\"attributes\\": { + \\"class\\": \\"rr-block\\", + \\"rr_width\\": \\"1904px\\", + \\"rr_height\\": \\"1904px\\" + }, + \\"childNodes\\": [], + \\"isSVG\\": true, + \\"id\\": 26 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 27 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"svg\\", + \\"attributes\\": { + \\"viewBox\\": \\"0 0 80 80\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 2, + \\"tagName\\": \\"path\\", + \\"attributes\\": { + \\"d\\": \\"M79 71.91a7.32 7.32 0 0 0 0-7.38L46.4 8A7.22 7.22 0 0 0 40 4.37 7.33 7.33 0 0 0 33.62 8L23.06 26.33l2.66 1.54A51.42 51.42 0 0 1 44.6 46.75a50.41 50.41 0 0 1 6.81 22.72H44a44.34 44.34 0 0 0-5.84-19A43.76 43.76 0 0 0 22.07 34.2l-2.66-1.54-9.83 17.13 2.65 1.54A24.9 24.9 0 0 1 24.3 69.47H7.39a1.2 1.2 0 0 1-1.06-.59 1.21 1.21 0 0 1 0-1.23l4.73-8.14a17.67 17.67 0 0 0-5.38-3.08L1 64.57A7.34 7.34 0 0 0 1 72a7.25 7.25 0 0 0 6.39 3.67h23.24v-3.12a31.32 31.32 0 0 0-4.09-15.38 31.26 31.26 0 0 0-8.67-9.57l3.71-6.39a38 38 0 0 1 11.33 12.28 38.1 38.1 0 0 1 5.1 19v3.08h19.68v-3.02a57.52 57.52 0 0 0-7.76-28.88A57.48 57.48 0 0 0 31.47 24.1l7.51-13a1.18 1.18 0 0 1 1.02-.57 1.16 1.16 0 0 1 1.05.59L73.7 67.61a1.2 1.2 0 0 1 0 1.22 1.13 1.13 0 0 1-1.06.59H65c.1 2.07.1 4.09 0 6.16h7.65A7.1 7.1 0 0 0 79 71.91z\\" + }, + \\"childNodes\\": [], + \\"isSVG\\": true, + \\"id\\": 29 + } + ], + \\"isSVG\\": true, + \\"id\\": 28 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 30 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"svg\\", + \\"attributes\\": { + \\"class\\": \\"rr-unblock\\", + \\"viewBox\\": \\"0 0 80 80\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 2, + \\"tagName\\": \\"path\\", + \\"attributes\\": { + \\"d\\": \\"M79 71.91a7.32 7.32 0 0 0 0-7.38L46.4 8A7.22 7.22 0 0 0 40 4.37 7.33 7.33 0 0 0 33.62 8L23.06 26.33l2.66 1.54A51.42 51.42 0 0 1 44.6 46.75a50.41 50.41 0 0 1 6.81 22.72H44a44.34 44.34 0 0 0-5.84-19A43.76 43.76 0 0 0 22.07 34.2l-2.66-1.54-9.83 17.13 2.65 1.54A24.9 24.9 0 0 1 24.3 69.47H7.39a1.2 1.2 0 0 1-1.06-.59 1.21 1.21 0 0 1 0-1.23l4.73-8.14a17.67 17.67 0 0 0-5.38-3.08L1 64.57A7.34 7.34 0 0 0 1 72a7.25 7.25 0 0 0 6.39 3.67h23.24v-3.12a31.32 31.32 0 0 0-4.09-15.38 31.26 31.26 0 0 0-8.67-9.57l3.71-6.39a38 38 0 0 1 11.33 12.28 38.1 38.1 0 0 1 5.1 19v3.08h19.68v-3.02a57.52 57.52 0 0 0-7.76-28.88A57.48 57.48 0 0 0 31.47 24.1l7.51-13a1.18 1.18 0 0 1 1.02-.57 1.16 1.16 0 0 1 1.05.59L73.7 67.61a1.2 1.2 0 0 1 0 1.22 1.13 1.13 0 0 1-1.06.59H65c.1 2.07.1 4.09 0 6.16h7.65A7.1 7.1 0 0 0 79 71.91z\\" + }, + \\"childNodes\\": [], + \\"isSVG\\": true, + \\"id\\": 32 + } + ], + \\"isSVG\\": true, + \\"id\\": 31 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\\\n \\", + \\"id\\": 33 + }, { \\"type\\": 2, \\"tagName\\": \\"script\\", @@ -8342,15 +9381,15 @@ exports[`record integration tests should not record blocked elements dynamically { \\"type\\": 3, \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 21 + \\"id\\": 35 } ], - \\"id\\": 20 + \\"id\\": 34 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", - \\"id\\": 22 + \\"id\\": 36 } ], \\"id\\": 16 @@ -8387,7 +9426,7 @@ exports[`record integration tests should not record blocked elements dynamically \\"rr_height\\": \\"100px\\" }, \\"childNodes\\": [], - \\"id\\": 23 + \\"id\\": 37 } } ] @@ -8832,6 +9871,15 @@ exports[`record integration tests should not record input values if dynamically \\"id\\": 21 } }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 3, + \\"id\\": 21, + \\"x\\": 7, + \\"y\\": 0 + } + }, { \\"type\\": 3, \\"data\\": { @@ -9039,9 +10087,8 @@ exports[`record integration tests should not record input values if maskAllInput \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"*******\\" }, \\"childNodes\\": [], \\"id\\": 27 @@ -9074,9 +10121,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"id\\": 32 @@ -9097,9 +10142,7 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -9110,7 +10153,9 @@ exports[`record integration tests should not record input values if maskAllInput \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"id\\": 37 @@ -9128,6 +10173,109 @@ exports[`record integration tests should not record input values if maskAllInput \\"textContent\\": \\"\\\\n \\", \\"id\\": 39 }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 41 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + } + ], + \\"id\\": 40 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 44 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 46 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 47 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + } + ], + \\"id\\": 45 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 49 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 53 + } + ], + \\"id\\": 50 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 54 + }, { \\"type\\": 2, \\"tagName\\": \\"label\\", @@ -9138,7 +10286,7 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 41 + \\"id\\": 56 }, { \\"type\\": 2, @@ -9151,20 +10299,20 @@ exports[`record integration tests should not record input values if maskAllInput \\"data-unmask-example\\": \\"true\\" }, \\"childNodes\\": [], - \\"id\\": 42 + \\"id\\": 57 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 43 + \\"id\\": 58 } ], - \\"id\\": 40 + \\"id\\": 55 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 44 + \\"id\\": 59 }, { \\"type\\": 2, @@ -9176,7 +10324,7 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 46 + \\"id\\": 61 }, { \\"type\\": 2, @@ -9190,7 +10338,7 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 48 + \\"id\\": 63 }, { \\"type\\": 2, @@ -9201,16 +10349,16 @@ exports[`record integration tests should not record input values if maskAllInput \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", - \\"id\\": 50 + \\"textContent\\": \\"Option A\\", + \\"id\\": 65 } ], - \\"id\\": 49 + \\"id\\": 64 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 51 + \\"id\\": 66 }, { \\"type\\": 2, @@ -9221,32 +10369,32 @@ exports[`record integration tests should not record input values if maskAllInput \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", - \\"id\\": 53 + \\"textContent\\": \\"Option BB\\", + \\"id\\": 68 } ], - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 54 + \\"id\\": 69 } ], - \\"id\\": 47 + \\"id\\": 62 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 55 + \\"id\\": 70 } ], - \\"id\\": 45 + \\"id\\": 60 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -9258,7 +10406,7 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -9267,20 +10415,104 @@ exports[`record integration tests should not record input values if maskAllInput \\"type\\": \\"password\\" }, \\"childNodes\\": [], - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 60 + \\"id\\": 75 } ], - \\"id\\": 57 + \\"id\\": 72 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 76 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 78 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"id\\": 79 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 80 + } + ], + \\"id\\": 77 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 81 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 83 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 85 + } + ], + \\"id\\": 82 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 86 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"id\\": 87 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 61 + \\"id\\": 88 } ], \\"id\\": 18 @@ -9288,7 +10520,7 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\", - \\"id\\": 62 + \\"id\\": 89 }, { \\"type\\": 2, @@ -9298,15 +10530,15 @@ exports[`record integration tests should not record input values if maskAllInput { \\"type\\": 3, \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 64 + \\"id\\": 91 } ], - \\"id\\": 63 + \\"id\\": 90 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", - \\"id\\": 65 + \\"id\\": 92 } ], \\"id\\": 16 @@ -9372,7 +10604,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -9388,7 +10620,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -9396,7 +10628,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -9404,7 +10636,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 27, + \\"id\\": 32, \\"pointerType\\": 0 } }, @@ -9414,16 +10646,25 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"on\\", \\"isChecked\\": true, - \\"id\\": 27 + \\"id\\": 32 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"off\\", + \\"text\\": \\"radio-on\\", \\"isChecked\\": false, - \\"id\\": 32 + \\"id\\": 37 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"radio-off\\", + \\"isChecked\\": false, + \\"id\\": 42 } }, { @@ -9431,7 +10672,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -9439,7 +10680,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -9447,7 +10688,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -9455,7 +10696,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -9463,7 +10704,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 37, + \\"id\\": 47, \\"pointerType\\": 0 } }, @@ -9472,8 +10713,8 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 5, \\"text\\": \\"on\\", - \\"isChecked\\": true, - \\"id\\": 37 + \\"isChecked\\": false, + \\"id\\": 47 } }, { @@ -9481,7 +10722,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -9489,7 +10730,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9498,7 +10739,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9507,7 +10748,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"**\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9516,7 +10757,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"***\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9525,7 +10766,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"****\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9534,7 +10775,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*****\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9543,7 +10784,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"******\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9552,7 +10793,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*******\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9561,7 +10802,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"********\\", \\"isChecked\\": false, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9569,7 +10810,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -9577,7 +10818,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9586,7 +10827,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9595,7 +10836,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"**\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9604,7 +10845,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"***\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9613,7 +10854,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"****\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9622,7 +10863,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*****\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9631,7 +10872,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"******\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9640,7 +10881,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*******\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9649,7 +10890,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"********\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9658,7 +10899,7 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"*********\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -9667,43 +10908,95 @@ exports[`record integration tests should not record input values if maskAllInput \\"source\\": 5, \\"text\\": \\"**********\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 57 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"***********\\", + \\"isChecked\\": false, + \\"id\\": 57 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"************\\", + \\"isChecked\\": false, + \\"id\\": 57 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"*************\\", + \\"isChecked\\": false, + \\"id\\": 57 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"*\\", + \\"isChecked\\": false, + \\"id\\": 62 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 2, + \\"type\\": 6, + \\"id\\": 57 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 2, + \\"type\\": 5, + \\"id\\": 79 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"***********\\", + \\"text\\": \\"*\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 79 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"************\\", + \\"text\\": \\"**\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 79 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"*************\\", + \\"text\\": \\"***\\", \\"isChecked\\": false, - \\"id\\": 42 + \\"id\\": 79 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"*\\", + \\"text\\": \\"****\\", \\"isChecked\\": false, - \\"id\\": 47 + \\"id\\": 79 } } ]" @@ -12747,9 +14040,8 @@ exports[`record integration tests should record input userTriggered values if us \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"on\\" + \\"type\\": \\"color\\", + \\"value\\": \\"#000000\\" }, \\"childNodes\\": [], \\"id\\": 27 @@ -12782,9 +14074,7 @@ exports[`record integration tests should record input userTriggered values if us \\"tagName\\": \\"input\\", \\"attributes\\": { \\"type\\": \\"radio\\", - \\"name\\": \\"toggle\\", - \\"value\\": \\"off\\", - \\"checked\\": true + \\"name\\": \\"toggle\\" }, \\"childNodes\\": [], \\"id\\": 32 @@ -12805,9 +14095,7 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 2, \\"tagName\\": \\"label\\", - \\"attributes\\": { - \\"for\\": \\"checkbox\\" - }, + \\"attributes\\": {}, \\"childNodes\\": [ { \\"type\\": 3, @@ -12818,7 +14106,9 @@ exports[`record integration tests should record input userTriggered values if us \\"type\\": 2, \\"tagName\\": \\"input\\", \\"attributes\\": { - \\"type\\": \\"checkbox\\" + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-on\\" }, \\"childNodes\\": [], \\"id\\": 37 @@ -12836,6 +14126,109 @@ exports[`record integration tests should record input userTriggered values if us \\"textContent\\": \\"\\\\n \\", \\"id\\": 39 }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 41 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"radio\\", + \\"name\\": \\"toggle\\", + \\"value\\": \\"radio-off\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 42 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 43 + } + ], + \\"id\\": 40 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 44 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"checkbox\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 46 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"checked\\": true + }, + \\"childNodes\\": [], + \\"id\\": 47 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 48 + } + ], + \\"id\\": 45 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 49 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": {}, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 51 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"checkbox\\", + \\"value\\": \\"check-val\\" + }, + \\"childNodes\\": [], + \\"id\\": 52 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 53 + } + ], + \\"id\\": 50 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 54 + }, { \\"type\\": 2, \\"tagName\\": \\"label\\", @@ -12846,7 +14239,7 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 41 + \\"id\\": 56 }, { \\"type\\": 2, @@ -12859,20 +14252,20 @@ exports[`record integration tests should record input userTriggered values if us \\"data-unmask-example\\": \\"true\\" }, \\"childNodes\\": [], - \\"id\\": 42 + \\"id\\": 57 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 43 + \\"id\\": 58 } ], - \\"id\\": 40 + \\"id\\": 55 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 44 + \\"id\\": 59 }, { \\"type\\": 2, @@ -12884,7 +14277,7 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 46 + \\"id\\": 61 }, { \\"type\\": 2, @@ -12898,7 +14291,7 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 48 + \\"id\\": 63 }, { \\"type\\": 2, @@ -12910,16 +14303,16 @@ exports[`record integration tests should record input userTriggered values if us \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"1\\", - \\"id\\": 50 + \\"textContent\\": \\"Option A\\", + \\"id\\": 65 } ], - \\"id\\": 49 + \\"id\\": 64 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 51 + \\"id\\": 66 }, { \\"type\\": 2, @@ -12930,32 +14323,32 @@ exports[`record integration tests should record input userTriggered values if us \\"childNodes\\": [ { \\"type\\": 3, - \\"textContent\\": \\"2\\", - \\"id\\": 53 + \\"textContent\\": \\"Option BB\\", + \\"id\\": 68 } ], - \\"id\\": 52 + \\"id\\": 67 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 54 + \\"id\\": 69 } ], - \\"id\\": 47 + \\"id\\": 62 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 55 + \\"id\\": 70 } ], - \\"id\\": 45 + \\"id\\": 60 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 56 + \\"id\\": 71 }, { \\"type\\": 2, @@ -12967,7 +14360,7 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 58 + \\"id\\": 73 }, { \\"type\\": 2, @@ -12976,20 +14369,104 @@ exports[`record integration tests should record input userTriggered values if us \\"type\\": \\"password\\" }, \\"childNodes\\": [], - \\"id\\": 59 + \\"id\\": 74 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 60 + \\"id\\": 75 } ], - \\"id\\": 57 + \\"id\\": 72 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 76 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"empty\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 78 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"id\\": \\"empty\\" + }, + \\"childNodes\\": [], + \\"id\\": 79 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 80 + } + ], + \\"id\\": 77 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 81 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"label\\", + \\"attributes\\": { + \\"for\\": \\"unmask\\" + }, + \\"childNodes\\": [ + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 83 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"text\\", + \\"class\\": \\"rr-unmask\\" + }, + \\"childNodes\\": [], + \\"id\\": 84 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 85 + } + ], + \\"id\\": 82 + }, + { + \\"type\\": 3, + \\"textContent\\": \\"\\\\n \\", + \\"id\\": 86 + }, + { + \\"type\\": 2, + \\"tagName\\": \\"input\\", + \\"attributes\\": { + \\"type\\": \\"submit\\", + \\"value\\": \\"Submit form\\" + }, + \\"childNodes\\": [], + \\"id\\": 87 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\", - \\"id\\": 61 + \\"id\\": 88 } ], \\"id\\": 18 @@ -12997,7 +14474,7 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\", - \\"id\\": 62 + \\"id\\": 89 }, { \\"type\\": 2, @@ -13007,15 +14484,15 @@ exports[`record integration tests should record input userTriggered values if us { \\"type\\": 3, \\"textContent\\": \\"SCRIPT_PLACEHOLDER\\", - \\"id\\": 64 + \\"id\\": 91 } ], - \\"id\\": 63 + \\"id\\": 90 }, { \\"type\\": 3, \\"textContent\\": \\"\\\\n \\\\n \\\\n\\\\n\\", - \\"id\\": 65 + \\"id\\": 92 } ], \\"id\\": 16 @@ -13085,7 +14562,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -13101,7 +14578,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -13109,7 +14586,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -13117,7 +14594,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 27, + \\"id\\": 32, \\"pointerType\\": 0 } }, @@ -13128,17 +14605,27 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"on\\", \\"isChecked\\": true, \\"userTriggered\\": true, - \\"id\\": 27 + \\"id\\": 32 } }, { \\"type\\": 3, \\"data\\": { \\"source\\": 5, - \\"text\\": \\"off\\", + \\"text\\": \\"radio-on\\", \\"isChecked\\": false, \\"userTriggered\\": false, - \\"id\\": 32 + \\"id\\": 37 + } + }, + { + \\"type\\": 3, + \\"data\\": { + \\"source\\": 5, + \\"text\\": \\"radio-off\\", + \\"isChecked\\": false, + \\"userTriggered\\": false, + \\"id\\": 42 } }, { @@ -13146,7 +14633,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 1, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -13154,7 +14641,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 27 + \\"id\\": 32 } }, { @@ -13162,7 +14649,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -13170,7 +14657,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 0, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -13178,7 +14665,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 2, - \\"id\\": 37, + \\"id\\": 47, \\"pointerType\\": 0 } }, @@ -13187,9 +14674,9 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 5, \\"text\\": \\"on\\", - \\"isChecked\\": true, + \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -13197,7 +14684,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 37 + \\"id\\": 47 } }, { @@ -13205,7 +14692,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13215,7 +14702,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"*\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13225,7 +14712,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"**\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13235,7 +14722,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"***\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13245,7 +14732,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"****\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13255,7 +14742,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"*****\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13265,7 +14752,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"******\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13275,7 +14762,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"*******\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13285,7 +14772,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"********\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13293,7 +14780,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 6, - \\"id\\": 59 + \\"id\\": 74 } }, { @@ -13301,7 +14788,7 @@ exports[`record integration tests should record input userTriggered values if us \\"data\\": { \\"source\\": 2, \\"type\\": 5, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13311,7 +14798,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"t\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13321,7 +14808,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"te\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13331,7 +14818,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"tex\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13341,7 +14828,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"text\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13351,7 +14838,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"texta\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13361,7 +14848,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textar\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13371,7 +14858,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textare\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13381,7 +14868,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textarea\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13391,7 +14878,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textarea \\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13401,7 +14888,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textarea t\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13411,7 +14898,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textarea te\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13421,7 +14908,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textarea tes\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13431,7 +14918,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"textarea test\\", \\"isChecked\\": false, \\"userTriggered\\": true, - \\"id\\": 42 + \\"id\\": 57 } }, { @@ -13441,7 +14928,7 @@ exports[`record integration tests should record input userTriggered values if us \\"text\\": \\"1\\", \\"isChecked\\": false, \\"userTriggered\\": false, - \\"id\\": 47 + \\"id\\": 62 } } ]"