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
429429 return window.webContents.executeJavaScript(script, true);
430430 }
431431
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+
432463 async function runRendererPerfInteractions(
433464 window: BrowserWindow,
434465 benchmarkThreadIds: string[],
@@ -1016,6 +1047,10 @@ export async function runDesktopPerfAutomation(window: BrowserWindow): Promise<v · 581 unmodified lines
10161047 timeoutMs: 60_000,
10171048 label: "initial load",
10181049 });
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+ );
10191054 console.log("[desktop-perf] seeding renderer state");
10201055 const persistedCounts = await seedRendererState(window, seed.state);
10211056 console.log(
@@ -1026,6 +1061,25 @@ export async function runDesktopPerfAutomation(window: BrowserWindow): Promise<v · 4 unmodified lines
10261061 timeoutMs: 60_000,
10271062 label: "post-seed reload",
10281063 });
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+ }
10291083 await delay(300);
10301084
10311085 fs.mkdirSync(path.dirname(PERF_TRACE_OUT_PATH), { recursive: true });