Use the diagnostics reporter to generate a JSON summary for one or more platforms and optionally fail when blocking issues are detected.
Project:
samples/NativeWebView.Sample.DiagnosticsExample:
dotnet run --project samples/NativeWebView.Sample.Diagnostics/NativeWebView.Sample.Diagnostics.csproj -- \
--platform all \
--output artifacts/diagnostics/platform-diagnostics-report.json \
--require-ready
--platform <value>: all or a comma-separated subset of windows,macos,linux,ios,android,browser.--output <path>: output JSON file path.--markdown-output <path>: optional markdown summary output path.--blocking-baseline <path>: optional baseline file (<Platform>|<IssueCode>).--blocking-baseline-output <path>: optional path to write current baseline entries.--comparison-markdown-output <path>: optional markdown output for baseline comparison.--comparison-json-output <path>: optional JSON output for baseline comparison.--comparison-evaluation-markdown-output <path>: optional markdown output for gate evaluation.--require-ready: enable readiness gate.--warnings-as-errors: treat warnings as blocking.--allow-regression: do not fail when new blocking issues are found.--require-baseline-sync: fail when the baseline contains resolved or stale entries.0: no enabled gates failed.10: readiness gate failed.11: regression gate failed.12: baseline-sync gate failed.13: multiple enabled gates failed in one run.Use the repository wrapper script for CI and local consistency:
./scripts/run-platform-diagnostics-report.sh \
--configuration Release \
--no-build \
--platform all \
--output artifacts/diagnostics/platform-diagnostics-report.json \
--markdown-output artifacts/diagnostics/platform-diagnostics-report.md \
--blocking-baseline ci/baselines/blocking-issues-baseline.txt \
--blocking-baseline-output artifacts/diagnostics/current-blocking-baseline.txt \
--comparison-markdown-output artifacts/diagnostics/blocking-regression.md \
--comparison-json-output artifacts/diagnostics/blocking-regression.json \
--comparison-evaluation-markdown-output artifacts/diagnostics/gate-evaluation.md \
--require-baseline-sync \
--allow-not-ready
Additional script behavior:
--allow-not-ready: generate reports without failing when blocking issues are present.run-platform-diagnostics-report.sh enforces readiness.--allow-regression is set.--require-baseline-sync enforces baseline hygiene by failing when stale resolved entries remain in the baseline.The report pipeline produces:
Top-level fields:
generatedAtUtcwarningsAsErrorsisReadyissueCountwarningCounterrorCountblockingIssueCountplatformsEach platform entry includes:
platformproviderNameproviderRegisteredisReadyissueCountwarningCounterrorCountblockingIssueCountissues[] with code, severity, message, and recommendationMarkdown output includes:
Blocking regression markdown output includes:
Blocking regression JSON output includes:
requireReady, failOnRegression, requireBaselineSync),wouldFailRequireReady, wouldFailRegressionGate, wouldFailBaselineSyncGate),effectiveExitCode,fingerprint and fingerprintVersion,gateFailures[],Gate evaluation markdown output includes:
Use the helper script to regenerate the baseline from current diagnostics:
./scripts/update-blocking-baseline.sh \
--configuration Release \
--platform all \
--output ci/baselines/blocking-issues-baseline.txt
Optional strict regeneration:
./scripts/update-blocking-baseline.sh --warnings-as-errors
Use the dedicated validation script to exercise all gate outcomes (0, 10, 11, 12, 13):
./scripts/validate-diagnostics-exit-code-contract.sh \
--configuration Release \
--no-build \
--output-dir artifacts/diagnostics/exit-code-contract \
--baseline ci/baselines/blocking-issues-baseline.txt
Optional fingerprint baseline gate:
./scripts/validate-diagnostics-exit-code-contract.sh \
--configuration Release \
--no-build \
--output-dir artifacts/diagnostics/exit-code-contract \
--baseline ci/baselines/blocking-issues-baseline.txt \
--fingerprint-baseline ci/baselines/diagnostics-fingerprint-baseline.txt
Outputs include:
exit-code-contract-summary.mdexit-code-contract-summary.csvexit-code-contract-summary.jsonfingerprint-current.txtfingerprint-baseline-comparison.md and fingerprint-baseline-comparison.json when fingerprint gating is enabledRefresh the fingerprint baseline when contract changes are intentional:
./scripts/update-diagnostics-fingerprint-baseline.sh \
--configuration Release \
--output ci/baselines/diagnostics-fingerprint-baseline.txt
ci/baselines/blocking-issues-baseline.txt and enforce baseline-sync hygiene.