Unified · Split
| @@ -429,6 +429,37 @@ async function seedRendererState( · 428 unmodified lines | |||
| 429 | return window.webContents.executeJavaScript(script, true); | 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 | async function runRendererPerfInteractions( | 463 | async function runRendererPerfInteractions( |
| 433 | window: BrowserWindow, | 464 | window: BrowserWindow, |
| 434 | benchmarkThreadIds: string[], | 465 | benchmarkThreadIds: string[], |
| @@ -1016,6 +1047,10 @@ export async function runDesktopPerfAutomation(window: BrowserWindow): Promise<v · 581 unmodified lines | |||
| 1016 | timeoutMs: 60_000, | 1047 | timeoutMs: 60_000, |
| 1017 | label: "initial load", | 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 | console.log("[desktop-perf] seeding renderer state"); | 1054 | console.log("[desktop-perf] seeding renderer state"); |
| 1020 | const persistedCounts = await seedRendererState(window, seed.state); | 1055 | const persistedCounts = await seedRendererState(window, seed.state); |
| 1021 | console.log( | 1056 | console.log( |
| @@ -1026,6 +1061,25 @@ export async function runDesktopPerfAutomation(window: BrowserWindow): Promise<v · 4 unmodified lines | |||
| 1026 | timeoutMs: 60_000, | 1061 | timeoutMs: 60_000, |
| 1027 | label: "post-seed reload", | 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 | await delay(300); | 1083 | await delay(300); |
| 1030 | 1084 | ||
| 1031 | fs.mkdirSync(path.dirname(PERF_TRACE_OUT_PATH), { recursive: true }); | 1085 | fs.mkdirSync(path.dirname(PERF_TRACE_OUT_PATH), { recursive: true }); |