Skip to content
4 changes: 0 additions & 4 deletions app/e2e/form-widget.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,10 +210,6 @@ test.describe("Form widget", () => {
// eslint-disable-next-line playwright/no-wait-for-timeout
await page.waitForTimeout(400);

// Wait for the 200ms debounce in DebouncedTextInput to propagate the value
// eslint-disable-next-line playwright/no-wait-for-timeout
await page.waitForTimeout(400);

// Submit the form
await page.getByRole("button", { name: "Submit" }).click();

Expand Down
9 changes: 4 additions & 5 deletions app/e2e/transforms.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ async function setupWidgetWithQuery(page: import("@playwright/test").Page) {
await dialog.getByRole("combobox").nth(0).click();
await page.getByRole("option").first().click();

// Wait for editor to stabilize after connection selection triggers schema fetch
await page.waitForTimeout(1_000);

await typeInEditor(
dialog,
page,
Expand Down Expand Up @@ -134,9 +131,11 @@ test.describe("Data Transforms", () => {
await dialog.getByRole("button", { name: "Add Widget" }).click();
await expect(dialog).not.toBeVisible({ timeout: 10_000 });

// Save the dashboard
// Save the dashboard and wait for it to persist
await page.getByRole("button", { name: /save/i }).click();
await page.waitForTimeout(1_000);
await expect(page.getByRole("button", { name: /save/i })).toBeEnabled({
timeout: 10_000,
});

// Reopen the widget editor
const widgetCard = page.locator("[data-testid='widget-card']").first();
Expand Down
7 changes: 4 additions & 3 deletions app/e2e/widget-lab.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -575,10 +575,11 @@
await mainDialog.getByRole("button", { name: "Add Widget" }).click();
await expect(mainDialog).not.toBeVisible();

// Save dashboard
// Save dashboard and wait for it to persist
await page.getByRole("button", { name: "Save" }).click();
// eslint-disable-next-line playwright/no-wait-for-timeout
await page.waitForTimeout(1_000);
await expect(page.getByRole("button", { name: "Save" })).toBeEnabled({
timeout: 10_000,
});

// 3. Edit the template in Widget Lab — change its name
await page.goto("/widget-lab");
Expand All @@ -603,7 +604,7 @@
await page.goto(`/${dashId}`);
await expect(
page.locator("[data-testid='widget-card']").first(),
).toBeVisible({ timeout: 15_000 });

Check failure on line 607 in app/e2e/widget-lab.spec.ts

View workflow job for this annotation

GitHub Actions / E2E (shard 5/5)

[chromium] › e2e/widget-lab.spec.ts:516:9 › Widget Lab › Widget Lab editor — create and edit templates › editing a template does not affect widgets already on dashboards

1) [chromium] › e2e/widget-lab.spec.ts:516:9 › Widget Lab › Widget Lab editor — create and edit templates › editing a template does not affect widgets already on dashboards Error: expect(locator).toBeVisible() failed Locator: locator('[data-testid=\'widget-card\']').first() Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for locator('[data-testid=\'widget-card\']').first() 605 | await expect( 606 | page.locator("[data-testid='widget-card']").first(), > 607 | ).toBeVisible({ timeout: 15_000 }); | ^ 608 | 609 | // Widget should render (canvas for bar chart) — proving the dashboard copy is independent 610 | await expect( at /home/runner/work/neoboard/neoboard/app/e2e/widget-lab.spec.ts:607:11

// Widget should render (canvas for bar chart) — proving the dashboard copy is independent
await expect(
Expand Down
4 changes: 2 additions & 2 deletions app/src/app/(auth)/login/__tests__/page.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ describe("LoginPage", () => {
mockFetchBootstrapStatus(true);
mockSignIn.mockResolvedValue({ error: "CredentialsSignin" });

const user = userEvent.setup();
const user = userEvent.setup({ delay: null });
render(<LoginPage />);

const emailInput = screen.getByLabelText("Email");
Expand All @@ -210,7 +210,7 @@ describe("LoginPage", () => {
mockFetchBootstrapStatus(true);
mockSignIn.mockResolvedValue({ error: null });

const user = userEvent.setup();
const user = userEvent.setup({ delay: null });
render(<LoginPage />);

const emailInput = screen.getByLabelText("Email");
Expand Down
Loading
Loading