From 05495577f7002f408fee113cb804e71dbdf9112c Mon Sep 17 00:00:00 2001 From: Lyon <88232613+pikasTech@users.noreply.github.com> Date: Wed, 24 Jun 2026 04:04:34 +0800 Subject: [PATCH] fix(web-probe): keep rounds in compact analyze output (#775) Co-authored-by: Codex --- scripts/src/hwlab-node-impl.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/scripts/src/hwlab-node-impl.ts b/scripts/src/hwlab-node-impl.ts index 6c04f61f..418a3e7f 100644 --- a/scripts/src/hwlab-node-impl.ts +++ b/scripts/src/hwlab-node-impl.ts @@ -8664,13 +8664,16 @@ function runNodeWebProbeObserveAnalyze(options: NodeWebProbeObserveOptions, spec "const compactOutput = (value) => JSON.stringify(value);", "let output = compactOutput(compact);", "if (Buffer.byteLength(output, 'utf8') > compactStdoutLimitBytes) {", + " const minimalRounds = takeTail(firstNonEmptyArray(compact.sampleMetrics?.rounds, compact.sampleMetrics?.roundItems, source?.sampleMetrics?.rounds, fullRecentMetrics?.rounds, fullArchiveMetrics?.rounds), 8).map(slimRound);", + " const minimalTurnColumns = takeTail(firstNonEmptyArray(compact.sampleMetrics?.turnColumns, source?.sampleMetrics?.turnColumns, fullRecentMetrics?.turnColumns, fullArchiveMetrics?.turnColumns), 8).map(slimTurnColumn);", " const minimal = {", " ok: compact.ok,", " counts: compact.counts ?? null,", " analysisWindow: compact.analysisWindow ?? null,", " archiveSummary: compact.archiveSummary ?? null,", " sampleMetrics: compact.sampleMetrics ? {", - " rounds: Array.isArray(compact.sampleMetrics.rounds) ? compact.sampleMetrics.rounds : compact.sampleMetrics.rounds ?? null,", + " roundItems: minimalRounds,", + " rounds: minimalRounds,", " sampleCount: compact.sampleMetrics.sampleCount ?? null,", " loadingSampleCount: compact.sampleMetrics.loadingSampleCount ?? null,", " loadingMaxCount: compact.sampleMetrics.loadingMaxCount ?? null,", @@ -8697,7 +8700,7 @@ function runNodeWebProbeObserveAnalyze(options: NodeWebProbeObserveOptions, spec " turnTimingRecentUpdateJumpCount: compact.sampleMetrics.turnTimingRecentUpdateJumpCount ?? null,", " turnTimingRecentUpdateSawtoothJumpCount: compact.sampleMetrics.turnTimingRecentUpdateSawtoothJumpCount ?? null,", " turnTimingRecentUpdateMaxIncreaseSeconds: compact.sampleMetrics.turnTimingRecentUpdateMaxIncreaseSeconds ?? null,", - " turnColumns: Array.isArray(compact.sampleMetrics.turnColumns) ? compact.sampleMetrics.turnColumns.slice(-6) : []", + " turnColumns: minimalTurnColumns", " } : null,", " runtimeAlerts: compact.runtimeAlerts ?? null,", " pagePerformance: compact.pagePerformance ?? null,", @@ -8871,14 +8874,26 @@ function withWebObserveAnalyzeRendered(value: Record): Rendered } function renderWebObserveAnalyzeTable(value: Record): string { - const analysis = record(value.analysis); + const analysis = record(value.analysis) ?? value; const analyzer = record(analysis?.analyzer); const result = record(value.result); const counts = record(analysis?.counts); const jsonlScope = record(analysis?.jsonlScope); const analysisWindow = record(analysis?.analysisWindow); const archiveSummary = record(analysis?.archiveSummary); - const sampleMetrics = record(analysis?.sampleMetrics); + const nestedSampleMetrics = record(analysis?.sampleMetrics); + const directSampleMetrics = record(value.sampleMetrics); + const hasRenderableTurnMetrics = (item: Record | null): boolean => { + if (!item) return false; + return (Array.isArray(item.roundItems) && item.roundItems.length > 0) + || (Array.isArray(item.rounds) && item.rounds.length > 0) + || (Array.isArray(item.turnColumns) && item.turnColumns.length > 0); + }; + const sampleMetrics = hasRenderableTurnMetrics(nestedSampleMetrics) + ? nestedSampleMetrics + : hasRenderableTurnMetrics(directSampleMetrics) + ? directSampleMetrics + : nestedSampleMetrics ?? directSampleMetrics; const archiveMetrics = record(archiveSummary?.sampleMetrics); const archivePagePerformance = record(archiveSummary?.pagePerformance); const runtimeAlerts = record(analysis?.runtimeAlerts);