fix: Enhance Growth UI Layout and Consistency (#7768)

This commit is contained in:
Cristhian Zanforlin Lousa 2025-04-23 19:17:22 -03:00 • committed by GitHub
commit 60de34074b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 260 additions and 323 deletions

View file

@ -80,8 +80,8 @@ withEventDeliveryModes(
const output = await page.getByTestId("div-chat-message").allTextContents();
const outputText = output.join("\n");
expect(outputText.toLowerCase()).toContain("weather");
expect(outputText.toLowerCase()).toContain("budget");
expect(outputText.toLowerCase()).toContain("travel");
expect(outputText.toLowerCase()).toContain("day");
expect(outputText.toLowerCase()).toContain(randomCity.toLowerCase());
expect(outputText.toLowerCase()).toContain(randomCity2.toLowerCase());

View file

@ -37,35 +37,6 @@ withEventDeliveryModes(
await initialGPTsetup(page);
if (process?.env?.ASTRA_DB_API_ENDPOINT?.includes("astra-dev")) {
await page.getByTestId("title-Astra DB").first().click();
await page.getByTestId("code-button-modal").click();
await page.waitForSelector("text=Edit Code", {
timeout: 3000,
});
let cleanCode = await extractAndCleanCode(page);
cleanCode = cleanCode!.replace(
'"pre_delete_collection": self.pre_delete_collection or False,',
'"pre_delete_collection": self.pre_delete_collection or False,\n "environment": "dev",',
);
await page.locator("textarea").last().press(`ControlOrMeta+a`);
await page.keyboard.press("Backspace");
await page.locator("textarea").last().fill(cleanCode);
await page.locator('//*[@id="checkAndSaveBtn"]').click();
await page.waitForSelector('[data-testid="title-Astra DB"]', {
timeout: 3000,
});
await page.getByTestId("title-Astra DB").last().click();
await page.getByTestId("code-button-modal").click();
await page.waitForSelector("text=Edit Code", {
timeout: 3000,
});
await page.locator("textarea").last().press(`ControlOrMeta+a`);
await page.keyboard.press("Backspace");
await page.locator("textarea").last().fill(cleanCode);
await page.locator('//*[@id="checkAndSaveBtn"]').click();
}
await page.waitForSelector('[data-testid="title-Astra DB"]', {
timeout: 3000,
});
@ -263,7 +234,10 @@ withEventDeliveryModes(
path.join(__dirname, "../../assets/test_file.txt"),
);
await page.getByText("test_file.txt").last().isVisible();
await page.waitForTimeout(500);
await page.waitForSelector("text=file uploaded successfully", {
timeout: 10000,
});
await page.waitForTimeout(3000);
await page.getByTestId("select-files-modal-button").click();
await page.getByTestId("button_run_astra db").last().click();
await page.waitForSelector("text=built successfully", {

View file

@ -19,6 +19,8 @@ test(
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
let flowName = await page.getByTestId("input-flow-name").inputValue();
expect(flowName).toBe(randomName);
@ -44,6 +46,8 @@ test(
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
flowName = await page.getByTestId("input-flow-name").inputValue();
expect(flowName).toBe(randomName2);
@ -84,6 +88,8 @@ test(
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
flowName = await page.getByTestId("input-flow-name").inputValue();
expect(flowName).toBe(randomName4);

View file

@ -1,14 +1,15 @@
import { test } from "@playwright/test";
import { awaitBootstrapTest } from "../../utils/await-bootstrap-test";
test("should exists Store", { tag: ["@release"] }, async ({ page }) => {
await page.goto("/");
await awaitBootstrapTest(page, { skipModal: true });
await page.getByTestId("button-store").isVisible();
await page.getByTestId("button-store").isEnabled();
});
test("should not have an API key", { tag: ["@release"] }, async ({ page }) => {
await page.goto("/");
await awaitBootstrapTest(page, { skipModal: true });
await page.getByTestId("button-store").click();

View file

@ -14,7 +14,7 @@ test.skip(
if (!process.env.CI) {
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
await awaitBootstrapTest(page);
await awaitBootstrapTest(page, { skipModal: true });
await page.getByText("Close", { exact: true }).click();
await page.waitForTimeout(1000);
@ -96,7 +96,8 @@ test.skip(
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
await page.goto("/");
await awaitBootstrapTest(page, { skipModal: true });
await page.waitForTimeout(1000);
await page.getByTestId("button-store").click();

View file

@ -1,11 +1,14 @@
import { expect, test } from "@playwright/test";
import * as dotenv from "dotenv";
import path from "path";
import { awaitBootstrapTest } from "../../utils/await-bootstrap-test";
test(
"should order the visualization (requires store API key)",
{ tag: ["@release"] },
async ({ page }) => {
async ({ page, context }) => {
test.skip();
test.skip(
!process?.env?.STORE_API_KEY,
"STORE_API_KEY required to run this test",
@ -15,45 +18,71 @@ test(
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
await page.goto("/");
await awaitBootstrapTest(page, { skipModal: true });
await page.getByTestId("button-store").click();
await page.waitForTimeout(1000);
await page.waitForSelector('[data-testid="button-store"]', {
state: "visible",
timeout: 10000,
});
await page.getByTestId("api-key-button-store").click({
const [newPageStore] = await Promise.all([
context.waitForEvent("page"),
page.getByTestId("button-store").click(),
]);
await newPageStore.waitForTimeout(1000);
await newPageStore.getByTestId("api-key-button-store").click({
timeout: 200000,
});
await page
await newPageStore.getByTestId("sidebar-nav-Langflow Store").click();
await newPageStore
.getByPlaceholder("Insert your API Key")
.fill(process.env.STORE_API_KEY ?? "");
await page.getByTestId("api-key-save-button-store").click();
await newPageStore.getByTestId("api-key-save-button-store").click();
await expect(page.getByText("API key saved successfully")).toBeVisible({
await expect(
newPageStore.getByText("API key saved successfully"),
).toBeVisible({
timeout: 5000,
});
await page.getByTestId("button-store").click();
await newPageStore.getByTestId("back_page_button").click();
await expect(page.getByText("Basic RAG")).toBeVisible({ timeout: 30000 });
await newPageStore.waitForTimeout(1000);
await page.getByTestId("select-order-store").click();
const newPageStore2 = await context.newPage();
await page.getByText("Alphabetical").click();
await newPageStore2.goto("/store");
await page.getByText("Album Cover Builder").isVisible();
await newPageStore2.waitForTimeout(1000);
await page.getByTestId("select-order-store").click();
await page.getByText("Popular").click();
await expect(newPageStore2.getByText("Basic RAG")).toBeVisible({
timeout: 30000,
});
await page.getByText("Basic RAG").isVisible();
await newPageStore2.getByTestId("select-order-store").click();
await newPageStore2.getByText("Alphabetical").click();
await newPageStore2.getByText("Album Cover Builder").isVisible();
await newPageStore2.getByTestId("select-order-store").click();
await newPageStore2.getByText("Popular").click();
await newPageStore2.getByText("Basic RAG").isVisible();
},
);
test(
"should filter by type (requires store API key)",
{ tag: ["@release"] },
async ({ page }) => {
async ({ page, context }) => {
test.skip();
test.skip(
!process?.env?.STORE_API_KEY,
"STORE_API_KEY required to run this test",
@ -61,60 +90,95 @@ test(
if (!process.env.CI) {
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
await page.goto("/");
await awaitBootstrapTest(page, { skipModal: true });
await page.waitForSelector('[data-testid="button-store"]', {
state: "visible",
timeout: 10000,
});
await page.getByTestId("button-store").click();
await page.getByTestId("api-key-button-store").click({
const newPageStore = await context.waitForEvent("page", { timeout: 30000 });
await newPageStore.waitForTimeout(1000);
await newPageStore.getByTestId("api-key-button-store").click({
timeout: 200000,
});
await page
await newPageStore.getByTestId("sidebar-nav-Langflow Store").click();
await newPageStore
.getByPlaceholder("Insert your API Key")
.fill(process.env.STORE_API_KEY ?? "");
await page.getByTestId("api-key-save-button-store").click();
await expect(page.getByText("API key saved successfully")).toBeVisible({
await newPageStore.getByTestId("api-key-save-button-store").click();
await expect(
newPageStore.getByText("API key saved successfully"),
).toBeVisible({
timeout: 5000,
});
await page.getByTestId("button-store").click();
await page.waitForSelector('[data-testid="likes-Website Content QA"]', {
await newPageStore.getByTestId("back_page_button").click();
await newPageStore.waitForTimeout(1000);
const newPageStore2 = await context.newPage();
await newPageStore2.goto("/store");
await newPageStore2.waitForTimeout(1000);
await newPageStore2.waitForSelector(
'[data-testid="likes-Website Content QA"]',
{
timeout: 100000,
},
);
await newPageStore2.getByText("Website Content QA").isVisible();
await newPageStore2.waitForSelector('[data-testid="flows-button-store"]', {
timeout: 100000,
});
await page.getByText("Website Content QA").isVisible();
await page.waitForSelector('[data-testid="flows-button-store"]', {
await newPageStore2.getByTestId("flows-button-store").click();
await newPageStore2.waitForSelector('[data-testid="icon-Group"]', {
timeout: 100000,
});
await page.getByTestId("flows-button-store").click();
await page.waitForSelector('[data-testid="icon-Group"]', {
timeout: 100000,
});
let iconGroup = await page.getByTestId("icon-Group")?.count();
let iconGroup = await newPageStore2.getByTestId("icon-Group")?.count();
expect(iconGroup).not.toBe(0);
await page.getByText("icon-ToyBrick").last().isHidden();
await page.waitForSelector('[data-testid="components-button-store"]', {
timeout: 100000,
});
await page.getByTestId("components-button-store").click();
await expect(page.getByTestId("icon-Group").last()).toBeHidden({
await newPageStore2.getByText("icon-ToyBrick").last().isHidden();
await newPageStore2.waitForSelector(
'[data-testid="components-button-store"]',
{
timeout: 100000,
},
);
await newPageStore2.getByTestId("components-button-store").click();
await expect(newPageStore2.getByTestId("icon-Group").last()).toBeHidden({
timeout: 30000,
});
await page.waitForSelector('[data-testid="icon-ToyBrick"]', {
await newPageStore2.waitForSelector('[data-testid="icon-ToyBrick"]', {
timeout: 100000,
});
let toyBrick = await page.getByTestId("icon-ToyBrick")?.count();
let toyBrick = await newPageStore2.getByTestId("icon-ToyBrick")?.count();
expect(toyBrick).not.toBe(0);
await page.waitForSelector('[data-testid="all-button-store"]', {
await newPageStore2.waitForSelector('[data-testid="all-button-store"]', {
timeout: 100000,
});
await page.getByTestId("all-button-store").click();
await page.waitForSelector('[data-testid="icon-Group"]', {
await newPageStore2.getByTestId("all-button-store").click();
await newPageStore2.waitForSelector('[data-testid="icon-Group"]', {
timeout: 100000,
});
await page.waitForSelector('[data-testid="icon-ToyBrick"]', {
await newPageStore2.waitForSelector('[data-testid="icon-ToyBrick"]', {
timeout: 100000,
});
let iconGroupAllCount = await page.getByTestId("icon-Group")?.count();
await page.waitForTimeout(500);
let toyBrickAllCount = await page.getByTestId("icon-ToyBrick")?.count();
await page.waitForTimeout(500);
let iconGroupAllCount = await newPageStore2
.getByTestId("icon-Group")
?.count();
await newPageStore2.waitForTimeout(500);
let toyBrickAllCount = await newPageStore2
.getByTestId("icon-ToyBrick")
?.count();
await newPageStore2.waitForTimeout(500);
if (iconGroupAllCount === 0 || toyBrickAllCount === 0) {
expect(false).toBe(true);
}