chore(html): hmr report should survive reload (#33696)

This commit is contained in:
Simon Knott 2024-11-20 16:35:39 +01:00 committed by GitHub
parent 81e28a8854
commit 89f4d4ce4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 16 additions and 2 deletions

View File

@ -50,6 +50,8 @@ window.onload = () => {
ReactDOM.createRoot(document.querySelector('#root')!).render(<ReportLoader />);
};
const kPlaywrightReportStorageForHMR = 'playwrightReportStorageForHMR';
class ZipReport implements LoadedReport {
private _entries = new Map<string, zip.Entry>();
private _json!: HTMLReport;
@ -58,8 +60,20 @@ class ZipReport implements LoadedReport {
const zipURI = await new Promise<string>(resolve => {
if (window.playwrightReportBase64)
return resolve(window.playwrightReportBase64);
window.addEventListener('message', event => event.source === window.opener && resolve(event.data), { once: true });
window.opener.postMessage('ready', '*');
if (window.opener) {
window.addEventListener('message', event => {
if (event.source === window.opener) {
localStorage.setItem(kPlaywrightReportStorageForHMR, event.data);
resolve(event.data);
}
}, { once: true });
window.opener.postMessage('ready', '*');
} else {
const oldReport = localStorage.getItem(kPlaywrightReportStorageForHMR);
if (oldReport)
return resolve(oldReport);
alert('couldnt find report, something with HMR is broken');
}
});
const zipReader = new zipjs.ZipReader(new zipjs.Data64URIReader(zipURI), { useWebWorkers: false });