{audit.scannerType}
-
+
diff --git a/web/src/features/security-audit/security-audit-summary.test.tsx b/web/src/features/security-audit/security-audit-summary.test.tsx
index c668275c..efdd9344 100644
--- a/web/src/features/security-audit/security-audit-summary.test.tsx
+++ b/web/src/features/security-audit/security-audit-summary.test.tsx
@@ -97,6 +97,15 @@ describe('SecurityAuditSummary', () => {
expect(html).toContain('securityAudit.verdict.BLOCKED')
})
+ it('renders scanning status when the audit has not completed yet', () => {
+ mockAudits = [createAudit({ verdict: 'SUSPICIOUS', scannedAt: null })]
+
+ const html = renderToStaticMarkup()
+
+ expect(html).toContain('securityAudit.statusScanning')
+ expect(html).not.toContain('securityAudit.verdict.SUSPICIOUS')
+ })
+
it('renders the total findings count across all audits', () => {
mockAudits = [
createAudit({ id: 1, findingsCount: 3 }),
diff --git a/web/src/features/security-audit/security-audit-summary.tsx b/web/src/features/security-audit/security-audit-summary.tsx
index cd35f57d..0fe4344b 100644
--- a/web/src/features/security-audit/security-audit-summary.tsx
+++ b/web/src/features/security-audit/security-audit-summary.tsx
@@ -5,6 +5,7 @@ import { Card } from '@/shared/ui/card'
import { Button } from '@/shared/ui/button'
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/shared/ui/dialog'
import { useSecurityAudits } from './use-security-audit'
+import { getSecurityAuditDisplayState } from './display-state'
import { VerdictBadge } from './verdict-badge'
import { SecurityAuditSection } from './security-audit-section'
@@ -40,7 +41,7 @@ export function SecurityAuditSummary({ skillId, versionId }: SecurityAuditSummar
className="flex items-center justify-between rounded-xl border border-border/60 bg-secondary/20 p-3"
>
{audit.scannerType}
-
+
))}
diff --git a/web/src/features/security-audit/types.ts b/web/src/features/security-audit/types.ts
index f0ca1cbb..6990956d 100644
--- a/web/src/features/security-audit/types.ts
+++ b/web/src/features/security-audit/types.ts
@@ -1,4 +1,5 @@
export type SecurityVerdict = 'SAFE' | 'SUSPICIOUS' | 'DANGEROUS' | 'BLOCKED'
+export type SecurityAuditDisplayState = SecurityVerdict | 'SCANNING'
export type FindingSeverity = 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'INFO'
export interface SecurityFinding {
diff --git a/web/src/features/security-audit/verdict-badge.test.tsx b/web/src/features/security-audit/verdict-badge.test.tsx
index 6a722359..6c4ca8e9 100644
--- a/web/src/features/security-audit/verdict-badge.test.tsx
+++ b/web/src/features/security-audit/verdict-badge.test.tsx
@@ -47,6 +47,12 @@ describe('VerdictBadge', () => {
expect(html).toContain('text-red-700')
})
+ it('renders the scanning label for pending scan display state', () => {
+ const html = renderToStaticMarkup(