fix(web-probe): restore analyzer runtime diagnostics visibility

This commit is contained in:
Codex
2026-07-02 17:39:41 +00:00
parent c08d0fbdb1
commit dc50f0c715
6 changed files with 105 additions and 10 deletions
@@ -5,8 +5,10 @@ import { join } from "node:path";
import { spawnSync } from "node:child_process";
import { test } from "bun:test";
import { withWebObserveCollectRendered } from "../hwlab-node-web-observe-render";
import { nodeWebObserveAnalyzerSource } from "../hwlab-node-web-observe-analyzer-source";
import { nodeWebObserveCollectViewNodeScript } from "../hwlab-node-web-observe-collect";
import { nodeWebObserveCollectNodeScript } from "./web-observe-scripts";
const alertThresholds = {
sameOriginApiSlowMs: 60000,
@@ -167,6 +169,56 @@ async function writeState(): Promise<string> {
return stateDir;
}
test("generated observe analyzer source compiles as a single ESM bundle", async () => {
const stateDir = await mkdtemp(join(tmpdir(), "unidesk-web-observe-analyzer-compile-"));
const analyzerPath = join(stateDir, "observer-analyzer.mjs");
await writeFile(analyzerPath, nodeWebObserveAnalyzerSource(), { mode: 0o700 });
const result = spawnSync("node", ["--check", analyzerPath], { encoding: "utf8" });
assert.equal(result.status, 0, result.stderr || result.stdout);
}, 20_000);
test("file collect exposes requested and resolved artifact when analysis report falls back", async () => {
const stateDir = await mkdtemp(join(tmpdir(), "unidesk-web-observe-file-fallback-"));
await mkdir(join(stateDir, "analysis"), { recursive: true });
await writeFile(join(stateDir, "analysis", "analyzer-stdout.json"), JSON.stringify({
ok: false,
command: "web-probe-observe analyze",
error: "fixture analyzer failed before report",
valuesRedacted: true,
}) + "\n");
const script = nodeWebObserveCollectNodeScript(100, "analysis/report.json", null, null);
const result = spawnSync("bash", ["-lc", `state_dir=${shellQuote(stateDir)}\n${script}`], {
cwd: join(import.meta.dir, "../../.."),
encoding: "utf8",
});
assert.equal(result.status, 0, result.stderr || result.stdout);
const output = JSON.parse(result.stdout) as Record<string, unknown>;
const file = output.file as Record<string, unknown>;
assert.equal(output.requestedFile, "analysis/report.json");
assert.equal(output.resolvedFile, "analysis/analyzer-stdout.json");
assert.equal(output.fallbackReason, "requested-file-missing");
assert.equal(file.requestedRelative, "analysis/report.json");
assert.equal(file.resolvedRelative, "analysis/analyzer-stdout.json");
const rendered = withWebObserveCollectRendered({
ok: true,
status: "collected",
command: "web-probe observe collect",
id: "webobs-fallback-test",
node: "JD01",
lane: "v03",
view: "files",
requestedFile: "analysis/report.json",
collect: output,
valuesRedacted: true,
});
assert.match(rendered.renderedText, /File resolution/u);
assert.match(rendered.renderedText, /analysis\/report\.json/u);
assert.match(rendered.renderedText, /analysis\/analyzer-stdout\.json/u);
assert.match(rendered.renderedText, /requested-file-missing/u);
}, 20_000);
test("analyzer and performance-summary include bounded web-performance runtime diagnostics", async () => {
const stateDir = await writeState();
const report = await runAnalyzer(stateDir);