Chore: Make inject script more robust on repl & stream (#1429)

* try/catch injection of recording script in rrweb repl and stream

* Add empty changesets
This commit is contained in:
Justin Halsall
2024-04-05 12:15:14 +02:00
committed by GitHub
parent 104900263a
commit e223399c7c
3 changed files with 83 additions and 74 deletions

View File

@@ -0,0 +1,2 @@
---
---

View File

@@ -22,6 +22,7 @@ void (async () => {
let events = [];
async function injectRecording(frame) {
try {
await frame.evaluate((rrwebCode) => {
const win = window;
if (win.__IS_RECORDING__) return;
@@ -56,6 +57,9 @@ void (async () => {
});
})();
}, code);
} catch (e) {
console.error('failed to inject recording script:', e);
}
}
await start('https://react-redux.realworld.io');

View File

@@ -24,6 +24,7 @@ const pluginCode = fs.readFileSync(
);
async function injectRecording(frame) {
try {
await frame.evaluate(
(rrwebCode, pluginCode) => {
const win = window;
@@ -48,14 +49,13 @@ async function injectRecording(frame) {
win.events = [];
window.record = win.rrweb.record;
window.plugin = new rrwebCanvasWebRTCRecord.RRWebPluginCanvasWebRTCRecord(
{
window.plugin =
new rrwebCanvasWebRTCRecord.RRWebPluginCanvasWebRTCRecord({
signalSendCallback: (msg) => {
// [record#callback] provides canvas id, stream, and webrtc sdpOffer signal & connect message
_signal(msg);
},
},
);
});
window.record({
emit: (event) => {
@@ -73,6 +73,9 @@ async function injectRecording(frame) {
code,
pluginCode,
);
} catch (e) {
console.error('failed to inject script, error:', e);
}
}
async function startReplay(page, serverURL, recordedPage) {