* add-note * notes * vector-store-rag-notes * vector-store-rag-notes * comma * comma * revert * add-notes * another-way * revert * revert * fix * descriptions * lightbulb * deployed-size * size * size * resizing-is-true * targethandle * double * set-components * pin * notes * fix * dont-change-code * cleanup * update example * fix postion on example * fix-descriptions * swap-link * newline-and-lightbulb * another-docs-link * play-button * remove-double * update NODE_FORMAT_ATTRIBUTES to prevent description updates on examples * Update AstraDB documentation link * update documentation on code * ✨ (chatInputOutputUser-shard-0.spec.ts): update the test to click on the last element with the text "Playground" to ensure correct element is clicked * 🐛 (Basic Prompting.spec.ts): fix clicking on "Playground" element by selecting the last occurrence to ensure correct element is clicked * ✨ (Blog Writer.spec.ts): update test to click on the last element with text "Playground" to ensure correct element is clicked on the page * ✨ (Dynamic Agent.spec.ts): update test to click on the last element with text "Playground" to ensure correct element is clicked on the page * 🐛 (decisionFlow.spec.ts): fix clicking on "Playground" button by selecting the last element with the text "Playground" to ensure correct element is clicked * 🐛 (generalBugs-shard-3.spec.ts): fix clicking on "Playground" button by selecting the last occurrence to prevent ambiguity * 🐛 (generalBugs-shard-0.spec.ts): fix clicking on "Playground" button by selecting the last element with the text "Playground" to ensure correct element is clicked * 🐛 (general-bugs-shard-3836.spec.ts): fix clicking on "Playground" button by selecting the last element with the text "Playground" to ensure correct element is clicked * ✨ (chatInputOutputUser-shard-2.spec.ts): update test to click on the last element with text "Playground" to ensure correct interaction with chat input/output feature * ✨ (stop-button-playground.spec.ts): update test to click on the last occurrence of the text "Playground" to ensure correct element is clicked * 🐛 (limit-file-size-upload.spec.ts): fix selector to click on the last element with text "Playground" instead of the first one * ✨ (fileUploadComponent.spec.ts): update test to click on the last element with text "Playground" to ensure correct element is clicked on the page * ✨ (chatInputOutput.spec.ts): update test to click on the last occurrence of the "Playground" text to ensure correct element is clicked * 🐛 (generalBugs-shard-9.spec.ts): fix clicking on "Playground" element by selecting the last occurrence to prevent flakiness in tests * 🐛 (Document QA.spec.ts): fix clicking on "Playground" element by selecting the last occurrence to ensure correct element is clicked * ✨ (similarity.spec.ts): update click method to target the last occurrence of "Playground" text to ensure correct element is clicked * 🐛 (Simple Agent.spec.ts): fix clicking on "Playground" button by selecting the last element with the text to avoid ambiguity * ✨ (textInputOutput.spec.ts): update test script to target the last occurrence of the "Playground" text element to ensure correct interaction with the UI. * ✨ (Travel Planning Agent.spec.ts): Update the selector for the "Playground" text to ensure the correct element is clicked on the page. * 🐛 (Vector Store.spec.ts): fix clicking on "Playground" element by selecting the last one to avoid ambiguity * ✨ (generalBugs-shard-9.spec.ts): add click action on the last element with test id "title-Prompt" to improve test coverage and interaction with the page --------- Co-authored-by: anovazzi1 <otavio2204@gmail.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
127 lines
3.5 KiB
TypeScript
127 lines
3.5 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import * as dotenv from "dotenv";
|
|
import path from "path";
|
|
|
|
test("Blog Writer", async ({ page }) => {
|
|
test.skip(
|
|
!process?.env?.OPENAI_API_KEY,
|
|
"OPENAI_API_KEY required to run this test",
|
|
);
|
|
|
|
if (!process.env.CI) {
|
|
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
|
|
}
|
|
|
|
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");
|
|
if (modalTitleElement) {
|
|
modalCount = await modalTitleElement.count();
|
|
}
|
|
} catch (error) {
|
|
modalCount = 0;
|
|
}
|
|
|
|
while (modalCount === 0) {
|
|
await page.getByText("New Project", { exact: true }).click();
|
|
await page.waitForTimeout(3000);
|
|
modalCount = await page.getByTestId("modal-title")?.count();
|
|
}
|
|
|
|
await page.getByRole("heading", { name: "Blog Writer" }).click();
|
|
await page.waitForTimeout(1000);
|
|
|
|
await page.getByTitle("fit view").click();
|
|
await page.getByTitle("zoom out").click();
|
|
await page.getByTitle("zoom out").click();
|
|
await page.getByTitle("zoom out").click();
|
|
|
|
let outdatedComponents = await page.getByTestId("icon-AlertTriangle").count();
|
|
|
|
while (outdatedComponents > 0) {
|
|
await page.getByTestId("icon-AlertTriangle").first().click();
|
|
await page.waitForTimeout(1000);
|
|
outdatedComponents = await page.getByTestId("icon-AlertTriangle").count();
|
|
}
|
|
|
|
await page
|
|
.getByTestId("popover-anchor-input-api_key")
|
|
.fill(process.env.OPENAI_API_KEY ?? "");
|
|
|
|
await page.getByTestId("dropdown_str_model_name").click();
|
|
await page.getByTestId("gpt-4o-1-option").click();
|
|
|
|
await page.waitForTimeout(1000);
|
|
await page
|
|
.getByTestId("inputlist_str_urls_0")
|
|
.nth(0)
|
|
.fill(
|
|
"https://www.natgeokids.com/uk/discover/animals/sea-life/turtle-facts/",
|
|
);
|
|
await page
|
|
.getByTestId("inputlist_str_urls_1")
|
|
.nth(0)
|
|
.fill("https://www.originaldiving.com/blog/top-ten-turtle-facts");
|
|
|
|
await page
|
|
.getByTestId("textarea_str_input_value")
|
|
.fill(
|
|
"Use the references above for style to write a new blog/tutorial about turtles. Suggest non-covered topics.",
|
|
);
|
|
|
|
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,
|
|
});
|
|
|
|
await page.getByText("Playground", { exact: true }).last().click();
|
|
await page
|
|
.getByPlaceholder(
|
|
"No chat input variables found. Click to run your flow.",
|
|
{ exact: true },
|
|
)
|
|
.last()
|
|
.isVisible();
|
|
|
|
await page.waitForTimeout(3000);
|
|
|
|
await page.getByText("turtles").last().isVisible();
|
|
await page.getByText("sea").last().isVisible();
|
|
await page.getByText("survival").last().isVisible();
|
|
|
|
await page.getByText("Instructions").last().click();
|
|
|
|
const value = await page
|
|
.getByPlaceholder("Enter text...")
|
|
.last()
|
|
.inputValue();
|
|
|
|
expect(value).toBe(
|
|
"Use the references above for style to write a new blog/tutorial about turtles. Suggest non-covered topics.",
|
|
);
|
|
|
|
await page.getByTestId("icon-ExternalLink").last().click();
|
|
|
|
const count = await page
|
|
.getByText(
|
|
"Use the references above for style to write a new blog/tutorial about turtles. Suggest non-covered topics.",
|
|
)
|
|
.count();
|
|
|
|
if (count <= 1) {
|
|
expect(false).toBe(true);
|
|
}
|
|
});
|