tests: improve tests removing unnecessary timeouts and decreasing some (#3437)

* feat: Add data-testid attribute to main page title

The code changes add a `data-testid` attribute to the main page title in the `PageLayout` component. This attribute can be used for testing purposes.

* refactor: Update page load timeout in end-to-end test

Reduce the page load timeout in the end-to-end test for Basic Prompting to improve test efficiency. The timeout is decreased from 2000ms to 1000ms.

* refactor: Decrease page load timeout in end-to-end test

Reduce the page load timeout in the end-to-end test for Basic Prompting to improve test efficiency. The timeout is decreased from 2000ms to 1000ms.

* refactor: Decrease page load timeout in end-to-end test

* refactor: Update page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

* refactor: Decrease page load timeout in end-to-end test

Reduce the page load timeout in the end-to-end test for Basic Prompting to improve test efficiency. The timeout is decreased from 2000ms to 1000ms.

* improve tests decreasing and removing time outs
This commit is contained in:
Cristhian Zanforlin Lousa 2024-08-19 18:33:40 -03:00 • committed by GitHub
commit 4c496496e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
57 changed files with 469 additions and 127 deletions

View file

@ -20,7 +20,10 @@ export default function PageLayout({
<div className="flex h-full w-full flex-col justify-between overflow-auto bg-background px-16">
<div className="flex w-full items-center justify-between gap-4 space-y-0.5 py-8 pb-2">
<div className="flex w-full flex-col">
<h2 className="text-2xl font-bold tracking-tight">
<h2
className="text-2xl font-bold tracking-tight"
data-testid="mainpage_title"
>
{title}
{betaIcon && <span className="store-beta-icon">BETA</span>}
</h2>

View file

@ -13,7 +13,13 @@ test("Basic Prompting (Hello, World)", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -57,7 +63,7 @@ test("Basic Prompting (Hello, World)", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -13,7 +13,13 @@ test("Blog Writer", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -54,7 +60,7 @@ test("Blog Writer", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page
.getByTestId("inputlist_str_urls_0")
.nth(0)

View file

@ -18,7 +18,13 @@ test("Complex Agent", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -60,7 +66,7 @@ test("Complex Agent", async ({ page }) => {
.last()
.fill(process.env.BRAVE_SEARCH_API_KEY ?? "");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
let openAiLlms = await page.getByText("OpenAI", { exact: true }).count();
@ -85,7 +91,7 @@ test("Complex Agent", async ({ page }) => {
await page.getByText("Playground", { exact: true }).click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
expect(
page.getByText("Could you search info about AAPL?", { exact: true }).last(),

View file

@ -13,7 +13,13 @@ test("Document QA", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -54,14 +60,14 @@ test("Document QA", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
const fileChooserPromise = page.waitForEvent("filechooser");
await page.getByTestId("icon-FileSearch2").click();
const fileChooser = await fileChooserPromise;
await fileChooser.setFiles(path.join(__dirname, "/assets/test_file.txt"));
await page.getByText("test_file.txt").isVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -18,7 +18,13 @@ test("Hierarchical Tasks Agent", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -68,19 +74,19 @@ test("Hierarchical Tasks Agent", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").first().click();
await page.getByTestId("gpt-4o-1-option").first().click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("dropdown_str_model_name").last().click();
await page.getByTestId("gpt-4o-1-option").last().click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page
.getByTestId("popover-anchor-input-api_key")
.last()
.fill(process.env.BRAVE_SEARCH_API_KEY ?? "");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 60000 * 3 });
@ -91,9 +97,7 @@ test("Hierarchical Tasks Agent", async ({ page }) => {
await page.getByText("Playground", { exact: true }).click();
await page.waitForTimeout(2000);
expect(page.getByText("What is Langflow?", { exact: true })).toBeVisible();
await page.waitForTimeout(3000);
const textContents = await page
.getByTestId("div-chat-message")

View file

@ -13,7 +13,13 @@ test("Memory Chatbot", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -56,7 +62,7 @@ test("Memory Chatbot", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -18,7 +18,13 @@ test("Sequential Tasks Agent", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -63,14 +69,14 @@ test("Sequential Tasks Agent", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page
.getByTestId("popover-anchor-input-api_key")
.last()
.fill(process.env.BRAVE_SEARCH_API_KEY ?? "");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 60000 * 3 });
@ -81,7 +87,7 @@ test("Sequential Tasks Agent", async ({ page }) => {
await page.getByText("Playground", { exact: true }).click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
expect(
page

View file

@ -18,7 +18,13 @@ test("Vector Store RAG", async ({ page }) => {
);
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -93,7 +99,7 @@ test("Vector Store RAG", async ({ page }) => {
await fileChooser.setFiles(path.join(__dirname, "/assets/test_file.txt"));
await page.getByText("test_file.txt").isVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_astra db").first().click();
await page.waitForSelector("text=built successfully", { timeout: 60000 * 2 });

View file

@ -2,7 +2,13 @@ import { test } from "@playwright/test";
test("select and delete all", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -38,7 +44,13 @@ test("select and delete all", async ({ page }) => {
test("select and delete a flow", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -73,7 +85,13 @@ test("select and delete a flow", async ({ page }) => {
test("search flows", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -123,7 +141,13 @@ test("search flows", async ({ page }) => {
test("search components", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -184,6 +208,12 @@ test("search components", async ({ page }) => {
await page.getByTestId("icon-ChevronLeft").first().click();
const exitButton = await page.getByText("Exit", { exact: true }).count();
if (exitButton > 0) {
await page.getByText("Exit", { exact: true }).click();
}
await page
.getByText("Components", {
exact: true,

View file

@ -13,8 +13,14 @@ test("should create a flow with decision", async ({ page }) => {
}
await page.goto("/");
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -119,7 +119,7 @@ test("user must see on handle hover a tooltip with possibility connections", asy
await expect(
page.getByTestId("available-input-models").first(),
).toBeVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("icon-Search").click();
@ -142,7 +142,7 @@ test("user must see on handle hover a tooltip with possibility connections", asy
}
await visibleElementHandle.hover().then(async () => {
await page.waitForTimeout(2000);
await page.waitForTimeout(2500);
await expect(
page.getByTestId("available-input-retrievers").first(),

View file

@ -4,7 +4,13 @@ test("user must see on handle click the possibility connections - LLMChain", asy
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -34,7 +40,7 @@ test("user must see on handle click the possibility connections - LLMChain", asy
await page.getByPlaceholder("Search").click();
await page.getByPlaceholder("Search").fill("api request");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page
.getByTestId("dataAPI Request")
.dragTo(page.locator('//*[@id="react-flow-id"]'));

View file

@ -3,7 +3,13 @@ import { readFileSync } from "fs";
test("CRUD folders", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -107,7 +113,13 @@ test("add folder by drag and drop", async ({ page }) => {
test("change flow folder", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -13,7 +13,13 @@ test("user must be able to freeze a path", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -64,11 +70,11 @@ test("user must be able to freeze a path", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("float-input").fill("1.0");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
@ -91,7 +97,7 @@ test("user must be able to freeze a path", async ({ page }) => {
await page.getByTestId("float-input").fill("1.2");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -4,7 +4,13 @@ import path from "path";
test("user must be able to freeze a component", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -213,7 +219,7 @@ test("user must be able to freeze a component", async ({ page }) => {
timeout: 15000,
});
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("output-inspection-message").first().click();
@ -236,7 +242,7 @@ test("user must be able to freeze a component", async ({ page }) => {
timeout: 15000,
});
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("output-inspection-message").first().click();
@ -280,7 +286,7 @@ test("user must be able to freeze a component", async ({ page }) => {
timeout: 15000,
});
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("output-inspection-message").first().click();
@ -315,7 +321,7 @@ test("user must be able to freeze a component", async ({ page }) => {
timeout: 15000,
});
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("output-inspection-message").first().click();

View file

@ -10,7 +10,13 @@ test("should be able to move flow from folder, rename it and be displayed on cor
await page.goto("/");
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -4,7 +4,13 @@ test("user must be able to save or delete a global variable", async ({
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -78,7 +84,7 @@ test("user must be able to save or delete a global variable", async ({
await page.getByText("Save Variable", { exact: true }).click();
expect(page.getByText(credentialName, { exact: true })).not.toBeNull();
await page.getByText(credentialName, { exact: true }).isVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page
.getByText(credentialName, { exact: true })

View file

@ -24,7 +24,7 @@ test.describe("group node test", () => {
.getByRole("heading", { name: "Basic Prompting" })
.first()
.click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByLabel("fit view").first().click();
await page.getByTestId("title-OpenAI").click();

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("KeypairListComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -13,7 +13,13 @@ test("should able to see and interact with logs", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -33,7 +39,7 @@ test("should able to see and interact with logs", async ({ page }) => {
}
await page.getByRole("heading", { name: "Basic Prompting" }).click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
let outdatedComponents = await page.getByTestId("icon-AlertTriangle").count();
@ -55,7 +61,7 @@ test("should able to see and interact with logs", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").first().click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("NestedComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -59,6 +59,7 @@ test.describe("save component tests", () => {
if (elementCount > 0) {
expect(true).toBeTruthy();
}
await page
.locator('//*[@id="react-flow-id"]/div[1]/div[2]/button[3]')
.click();
@ -73,6 +74,11 @@ test.describe("save component tests", () => {
await page.getByRole("button", { name: "Group" }).click();
await page
.locator('//*[@id="react-flow-id"]')
.first()
.click({ button: "left" });
let textArea = page.getByTestId("div-textarea-description");
let elementCountText = await textArea?.count();
if (elementCountText > 0) {
@ -90,21 +96,23 @@ test.describe("save component tests", () => {
await page.getByTestId("icon-SaveAll").click();
await page.waitForTimeout(1000);
const replaceButton = await page.getByTestId("replace-button").isVisible();
if (replaceButton) {
await page.getByTestId("replace-button").click();
}
await page.waitForSelector('[data-testid="extended-disclosure"]', {
timeout: 30000,
});
await page.getByTestId("extended-disclosure").click();
await page.getByPlaceholder("Search").click();
await page.getByPlaceholder("Search").fill("group");
await page.waitForTimeout(1000);
await page
.getByTestId("saved_componentsGroup")
.getByText("Group")
.first()
.dragTo(page.locator('//*[@id="react-flow-id"]'));
await page.mouse.up();

View file

@ -26,7 +26,7 @@ test("should filter by tag", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.getByTestId("button-store").click();
@ -76,11 +76,11 @@ test("should share component with share button", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.getByText("My Collection").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
let modalCount = 0;
try {

View file

@ -13,7 +13,13 @@ test("TextInputOutputComponent", async ({ page }) => {
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -196,7 +202,7 @@ test("TextInputOutputComponent", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Playground", { exact: true }).click();
await page.getByText("Run Flow", { exact: true }).click();

View file

@ -19,7 +19,7 @@ test("curl_api_generation", async ({ page, context }) => {
}
await page.getByRole("heading", { name: "Basic Prompting" }).click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("API", { exact: true }).click();
await page.getByRole("tab", { name: "cURL" }).click();
await page.getByTestId("icon-Copy").click();
@ -58,7 +58,13 @@ test("check if tweaks are updating when someothing on the flow changes", async (
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -4,7 +4,14 @@ test("user should be able to download a flow or a component", async ({
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -37,7 +44,7 @@ test("user should be able to download a flow or a component", async ({
await page.getByTestId("more-options-modal").click();
await page.getByTestId("icon-SaveAll").first().click();
await page.waitForTimeout(3000);
await page.waitForTimeout(1000);
if (await page.getByTestId("replace-button").isVisible()) {
await page.getByTestId("replace-button").click();
@ -47,6 +54,12 @@ test("user should be able to download a flow or a component", async ({
timeout: 100000,
});
const exitButton = await page.getByText("Exit", { exact: true }).count();
if (exitButton > 0) {
await page.getByText("Exit", { exact: true }).click();
}
await page.getByTestId("icon-ChevronLeft").last().click();
await page.getByRole("checkbox").nth(1).click();
await page.getByTestId("icon-FileDown").last().click();
@ -70,7 +83,13 @@ test("user should be able to upload a flow or a component", async ({
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -89,7 +108,13 @@ test("user should be able to duplicate a flow or a component", async ({
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -121,7 +146,7 @@ test("user should be able to duplicate a flow or a component", async ({
await page.getByTestId("more-options-modal").click();
await page.getByTestId("icon-SaveAll").first().click();
await page.waitForTimeout(3000);
await page.waitForTimeout(1000);
if (await page.getByTestId("replace-button").isVisible()) {
await page.getByTestId("replace-button").click();
@ -130,6 +155,13 @@ test("user should be able to duplicate a flow or a component", async ({
await page.waitForSelector('[data-testid="icon-ChevronLeft"]', {
timeout: 100000,
});
const exitButton = await page.getByText("Exit", { exact: true }).count();
if (exitButton > 0) {
await page.getByText("Exit", { exact: true }).click();
}
await page.getByTestId("icon-ChevronLeft").last().click();
await page.getByRole("checkbox").nth(1).click();

View file

@ -20,7 +20,13 @@ test("user should be able to manually save a flow when the auto_save is off", as
await page.goto("/");
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -3,7 +3,13 @@ import { expect, test } from "@playwright/test";
test("chat_io_teste", async ({ page }) => {
await page.goto("/");
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -58,7 +58,7 @@ test("user must be able to see output inspection", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").last().click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -57,7 +57,7 @@ test("user must interact with chat with Input/Output", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Playground", { exact: true }).click();
await page.waitForSelector('[data-testid="input-chat-playground"]', {

View file

@ -2,7 +2,13 @@ import { test } from "@playwright/test";
test("CodeAreaModalComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -18,7 +18,7 @@ test("curl_api_generation", async ({ page, context }) => {
modalCount = await page.getByTestId("modal-title")?.count();
}
await page.getByRole("heading", { name: "Basic Prompting" }).click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("API", { exact: true }).click();
await page.getByRole("tab", { name: "cURL" }).click();
await page.getByTestId("icon-Copy").last().click();

View file

@ -26,10 +26,10 @@ test("should delete a component", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Store").nth(0).click();
await page.getByTestId("install-Basic RAG").click();
await page.waitForTimeout(5000);

View file

@ -25,7 +25,7 @@ test("should delete a flow", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.waitForSelector("text=Store", { timeout: 30000 });

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("dropDownComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -3,7 +3,13 @@ import path from "path";
test("should be able to upload a file", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -4,7 +4,13 @@ test("user must see on handle click the possibility connections - RetrievalQA",
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("FloatComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -42,10 +48,10 @@ test("FloatComponent", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.locator('//*[@id="float-input"]').click();
await page.locator('//*[@id="float-input"]').fill("");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.locator('//*[@id="float-input"]').fill("3");
let value = await page.locator('//*[@id="float-input"]').inputValue();
@ -54,10 +60,10 @@ test("FloatComponent", async ({ page }) => {
expect(false).toBeTruthy();
}
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.locator('//*[@id="float-input"]').click();
await page.locator('//*[@id="float-input"]').fill("");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.locator('//*[@id="float-input"]').fill("-3");
value = await page.locator('//*[@id="float-input"]').inputValue();

View file

@ -3,7 +3,13 @@ import { test } from "@playwright/test";
test.describe("Flow Page tests", () => {
test("save", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("flowSettings", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -55,7 +55,7 @@ test("erase button should clear the chat messages", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Playground", { exact: true }).click();
await page.waitForSelector('[data-testid="input-chat-playground"]', {
@ -88,7 +88,7 @@ test("erase button should clear the chat messages", async ({ page }) => {
await page.getByText("Start a conversation").isVisible();
await page.getByText("Langflow Chat").isVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByPlaceholder("Send a message...").fill("My name is John");
await page.waitForSelector('[data-testid="icon-LucideSend"]', {

View file

@ -11,7 +11,13 @@ test("should delete rows from table message", async ({ page }) => {
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -55,7 +61,7 @@ test("should delete rows from table message", async ({ page }) => {
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });

View file

@ -4,7 +4,13 @@ test("user should be able to use ComposIO without getting api_key error", async
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -51,7 +57,13 @@ test("user should be able to use ComposIO without getting api_key error", async
test("user should be able to use connect tools", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -11,7 +11,13 @@ test("should use webhook component on API", async ({ page }) => {
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -55,7 +61,7 @@ test("should use webhook component on API", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("API", { exact: true }).click();
await page.getByText("Webhook cURL", { exact: true }).click();

View file

@ -14,7 +14,13 @@ test("should copy code from playground modal", async ({ page }) => {
await page.goto("/");
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -200,7 +206,13 @@ test("should copy code from playground modal", async ({ page }) => {
test("playground button should be enabled or disabled", async ({ page }) => {
await page.goto("/");
await page.locator("span").filter({ hasText: "My Collection" }).isVisible();
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
@ -227,14 +239,14 @@ test("playground button should be enabled or disabled", async ({ page }) => {
timeout: 30000,
});
await page.getByTestId("playground-btn-flow").click({ force: true });
expect(await page.getByTestId("playground-btn-flow").isDisabled());
expect(await page.getByText("Langflow Chat").isHidden());
await page.getByPlaceholder("Search").click();
await page.getByPlaceholder("Search").fill("chat output");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page
.locator('//*[@id="outputsChat Output"]')
@ -245,7 +257,7 @@ test("playground button should be enabled or disabled", async ({ page }) => {
timeout: 100000,
});
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("playground-btn-flow-io").click({ force: true });

View file

@ -2,7 +2,13 @@ import { test } from "@playwright/test";
test("should interact with api request", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("InputComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("IntComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("PromptTemplateComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,6 +2,13 @@ import { expect, test } from "@playwright/test";
test("python_api_generation", async ({ page, context }) => {
await page.goto("/");
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {
const modalTitleElement = await page?.getByTestId("modal-title");
@ -18,7 +25,7 @@ test("python_api_generation", async ({ page, context }) => {
modalCount = await page.getByTestId("modal-title")?.count();
}
await page.getByRole("heading", { name: "Basic Prompting" }).click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("API", { exact: true }).click();
await page.getByRole("tab", { name: "Python API" }).click();
await page.getByTestId("icon-Copy").click();

View file

@ -13,7 +13,7 @@ test("should not have an API key", async ({ page }) => {
await page.waitForTimeout(1000);
await page.getByTestId("button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("API Key Error").isVisible();
});

View file

@ -46,10 +46,10 @@ test("should like and add components and flows", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("button-store").click();
await page.waitForTimeout(5000);
@ -74,7 +74,7 @@ test("should like and add components and flows", async ({ page }) => {
.innerText();
await page.getByTestId("install-Website Content QA").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Flow Installed Successfully").isVisible();
await page.waitForTimeout(5000);
@ -87,7 +87,7 @@ test("should like and add components and flows", async ({ page }) => {
}
await page.getByTestId("install-Basic RAG").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Component Installed Successfully").isVisible();
await page.waitForTimeout(5000);
@ -122,7 +122,7 @@ test("should find a searched Component on Store", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.waitForTimeout(1000);

View file

@ -26,7 +26,7 @@ test("should order the visualization", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.waitForTimeout(1000);
@ -37,7 +37,7 @@ test("should order the visualization", async ({ page }) => {
await page.getByText("Basic RAG").isVisible();
await page.getByTestId("select-order-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Alphabetical").click();
await page.getByText("Album Cover Builder").isVisible();
@ -72,7 +72,7 @@ test("should filter by type", async ({ page }) => {
await page.getByTestId("api-key-save-button-store").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Success! Your API Key has been saved.").isVisible();
await page.getByTestId("button-store").click();
@ -99,9 +99,9 @@ test("should filter by type", async ({ page }) => {
await page.waitForTimeout(8000);
let iconGroupAllCount = await page.getByTestId("icon-Group")?.count();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
let toyBrickAllCount = await page.getByTestId("icon-ToyBrick")?.count();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
if (iconGroupAllCount === 0 || toyBrickAllCount === 0) {
expect(false).toBe(true);

View file

@ -2,7 +2,13 @@ import { expect, test } from "@playwright/test";
test("ToggleComponent", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -4,7 +4,13 @@ test("user should be able to see multiple edges and interact with them", async (
page,
}) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
let modalCount = 0;
try {

View file

@ -2,7 +2,13 @@ import { test } from "@playwright/test";
test("should see general profile gradient", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
await page.getByTestId("user-profile-settings").click();
await page.waitForTimeout(1000);
@ -17,7 +23,7 @@ test("should interact with global variables", async ({ page }) => {
const randomName = Math.random().toString(36).substring(2);
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("user-profile-settings").click();
await page.getByText("Settings").click();
await page.getByText("Global Variables").click();
@ -29,12 +35,12 @@ test("should interact with global variables", async ({ page }) => {
.fill(randomName);
await page.getByTestId("popover-anchor-type-global-variables").click();
await page.getByPlaceholder("Search options...").fill("Generic");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByText("Generic", { exact: true }).last().isVisible();
await page.getByText("Generic", { exact: true }).last().click();
await page.getByTestId("popover-anchor-type-global-variables").click();
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByPlaceholder("Search options...").fill("Generic");
await page.getByText("Generic", { exact: true }).last().isVisible();
await page.getByText("Generic", { exact: true }).last().click();
@ -86,7 +92,13 @@ test("should interact with global variables", async ({ page }) => {
test("should see shortcuts", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForSelector('[data-testid="mainpage_title"]', {
timeout: 30000,
});
await page.waitForSelector('[id="new-project-btn"]', {
timeout: 30000,
});
await page.getByTestId("user-profile-settings").click();
await page.waitForTimeout(1000);
@ -119,10 +131,10 @@ test("should see shortcuts", async ({ page }) => {
test("should interact with API Keys", async ({ page }) => {
await page.goto("/");
await page.waitForTimeout(2000);
await page.waitForTimeout(1000);
await page.getByTestId("user-profile-settings").click();
await page.getByText("Settings").click();
await page.getByText("Langflow API").click();
await page.getByText("Langflow API").first().click();
await page.getByText("Langflow API", { exact: true }).nth(1).isVisible();
await page.getByText("Add New").click();
await page.getByPlaceholder("Insert a name for your API Key").isVisible();