mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-08 08:52:12 +00:00
35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
import { expect, test } from "./fixtures";
|
|
|
|
for (const kind of ["password", "sshSecret", "params"] as const) {
|
|
test(`database ${kind} dialog keeps its fields inside the window`, async ({ workbench: page }) => {
|
|
await page.evaluate(async (kind) => {
|
|
const path = "/src/features/database/store.ts";
|
|
const { openDialog } = await import(/* @vite-ignore */ path);
|
|
const source = {
|
|
id: "layout-test",
|
|
name: "Layout test",
|
|
driver: "postgres",
|
|
user: "account_".repeat(30),
|
|
ssh: { enabled: true, host: "bastion.example.invalid", auth: "password" },
|
|
};
|
|
if (kind === "password") openDialog({ kind, source, resolve: () => {} });
|
|
else if (kind === "sshSecret")
|
|
openDialog({ kind, source, prompt: "SSH password required for " + "host_".repeat(30), resolve: () => {} });
|
|
else openDialog({ kind, names: ["parameter_".repeat(25)], resolve: () => {} });
|
|
}, kind);
|
|
const dialog = page.getByRole("dialog");
|
|
await expect(dialog).toBeVisible();
|
|
for (const width of [1000, 640, 500]) {
|
|
await page.setViewportSize({ width, height: 760 });
|
|
const fits = await dialog.evaluate((dialog) => {
|
|
const box = dialog.getBoundingClientRect();
|
|
return [...dialog.querySelectorAll("input, [class*='form_']")].every((el) => {
|
|
const r = el.getBoundingClientRect();
|
|
return r.left >= box.left && r.right <= box.right && el.scrollWidth <= el.clientWidth + 1;
|
|
});
|
|
});
|
|
expect(fits).toBe(true);
|
|
}
|
|
});
|
|
}
|