* 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>
93 lines
2.7 KiB
HTML
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>
|