diff --git a/src/frontend/playwright.config.ts b/src/frontend/playwright.config.ts index 5af71db80..93f626569 100644 --- a/src/frontend/playwright.config.ts +++ b/src/frontend/playwright.config.ts @@ -21,7 +21,7 @@ export default defineConfig({ /* Retry on CI only */ retries: process.env.CI ? 2 : 0, /* Opt out of parallel tests on CI. */ - workers: 1, + workers: 3, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ timeout: 120 * 1000, // reporter: [ diff --git a/src/frontend/tests/end-to-end/basicExamples.spec.ts b/src/frontend/tests/end-to-end/basicExamples.spec.ts index c5f80c362..9984ce931 100644 --- a/src/frontend/tests/end-to-end/basicExamples.spec.ts +++ b/src/frontend/tests/end-to-end/basicExamples.spec.ts @@ -24,6 +24,10 @@ test("Basic Prompting (Hello, World)", async ({ page }) => { await page.getByRole("heading", { name: "Basic Prompting" }).click(); await page.waitForTimeout(1000); + await page.waitForSelector('[title="fit view"]', { + timeout: 100000, + }); + await page.getByTitle("fit view").click(); await page.getByTitle("zoom out").click(); await page.getByTitle("zoom out").click(); @@ -283,6 +287,9 @@ test("Blog Writer", async ({ page }) => { await page.getByTestId("button_run_chat output").click(); await page.waitForTimeout(5000); + + await page.waitForSelector("text=built successfully", { timeout: 30000 }); + await page.getByText("built successfully").last().click({ timeout: 30000, }); diff --git a/src/frontend/tests/end-to-end/chatInputOutput.spec.ts b/src/frontend/tests/end-to-end/chatInputOutput.spec.ts index e1adf3d88..abd059cab 100644 --- a/src/frontend/tests/end-to-end/chatInputOutput.spec.ts +++ b/src/frontend/tests/end-to-end/chatInputOutput.spec.ts @@ -28,7 +28,11 @@ test("chat_io_teste", async ({ page }) => { ); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); + await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("chat output"); diff --git a/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts b/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts index 044065d18..1dc7ca9ad 100644 --- a/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts +++ b/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts @@ -23,7 +23,11 @@ test("CodeAreaModalComponent", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); + await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("python function"); diff --git a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts index 9e3fafa36..e730719cc 100644 --- a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts +++ b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts @@ -22,8 +22,9 @@ test("dropDownComponent", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); - + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("amazon"); diff --git a/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts b/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts index 1b6f5b6e7..5d8976832 100644 --- a/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts +++ b/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts @@ -23,7 +23,9 @@ test("should be able to upload a file", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); diff --git a/src/frontend/tests/end-to-end/filterEdge.spec.ts b/src/frontend/tests/end-to-end/filterEdge.spec.ts index 77bef251d..e268e032b 100644 --- a/src/frontend/tests/end-to-end/filterEdge.spec.ts +++ b/src/frontend/tests/end-to-end/filterEdge.spec.ts @@ -21,7 +21,9 @@ test("LLMChain - Tooltip", async ({ page }) => { } await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); @@ -168,12 +170,13 @@ test("LLMChain - Filter", async ({ page }) => { } await page.waitForTimeout(1000); - await page.getByTestId( - "input-list-plus-btn-edit_metadata_indexing_include-2", - ); - await page.getByTestId("blank-flow").click(); await page.waitForTimeout(3000); + + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); + await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("llmchain"); @@ -196,10 +199,8 @@ test("LLMChain - Filter", async ({ page }) => { ) .click(); - await expect(page.getByTestId("disclosure-models")).toBeVisible(); - await expect( - page.getByTestId("modelsGoogle Generative AI").first(), - ).toBeVisible(); + await expect(page.getByTestId("disclosure-agents")).toBeVisible(); + await expect(page.getByTestId("chainsLLMChain").first()).toBeVisible(); await expect( page.getByTestId("langchain_utilitiesSearchApi").first(), diff --git a/src/frontend/tests/end-to-end/floatComponent.spec.ts b/src/frontend/tests/end-to-end/floatComponent.spec.ts index 126863a6b..f8b0bfa6b 100644 --- a/src/frontend/tests/end-to-end/floatComponent.spec.ts +++ b/src/frontend/tests/end-to-end/floatComponent.spec.ts @@ -22,7 +22,9 @@ test("FloatComponent", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("ollama"); diff --git a/src/frontend/tests/end-to-end/flowPage.spec.ts b/src/frontend/tests/end-to-end/flowPage.spec.ts index 4cae45bf2..bc50f52de 100644 --- a/src/frontend/tests/end-to-end/flowPage.spec.ts +++ b/src/frontend/tests/end-to-end/flowPage.spec.ts @@ -22,7 +22,9 @@ test.describe("Flow Page tests", () => { } await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("custom"); diff --git a/src/frontend/tests/end-to-end/folders.spec.ts b/src/frontend/tests/end-to-end/folders.spec.ts index d049b39f9..3e64ac94b 100644 --- a/src/frontend/tests/end-to-end/folders.spec.ts +++ b/src/frontend/tests/end-to-end/folders.spec.ts @@ -22,6 +22,10 @@ test("CRUD folders", async ({ page }) => { } await page.getByRole("heading", { name: "Basic Prompting" }).click(); + await page.waitForSelector('[data-testid="icon-ChevronLeft"]', { + timeout: 100000, + }); + await page.getByTestId("icon-ChevronLeft").first().click(); await page.getByText("My Collection").nth(2).isVisible(); @@ -35,9 +39,16 @@ test("CRUD folders", async ({ page }) => { await page.getByText("New Folder").last().isVisible(); await page.waitForTimeout(1000); await page.getByText("New Folder").last().dblclick(); - await page.getByTestId("input-folder").fill("new folder test name"); - await page.keyboard.press("Enter"); - await page.getByText("new folder test name").last().isVisible(); + + const element = await page.getByTestId("input-folder"); + await element.fill("new folder test name"); + + await page.getByText("My Projects").last().click(); + + await page.getByText("new folder test name").last().waitFor({ + state: "visible", + timeout: 30000, + }); await page .getByText("new folder test name") diff --git a/src/frontend/tests/end-to-end/generalBugs.spec.ts b/src/frontend/tests/end-to-end/generalBugs.spec.ts index a0e435fd5..ef0bbbb2f 100644 --- a/src/frontend/tests/end-to-end/generalBugs.spec.ts +++ b/src/frontend/tests/end-to-end/generalBugs.spec.ts @@ -22,7 +22,9 @@ test("should interact with api request", async ({ page }) => { modalCount = await page.getByTestId("modal-title")?.count(); } await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(1000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("api request"); diff --git a/src/frontend/tests/end-to-end/globalVariables.spec.ts b/src/frontend/tests/end-to-end/globalVariables.spec.ts index 64af7fe28..f213dfcec 100644 --- a/src/frontend/tests/end-to-end/globalVariables.spec.ts +++ b/src/frontend/tests/end-to-end/globalVariables.spec.ts @@ -22,7 +22,9 @@ test("GlobalVariables", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("openai"); diff --git a/src/frontend/tests/end-to-end/inputComponent.spec.ts b/src/frontend/tests/end-to-end/inputComponent.spec.ts index 99bf207cf..15cf2a879 100644 --- a/src/frontend/tests/end-to-end/inputComponent.spec.ts +++ b/src/frontend/tests/end-to-end/inputComponent.spec.ts @@ -22,7 +22,9 @@ test("InputComponent", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("Chroma"); diff --git a/src/frontend/tests/end-to-end/inputListComponent.spec.ts b/src/frontend/tests/end-to-end/inputListComponent.spec.ts index fa91b685f..6555621b7 100644 --- a/src/frontend/tests/end-to-end/inputListComponent.spec.ts +++ b/src/frontend/tests/end-to-end/inputListComponent.spec.ts @@ -21,7 +21,9 @@ test("InputListComponent", async ({ page }) => { } await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("url"); diff --git a/src/frontend/tests/end-to-end/intComponent.spec.ts b/src/frontend/tests/end-to-end/intComponent.spec.ts index 30522d397..b817a243b 100644 --- a/src/frontend/tests/end-to-end/intComponent.spec.ts +++ b/src/frontend/tests/end-to-end/intComponent.spec.ts @@ -22,7 +22,9 @@ test("IntComponent", async ({ page }) => { await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("openai"); diff --git a/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts b/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts index 42b8744d1..6ba57947d 100644 --- a/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts +++ b/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts @@ -2,13 +2,6 @@ import { expect, test } from "@playwright/test"; import uaParser from "ua-parser-js"; test("LangflowShortcuts", async ({ page }) => { await page.goto("/"); - const getUA = await page.evaluate(() => navigator.userAgent); - const userAgentInfo = uaParser(getUA); - let control = "Control"; - - if (userAgentInfo.os.name.includes("Mac")) { - control = "Meta"; - } await page.waitForTimeout(1000); @@ -28,8 +21,18 @@ test("LangflowShortcuts", async ({ page }) => { modalCount = await page.getByTestId("modal-title")?.count(); } + const getUA = await page.evaluate(() => navigator.userAgent); + const userAgentInfo = uaParser(getUA); + let control = "Control"; + + if (userAgentInfo.os.name.includes("Mac")) { + control = "Meta"; + } + await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("ollama"); diff --git a/src/frontend/tests/end-to-end/nestedComponent.spec.ts b/src/frontend/tests/end-to-end/nestedComponent.spec.ts index a00e2f9b3..03babe4fb 100644 --- a/src/frontend/tests/end-to-end/nestedComponent.spec.ts +++ b/src/frontend/tests/end-to-end/nestedComponent.spec.ts @@ -21,7 +21,9 @@ test("NestedComponent", async ({ page }) => { } await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("pinecone"); diff --git a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts index 74bc44480..046739469 100644 --- a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts +++ b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts @@ -21,7 +21,9 @@ test("PromptTemplateComponent", async ({ page }) => { } await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("prompt"); diff --git a/src/frontend/tests/end-to-end/saveComponents.spec.ts b/src/frontend/tests/end-to-end/saveComponents.spec.ts index 17be7622b..584a89d34 100644 --- a/src/frontend/tests/end-to-end/saveComponents.spec.ts +++ b/src/frontend/tests/end-to-end/saveComponents.spec.ts @@ -93,8 +93,9 @@ test.describe("save component tests", () => { if (replaceButton) { await page.getByTestId("replace-button").click(); } - await page.waitForTimeout(3000); - + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("group"); diff --git a/src/frontend/tests/end-to-end/tweaks_test.spec.ts b/src/frontend/tests/end-to-end/tweaks_test.spec.ts index bc4ab7c56..08b9565dc 100644 --- a/src/frontend/tests/end-to-end/tweaks_test.spec.ts +++ b/src/frontend/tests/end-to-end/tweaks_test.spec.ts @@ -82,7 +82,9 @@ test("check if tweaks are updating when someothing on the flow changes", async ( await page.waitForTimeout(1000); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(3000); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 100000, + }); await page.getByTestId("extended-disclosure").click(); await page.getByPlaceholder("Search").click(); await page.getByPlaceholder("Search").fill("Chroma");