(s)
| 698 | } |
| 699 | |
| 700 | function validationTab(s) { |
| 701 | const gates = s.gates || {}; |
| 702 | const labels = { build: "Build", tests: "Unit Tests", cve: "CVE Check", consistency: "Consistency", completeness: "Completeness" }; |
| 703 | let html = '<div class="card"><h2>Validation gates</h2><div class="grid">'; |
| 704 | Object.keys(labels).forEach((k) => { |
| 705 | html += '<div class="kv"><span class="k">' + esc(labels[k]) + "</span><span class=v>" + statusBadge(gates[k] || "not_run") + "</span></div>"; |
| 706 | }); |
| 707 | html += "</div></div>"; |
| 708 | html += |
| 709 | '<div class="card"><h2>Run validations</h2><div class="actions">' + |
| 710 | btn("Build & unit tests", "run_build_tests", {}, { primary: true }) + |
| 711 | btn("Scan CVEs", "run_cve") + |
| 712 | btn("Generate unit tests", "generate_tests") + |
| 713 | btn("Consistency check", "run_consistency") + |
| 714 | btn("Completeness check", "run_completeness") + |
| 715 | "</div><p class=muted style='margin:10px 0 0'>CVE scan uses <code>#appmod-validate-cves-for-java</code>; test generation uses <code>#appmod-generate-tests-for-java</code>.</p></div>"; |
| 716 | return html; |
| 717 | } |
| 718 | |
| 719 | function doctorTab(s) { |
| 720 | const d = s.doctor; |
nothing calls this directly
no test coverage detected