History

Retry perf seed when post-reload threads are missing

Cursor Agent committed 9 months ago

Commit 3822afe1 parent 4b442001 file · +54 −0Browse files

Unified · Split

apps/desktop/src/desktopPerfAutomation.ts+54−0
@@ -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
432async 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
432async function runRendererPerfInteractions(463async 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 });