diff --git a/src/main/host/deferred-secret-protection-report.test.ts b/src/main/host/deferred-secret-protection-report.test.ts index 9152d03e1de..5c6336bec3d 100644 --- a/src/main/host/deferred-secret-protection-report.test.ts +++ b/src/main/host/deferred-secret-protection-report.test.ts @@ -94,6 +94,20 @@ describe('scheduleSecretProtectionGapReport', () => { expect(logged).toEqual([]) }) + it('honors forced reports for development profiles', () => { + scheduleSecretProtectionGapReport({ + dataFile, + log: (m) => void logged.push(m), + deferUntilFirstWindow: true, + skipInDevelopment: true, + force: true + }) + createWindow().reveal() + drain() + expect(probes).toBe(1) + expect(logged).toEqual(['[secrets] The OS keyring is unavailable.']) + }) + /** Runs an already-queued setImmediate; the 1ms is slack, not a delay under test. */ const drain = (): void => void vi.advanceTimersByTime(1) diff --git a/src/main/host/deferred-secret-protection-report.ts b/src/main/host/deferred-secret-protection-report.ts index d9f6018aabe..8f5be1fb047 100644 --- a/src/main/host/deferred-secret-protection-report.ts +++ b/src/main/host/deferred-secret-protection-report.ts @@ -44,7 +44,7 @@ export function scheduleSecretProtectionGapReport({ /** Development profiles are disposable/isolated and must not trigger OS keychain UI. */ skipInDevelopment?: boolean }): void { - if (skipInDevelopment) { + if (skipInDevelopment && !options.force) { return }