Fix Windows CI flaky test in SettingsDialog.test.tsx (#8533)

Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>
This commit is contained in:
fuyou
2025-09-17 00:09:08 +08:00
committed by GitHub
parent f098e07c19
commit a1ebb6f275

View File

@@ -307,6 +307,8 @@ describe('SettingsDialog', () => {
describe('Settings Toggling', () => {
it('should toggle setting with Enter key', async () => {
vi.mocked(saveModifiedSettings).mockClear();
const settings = createMockSettings();
const onSelect = vi.fn();
const component = (
@@ -323,6 +325,14 @@ describe('SettingsDialog', () => {
stdin.write(TerminalKeys.ENTER as string);
await wait();
// Wait for the mock to be called with more generous timeout for Windows
await waitFor(
() => {
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalled();
},
{ timeout: 1000 },
);
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalledWith(
new Set<string>(['general.disableAutoUpdate']),
{
@@ -380,6 +390,8 @@ describe('SettingsDialog', () => {
} as unknown as SettingsSchemaType;
it('toggles enum values with the enter key', async () => {
vi.mocked(saveModifiedSettings).mockClear();
vi.mocked(getSettingsSchema).mockReturnValue(FAKE_SCHEMA);
const settings = createMockSettings();
const onSelect = vi.fn();
@@ -396,6 +408,12 @@ describe('SettingsDialog', () => {
await wait();
stdin.write(TerminalKeys.ENTER as string);
await wait();
await waitFor(
() => {
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalled();
},
{ timeout: 1000 },
);
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalledWith(
new Set<string>(['ui.theme']),
@@ -412,6 +430,7 @@ describe('SettingsDialog', () => {
});
it('loops back when reaching the end of an enum', async () => {
vi.mocked(saveModifiedSettings).mockClear();
vi.mocked(getSettingsSchema).mockReturnValue(FAKE_SCHEMA);
const settings = createMockSettings();
settings.setValue(SettingScope.User, 'ui.theme', StringEnum.BAZ);
@@ -429,6 +448,12 @@ describe('SettingsDialog', () => {
await wait();
stdin.write(TerminalKeys.ENTER as string);
await wait();
await waitFor(
() => {
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalled();
},
{ timeout: 1000 },
);
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalledWith(
new Set<string>(['ui.theme']),