* Make self-host tests CI-safe * Await cloud db teardown * Give local e2e boots more headroom * Keep main CI runs alive * Cache CI dependencies and image layers * Wait for recorded introspection requests in graphql plugin tests * Size self-host test budget for loaded runners * Probe test http servers for readiness before use * Die on recorder wait timeout instead of typing a string error * Type the recorder wait timeout as a tagged error * Update e2e locators for the integration copy renames * Keep stale data rendered while a refresh is waiting * Guard create-org input against hydration clobbering * Match the new sign-in heading in the selfhost callback test
Showing the changes to e2e/cloud (1 of 27 files). Show all
Unified · Split
| @@ -56,7 +56,17 @@ scenario( · 55 unmodified lines | ||
| 56 | 56 | }); |
| 57 | 57 | |
| 58 | 58 | await step("Create the first org → canonical dashboard at /<slug>", async () => { |
| 59 | − await page.getByPlaceholder("Northwind Labs").fill("Flow Test Org"); | |
| 59 | + const orgName = "Flow Test Org"; | |
| 60 | + const orgNameInput = page.getByPlaceholder("Northwind Labs"); | |
| 61 | + await page.waitForLoadState("networkidle"); | |
| 62 | + await orgNameInput.fill(orgName); | |
| 63 | + await page.waitForTimeout(250); | |
| 64 | + if ((await orgNameInput.inputValue()) !== orgName) { | |
| 65 | + await orgNameInput.fill(orgName); | |
| 66 | + } | |
| 67 | + expect(await orgNameInput.inputValue(), "org name survives create-org hydration").toBe( | |
| 68 | + orgName, | |
| 69 | + ); | |
| 60 | 70 | await page.getByRole("button", { name: "Create organization" }).click(); |
| 61 | 71 | await page.getByText("Connect your MCP client").waitFor({ timeout: 30_000 }); |
| 62 | 72 | await page.getByRole("button", { name: "Continue to app" }).click(); |