fix(web-probe): restore analyzer runtime diagnostics visibility
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user