From ece7fa95040f92bd0162aa3ad321161eaf7a386d Mon Sep 17 00:00:00 2001 From: Saravana Achu Mac Date: Mon, 4 May 2026 15:10:59 -0700 Subject: [PATCH] test(F7,F8): fix tab flag cache and entry alert specs Reset the tab feature flag cache between DOM tests so one authenticated response cannot leak into fallback cases, and make the trade execution failure spec submit a valid executable order before asserting the backend error alert. This closes the documented pre-existing web test failures and restores the full Vitest suite to green. Refs: docs/AUDIT_REDESIGN.md items F7 and F8. Co-Authored-By: GPT-5 Codex --- web/src/components/EntryForm.dom.test.tsx | 1 + web/src/hooks/useTabFeatureFlags.dom.test.tsx | 9 ++------- web/src/hooks/useTabFeatureFlags.ts | 5 +++++ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/web/src/components/EntryForm.dom.test.tsx b/web/src/components/EntryForm.dom.test.tsx index 9039f7d..4e2c54f 100644 --- a/web/src/components/EntryForm.dom.test.tsx +++ b/web/src/components/EntryForm.dom.test.tsx @@ -77,6 +77,7 @@ describe('EntryForm DOM flow', () => { render(); await user.type(screen.getByPlaceholderText('BTC/USD'), 'BTC/USD'); + await user.type(screen.getByPlaceholderText('0'), '1'); await user.click(screen.getByRole('checkbox', { name: /Execute/i })); await user.click(screen.getByRole('button', { name: 'Add' })); diff --git a/web/src/hooks/useTabFeatureFlags.dom.test.tsx b/web/src/hooks/useTabFeatureFlags.dom.test.tsx index a0c41c8..9291f7d 100644 --- a/web/src/hooks/useTabFeatureFlags.dom.test.tsx +++ b/web/src/hooks/useTabFeatureFlags.dom.test.tsx @@ -1,7 +1,7 @@ // @vitest-environment jsdom import { beforeEach, describe, expect, it, vi } from 'vitest'; import { renderHook, waitFor } from '@testing-library/react'; -import { useTabFeatureFlags } from './useTabFeatureFlags'; +import { resetTabFeatureFlagsCacheForTests, useTabFeatureFlags } from './useTabFeatureFlags'; const { getPlatformAccessTokenMock } = vi.hoisted(() => ({ getPlatformAccessTokenMock: vi.fn<() => Promise>(), @@ -15,14 +15,9 @@ vi.mock('../lib/runtime', () => ({ tradingRuntime: { tradingApiUrl: 'http://localhost:4018' }, })); -// Reset module-level cache between tests -vi.mock('./useTabFeatureFlags', async (importOriginal) => { - const mod = await importOriginal(); - return mod; -}); - describe('useTabFeatureFlags DOM behaviour', () => { beforeEach(() => { + resetTabFeatureFlagsCacheForTests(); getPlatformAccessTokenMock.mockReset(); vi.stubGlobal('fetch', vi.fn()); }); diff --git a/web/src/hooks/useTabFeatureFlags.ts b/web/src/hooks/useTabFeatureFlags.ts index 91b8999..46f9a06 100644 --- a/web/src/hooks/useTabFeatureFlags.ts +++ b/web/src/hooks/useTabFeatureFlags.ts @@ -13,6 +13,11 @@ const CACHE_TTL_MS = 30_000; let cachedFlags: TabFeatureFlags | null = null; let cachedAt = 0; +export function resetTabFeatureFlagsCacheForTests(): void { + cachedFlags = null; + cachedAt = 0; +} + async function loadTabFlags(): Promise { const now = Date.now(); if (cachedFlags && now - cachedAt < CACHE_TTL_MS) {