agent-ecosystem/test/renderer/components/ui/DialogContentFocusScope.test.tsx
2026-05-17 00:58:17 +03:00

55 lines
1.4 KiB
TypeScript

import React, { act } from 'react';
import { createRoot } from 'react-dom/client';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import {
Dialog,
DialogContent,
DialogDescription,
DialogTitle,
} from '@renderer/components/ui/dialog';
describe('DialogContent FocusScope integration', () => {
let host: HTMLDivElement;
let root: ReturnType<typeof createRoot>;
beforeEach(() => {
vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true);
host = document.createElement('div');
document.body.appendChild(host);
root = createRoot(host);
});
afterEach(() => {
act(() => {
root.unmount();
});
document.body.innerHTML = '';
vi.unstubAllGlobals();
});
it('keeps the Radix focus scope stable while an open dialog rerenders', () => {
const renderDialog = (label: string): void => {
root.render(
<Dialog open>
<DialogContent>
<DialogTitle>{label}</DialogTitle>
<DialogDescription>Provider model settings</DialogDescription>
<button type="button">Focusable action</button>
</DialogContent>
</Dialog>
);
};
expect(() => {
act(() => {
renderDialog('Create team');
});
act(() => {
renderDialog('Create team updated');
});
}).not.toThrow();
expect(document.body.textContent).toContain('Create team updated');
});
});