Fix flaky test for SettingsDialog. (#6294)

This commit is contained in:
Jacob Richman 2025-08-14 23:04:48 -07:00 committed by GitHub
parent d46b91e09d
commit 2690123af0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 22 additions and 16 deletions

View File

@ -22,6 +22,7 @@
*/
import { render } from 'ink-testing-library';
import { waitFor } from '@testing-library/react';
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { SettingsDialog } from './SettingsDialog.js';
import { LoadedSettings, SettingScope } from '../../config/settings.js';
@ -285,12 +286,15 @@ describe('SettingsDialog', () => {
// Switch to scope focus
stdin.write('\t'); // Tab key
await wait();
expect(lastFrame()).toContain('> Apply To');
await waitFor(() => {
expect(lastFrame()).toContain('> Apply To');
});
// Select a scope
stdin.write('1'); // Select first scope option
await wait();
await waitFor(() => {
expect(lastFrame()).toContain(' Apply To');
});
// Should be back to settings focus
expect(lastFrame()).toContain(' Apply To');
@ -351,9 +355,9 @@ describe('SettingsDialog', () => {
// Press Escape key
stdin.write('\u001B'); // ESC key
await wait();
expect(onSelect).toHaveBeenCalledWith(undefined, SettingScope.User);
await waitFor(() => {
expect(onSelect).toHaveBeenCalledWith(undefined, SettingScope.User);
});
unmount();
});
@ -549,9 +553,9 @@ describe('SettingsDialog', () => {
describe('Settings Display Values', () => {
it('should show correct values for inherited settings', () => {
const settings = createMockSettings(
{}, // No user settings
{},
{ vimMode: true, hideWindowTitle: false }, // System settings
{}, // No workspace settings
{},
);
const onSelect = vi.fn();
@ -568,7 +572,7 @@ describe('SettingsDialog', () => {
const settings = createMockSettings(
{ vimMode: false }, // User overrides
{ vimMode: true }, // System default
{}, // No workspace settings
{},
);
const onSelect = vi.fn();
@ -664,13 +668,15 @@ describe('SettingsDialog', () => {
// Tab to scope section
stdin.write('\t');
await wait();
expect(lastFrame()).toContain('> Apply To');
await waitFor(() => {
expect(lastFrame()).toContain('> Apply To');
});
// Tab back to settings section
stdin.write('\t');
await wait();
expect(lastFrame()).toContain(' Apply To');
await waitFor(() => {
expect(lastFrame()).toContain(' Apply To');
});
unmount();
});
@ -746,9 +752,9 @@ describe('SettingsDialog', () => {
// Exit
stdin.write('\u001B'); // Escape
await wait();
expect(onSelect).toHaveBeenCalledWith(undefined, expect.any(String));
await waitFor(() => {
expect(onSelect).toHaveBeenCalledWith(undefined, expect.any(String));
});
unmount();
});