Files
rrweb/packages/rrweb/test/html/blocked-unblocked.html
Justin Halsall 2a80949948 Cross origin iframe support (#1035)
* Add `recordCrossOriginIframe` setting

* Set up messaging between iframes

* should emit full snapshot event from iframe as mutation event

* this.mirror was dropped on attachIframe

* should use unique id for child of iframe

* Cross origin iframe recording in `yarn live-stream`

* Root iframe check thats supported by firefox

* Live stream: Inject script in all frames

* Record same origin and cross origin iframes differently

* Should map Input events correctly

* Turn on other tests

* Fix compatibility with newer puppeteer

* puppeteer vs 12 seems stable without to many changes needed

* normalize port numbers in snapshots

* Handle scroll and ViewportResize events in cross origin iframe

* Correctly map cross origin mutations

* Map selection events for cross origin iframes

* Map canvas mutations for cross origin iframes

* Update snapshot to include canvas events

* Skip all meta events

* Support custom events as best we can in cross origin iframes

* Use earliest version of puppeteer that works with cross origin live-stream

* Map mouse/touch interaction events

* Update snapshots for correctly mapped click events

* Tweak tests for new puppeteer version

* Map MediaInteraction correctly for cross origin iframes

* Make tests consistent between high and low dpi devices

* Make test less flaky

* Make test less flaky

* Make test less flaky

* Make test less flaky

* Add support for styles in cross origin iframes

* Map traditional stylesheet mutations on cross origin iframes

* Add todo

* Add iframe mirror

* Get iframe manager to use iframe mirrors internally

* Rename `IframeMirror` to `CrossOriginIframeMirror`

* Setup basic cross origin canvas webrtc streaming

* Clean up removed canvas elements

* reset style mirror on new full snapshot

* Fix cross origin canvas webrtc streaming

* Make emit optional

* Run tests on github actions

* Upload image artifacts from failed tests

* Use newer github actions

* Test: hopefully adding more wait will fix it

* add extra wait

* Fix image snapshot tests

* Make tests run with new puppeteer version

* upgrade eslint-plugin-jest

* Chore: Remove travis ci as ci's running on github actions

* Chore: Support recording cross origin iframe in repl

* Force developers to update the cross origin iframe mapping when adding new events

https://github.com/rrweb-io/rrweb/pull/1035#discussion_r1012516277

* Document cross origin iframe recording

* Docs: cross origin iframes recording methods

* Docs: AI translated, cross origin iframe recording

* rename getParentId to getId

* Migrate to @rrweb/types

* Run on pull request

* doc: improve Chinese doc

* Rename `parentId` to `Id`

Co-authored-by: Mark-Fenng <f18846188605@gmail.com>
2022-11-16 13:11:11 +08:00

93 lines
2.7 KiB
HTML

<head>
<title>Uber Application for Codegen Testing</title>
<style>
#b-class,
#b-class-2 {
height: 33px;
width: 200px;
}
</style>
</head>
<body>
<script>
function mutate1() {
const bClassDiv = document.getElementById('b-class');
bClassDiv.className = 'notB';
const removeBlockedButton = document.getElementById('remove');
removeBlockedButton.remove();
const visibleCollection = document.getElementsByClassName('visible');
const i1Div = document.createElement('div');
const i1i1Div = document.createElement('div');
const i1i2Div = document.createElement('div');
const i1i1Button = document.createElement('button');
i1i1Button.innerHTML = 'I1I1 VISIBLE';
i1i1Div.appendChild(i1i1Button);
const i1i2Button = document.createElement('button');
i1i2Button.innerHTML = 'I1I2 VISIBLE';
i1i2Div.appendChild(i1i2Button);
i1Div.appendChild(i1i1Div);
i1Div.appendChild(i1i2Div);
visibleCollection[0].appendChild(i1Div);
}
function mutate2() {
const bClassDiv = document.getElementById('b-class-2');
bClassDiv.className = 'notB';
const removeBlockedButton = document.getElementById('remove2');
const innerButton = document.createElement('button');
innerButton.innerHTML = 'INNER BLOCKED';
removeBlockedButton.appendChild(innerButton);
removeBlockedButton.remove();
const visibleCollection = document.getElementsByClassName('visible2');
const i1Div = document.createElement('div');
const i1i1Div = document.createElement('div');
const i1i2Div = document.createElement('div');
const i1i1Button = document.createElement('button');
i1i1Button.innerHTML = 'I1I1 VISIBLE';
i1i1Div.appendChild(i1i1Button);
const i1i2Button = document.createElement('button');
i1i2Button.innerHTML = 'I1I2 VISIBLE';
i1i2Div.appendChild(i1i2Button);
i1Div.appendChild(i1i1Div);
i1Div.appendChild(i1i2Div);
visibleCollection[0].appendChild(i1Div);
}
</script>
<br />
<h1>Verify that block class bugs are fixed</h1>
<br />
<div class="first">
<div class="visible">
<button>VISIBLE</button>
</div>
<br /><br /><br />
<div class="rr-block" id="b-class">
<button id="remove">BLOCKED</button>
</div>
<br /><br /><br />
<button onclick="mutate1()">MUTATE</button>
</div>
<br /><br /><br />
<div class="second">
<div class="visible2">
<button>VISIBLE</button>
</div>
<br /><br /><br />
<div class="rr-block" id="b-class-2">
<button id="remove2">BLOCKED</button>
</div>
<br /><br /><br />
<button onclick="mutate2()">MUTATE</button>
</div>
</body>