Unified · Split
| @@ -429,6 +429,37 @@ async function seedRendererState( · 428 unmodified lines | ||
| 429 | 429 | return window.webContents.executeJavaScript(script, true); |
| 430 | 430 | } |
| 431 | 431 | |
| 432 | +async function readRendererPersistedStateSnapshot(window: BrowserWindow): Promise<{ | |
| 433 | + url: string; | |
| 434 | + projects: number; | |
| 435 | + threads: number; | |
| 436 | +}> { | |
| 437 | + const script = ` | |
| 438 | + (() => { | |
| 439 | + const key = "t3code:renderer-state:v7"; | |
| 440 | + const raw = localStorage.getItem(key); | |
| 441 | + let projects = 0; | |
| 442 | + let threads = 0; | |
| 443 | + if (raw) { | |
| 444 | + try { | |
| 445 | + const parsed = JSON.parse(raw); | |
| 446 | + projects = Array.isArray(parsed?.projects) ? parsed.projects.length : 0; | |
| 447 | + threads = Array.isArray(parsed?.threads) ? parsed.threads.length : 0; | |
| 448 | + } catch { | |
| 449 | + projects = -1; | |
| 450 | + threads = -1; | |
| 451 | + } | |
| 452 | + } | |
| 453 | + return { | |
| 454 | + url: window.location.href, | |
| 455 | + projects, | |
| 456 | + threads, | |
| 457 | + }; | |
| 458 | + })(); | |
| 459 | + `; | |
| 460 | + return window.webContents.executeJavaScript(script, true); | |
| 461 | +} | |
| 462 | + | |
| 432 | 463 | async function runRendererPerfInteractions( |
| 433 | 464 | window: BrowserWindow, |
| 434 | 465 | benchmarkThreadIds: string[], |
| @@ -1016,6 +1047,10 @@ export async function runDesktopPerfAutomation(window: BrowserWindow): Promise<v · 581 unmodified lines | ||
| 1016 | 1047 | timeoutMs: 60_000, |
| 1017 | 1048 | label: "initial load", |
| 1018 | 1049 | }); |
| 1050 | + const preSeedSnapshot = await readRendererPersistedStateSnapshot(window); | |
| 1051 | + console.log( | |
| 1052 | + `[desktop-perf] pre-seed renderer state url=${preSeedSnapshot.url} projects=${preSeedSnapshot.projects} threads=${preSeedSnapshot.threads}`, | |
| 1053 | + ); | |
| 1019 | 1054 | console.log("[desktop-perf] seeding renderer state"); |
| 1020 | 1055 | const persistedCounts = await seedRendererState(window, seed.state); |
| 1021 | 1056 | console.log( |
| @@ -1026,6 +1061,25 @@ export async function runDesktopPerfAutomation(window: BrowserWindow): Promise<v · 4 unmodified lines | ||
| 1026 | 1061 | timeoutMs: 60_000, |
| 1027 | 1062 | label: "post-seed reload", |
| 1028 | 1063 | }); |
| 1064 | + let postSeedSnapshot = await readRendererPersistedStateSnapshot(window); | |
| 1065 | + console.log( | |
| 1066 | + `[desktop-perf] post-seed renderer state url=${postSeedSnapshot.url} projects=${postSeedSnapshot.projects} threads=${postSeedSnapshot.threads}`, | |
| 1067 | + ); | |
| 1068 | + if (postSeedSnapshot.threads <= 0) { | |
| 1069 | + console.warn("[desktop-perf] post-seed state had no threads; retrying seed on current origin"); | |
| 1070 | + const retryCounts = await seedRendererState(window, seed.state); | |
| 1071 | + console.log( | |
| 1072 | + `[desktop-perf] retry seeded localStorage counts projects=${retryCounts.projects} threads=${retryCounts.threads}`, | |
| 1073 | + ); | |
| 1074 | + await waitForDidFinishLoad(window.webContents, { | |
| 1075 | + timeoutMs: 60_000, | |
| 1076 | + label: "post-seed retry reload", | |
| 1077 | + }); | |
| 1078 | + postSeedSnapshot = await readRendererPersistedStateSnapshot(window); | |
| 1079 | + console.log( | |
| 1080 | + `[desktop-perf] post-seed retry renderer state url=${postSeedSnapshot.url} projects=${postSeedSnapshot.projects} threads=${postSeedSnapshot.threads}`, | |
| 1081 | + ); | |
| 1082 | + } | |
| 1029 | 1083 | await delay(300); |
| 1030 | 1084 | |
| 1031 | 1085 | fs.mkdirSync(path.dirname(PERF_TRACE_OUT_PATH), { recursive: true }); |