feat(editor): add sql editor split panes with shared results
This commit is contained in:
1 parent
24a274bd89
commit
5a3a6e2bb0
76 files changed
+7997
-3343
No files matched your search
+12
-2
@@ -283,6 +283,16 @@ async function flushUi() {
|
||||
}
|
||||
}
|
||||
|
||||
// flushUi only drains microtasks; popovers that mount through a timer need
|
||||
// polling or the query below races the render and returns null under load.
|
||||
async function waitForElement<T extends Element>(selector: string): Promise<T> {
|
||||
return vi.waitFor(() => {
|
||||
const element = document.body.querySelector<T>(selector);
|
||||
if (!element) throw new Error(`element not rendered yet: ${selector}`);
|
||||
return element;
|
||||
});
|
||||
}
|
||||
|
||||
function buttonWithTitle(title: string): HTMLButtonElement {
|
||||
const button = document.body.querySelector<HTMLElement>(`[title="${title}"]`)?.closest<HTMLButtonElement>("button") ?? null;
|
||||
expect(button).not.toBeNull();
|
||||
@@ -1082,7 +1092,7 @@ describe("DocumentBrowser MongoDB filter value types", () => {
|
||||
|
||||
root!.querySelector<HTMLButtonElement>('[data-testid="data-grid"] button')!.click();
|
||||
await flushUi();
|
||||
const valueInput = document.body.querySelector<HTMLInputElement>('input[placeholder="grid.filterBuilderValue"]')!;
|
||||
const valueInput = await waitForElement<HTMLInputElement>('input[placeholder="grid.filterBuilderValue"]');
|
||||
const callsBeforeEnter = backend.documentFindDocuments.mock.calls.length;
|
||||
valueInput.dispatchEvent(new KeyboardEvent("keydown", { key: "Enter", bubbles: true, cancelable: true }));
|
||||
await flushUi();
|
||||
@@ -1090,7 +1100,7 @@ describe("DocumentBrowser MongoDB filter value types", () => {
|
||||
|
||||
root!.querySelector<HTMLButtonElement>('[data-testid="data-grid"] button')!.click();
|
||||
await flushUi();
|
||||
const reopenedValueInput = document.body.querySelector<HTMLInputElement>('input[placeholder="grid.filterBuilderValue"]')!;
|
||||
const reopenedValueInput = await waitForElement<HTMLInputElement>('input[placeholder="grid.filterBuilderValue"]');
|
||||
reopenedValueInput.dispatchEvent(new KeyboardEvent("keydown", { key: "Enter", shiftKey: true, bubbles: true, cancelable: true }));
|
||||
await flushUi();
|
||||
expect(document.body.querySelectorAll('input[placeholder="grid.filterBuilderValue"]')).toHaveLength(2);
|
||||
|
||||
Reference in new issue
Block a user