From 611e8134da5944c9c7b62af076f2e270bb2db834 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Mon, 17 Jun 2024 19:37:58 -0300 Subject: [PATCH] fixing tests --- .../end-to-end/chatInputOutputUser.spec.ts | 4 +- .../end-to-end/dropdownComponent.spec.ts | 134 ++++++++++++------ .../end-to-end/fileUploadComponent.spec.ts | 2 +- .../tests/end-to-end/filterEdge.spec.ts | 4 +- .../tests/end-to-end/inputComponent.spec.ts | 12 +- .../end-to-end/inputListComponent.spec.ts | 2 +- src/frontend/tests/end-to-end/logs.spec.ts | 15 +- .../tests/end-to-end/nestedComponent.spec.ts | 19 --- .../tests/end-to-end/tweaks_test.spec.ts | 14 +- 9 files changed, 117 insertions(+), 89 deletions(-) diff --git a/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts b/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts index a326a1947..fb85fe31d 100644 --- a/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts +++ b/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts @@ -150,9 +150,9 @@ test("user must be able to see output inspection", async ({ page }) => { await page.getByTestId("button_run_chat output").last().click(); - await page.waitForTimeout(2000); + await page.waitForTimeout(8000); - await page.getByTestId("icon-ScanEye").last().click(); + await page.getByTestId("icon-ScanEye").nth(4).click(); await page.getByText("Sender", { exact: true }).isVisible(); await page.getByText("Type", { exact: true }).isVisible(); diff --git a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts index 6c0a7dd9e..dc2f54517 100644 --- a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts +++ b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts @@ -44,18 +44,18 @@ test("dropDownComponent", async ({ page }) => { await page.getByTestId("dropdown-model_id").click(); - await page.getByTestId("ai21.j2-mid-v1-10-option").click(); + await page.getByTestId("value-dropdown-dropdown-model_id").click(); let value = await page .getByTestId("value-dropdown-dropdown-model_id") .first() .innerText(); - if (value !== "ai21.j2-mid-v1") { + if (value !== "anthropic.claude-3-haiku-20240307-v1:0") { expect(false).toBeTruthy(); } await page.getByTestId("dropdown-model_id").click(); - await page.getByTestId("anthropic.claude-v2:1-6-option").click(); + await page.getByText("anthropic.claude-v2").last().click(); value = await page.getByTestId("dropdown-model_id").innerText(); if (value !== "anthropic.claude-v2:1") { @@ -165,77 +165,129 @@ test("dropDownComponent", async ({ page }) => { ).toBeTruthy(); await page.getByTestId("dropdown-edit-model_id").click(); - await page.getByTestId("ai21.j2-mid-v1-10-option").click(); + await page.getByText("cohere").last().click(); value = await page.getByTestId("dropdown-edit-model_id").innerText(); - if (value !== "ai21.j2-mid-v1") { + if (value !== "cohere.embed-multilingual-v3") { expect(false).toBeTruthy(); } await page.getByText("Save Changes", { exact: true }).click(); value = await page.getByTestId("dropdown-model_id").innerText(); - if (value !== "ai21.j2-mid-v1") { + if (value !== "cohere.embed-multilingual-v3") { expect(false).toBeTruthy(); } await page.getByTestId("code-button-modal").click(); await page .locator("#CodeEditor div") - .filter({ hasText: "from typing import" }) + .filter({ hasText: "import BedrockChat" }) .nth(1) .click(); await page.locator("textarea").press("Control+a"); - const emptyOptionsCode = `from typing import Optional -from langflow.field_typing import BaseLanguageModel -from langchain_community.llms.bedrock import Bedrock + const emptyOptionsCode = `from langchain_community.chat_models.bedrock import BedrockChat -from langflow.interface.custom.custom_component import CustomComponent +from langflow.base.constants import STREAM_INFO_TEXT +from langflow.base.models.model import LCModelComponent +from langflow.field_typing import BaseLanguageModel, Text +from langflow.inputs import BoolInput, DictInput, DropdownInput, StrInput +from langflow.inputs import MessageInput +from langflow.template import Output -class AmazonBedrockComponent(CustomComponent): +class AmazonBedrockComponent(LCModelComponent): display_name: str = "Amazon Bedrock" - description: str = "LLM model from Amazon Bedrock." + description: str = "Generate text using Amazon Bedrock LLMs." icon = "Amazon" - def build_config(self): - return { - "model_id": { - "display_name": "Model Id", - "options": [], - }, - "credentials_profile_name": {"display_name": "Credentials Profile Name"}, - "streaming": {"display_name": "Streaming", "field_type": "bool"}, - "endpoint_url": {"display_name": "Endpoint URL"}, - "region_name": {"display_name": "Region Name"}, - "model_kwargs": {"display_name": "Model Kwargs"}, - "cache": {"display_name": "Cache"}, - "code": {"advanced": True}, - } + inputs = [ + MessageInput(name="input_value", display_name="Input", input_types=["Text", "Data", "Prompt"]), + DropdownInput( + name="model_id", + display_name="Model Id", + options=[ + "amazon.titan-text-express-v1", + "amazon.titan-text-lite-v1", + "amazon.titan-text-premier-v1:0", + "amazon.titan-embed-text-v1", + "amazon.titan-embed-text-v2:0", + "amazon.titan-embed-image-v1", + "amazon.titan-image-generator-v1", + "anthropic.claude-v2", + "anthropic.claude-v2:1", + "anthropic.claude-3-sonnet-20240229-v1:0", + "anthropic.claude-3-haiku-20240307-v1:0", + "anthropic.claude-3-opus-20240229-v1:0", + "anthropic.claude-instant-v1", + "ai21.j2-mid-v1", + "ai21.j2-ultra-v1", + "cohere.command-text-v14", + "cohere.command-light-text-v14", + "cohere.command-r-v1:0", + "cohere.command-r-plus-v1:0", + "cohere.embed-english-v3", + "cohere.embed-multilingual-v3", + "meta.llama2-13b-chat-v1", + "meta.llama2-70b-chat-v1", + "meta.llama3-8b-instruct-v1:0", + "meta.llama3-70b-instruct-v1:0", + "mistral.mistral-7b-instruct-v0:2", + "mistral.mixtral-8x7b-instruct-v0:1", + "mistral.mistral-large-2402-v1:0", + "mistral.mistral-small-2402-v1:0", + "stability.stable-diffusion-xl-v0", + "stability.stable-diffusion-xl-v1", + ], + value="anthropic.claude-3-haiku-20240307-v1:0", + ), + StrInput(name="credentials_profile_name", display_name="Credentials Profile Name"), + StrInput(name="region_name", display_name="Region Name"), + DictInput(name="model_kwargs", display_name="Model Kwargs", advanced=True), + StrInput(name="endpoint_url", display_name="Endpoint URL"), + BoolInput(name="cache", display_name="Cache"), + StrInput( + name="system_message", + display_name="System Message", + info="System message to pass to the model.", + advanced=True, + ), + BoolInput(name="stream", display_name="Stream", info=STREAM_INFO_TEXT, advanced=True), + ] + outputs = [ + Output(display_name="Text", name="text_output", method="text_response"), + Output(display_name="Language Model", name="model_output", method="build_model"), + ] - def build( - self, - model_id: str = "anthropic.claude-instant-v1", - credentials_profile_name: Optional[str] = None, - region_name: Optional[str] = None, - model_kwargs: Optional[dict] = None, - endpoint_url: Optional[str] = None, - streaming: bool = False, - cache: Optional[bool] = None, - ) -> BaseLanguageModel: + def text_response(self) -> Text: + input_value = self.input_value + stream = self.stream + system_message = self.system_message + output = self.build_model() + result = self.get_chat_result(output, stream, input_value, system_message) + self.status = result + return result + + def build_model(self) -> BaseLanguageModel: + model_id = self.model_id + credentials_profile_name = self.credentials_profile_name + region_name = self.region_name + model_kwargs = self.model_kwargs + endpoint_url = self.endpoint_url + cache = self.cache + stream = self.stream try: - output = Bedrock( + output = BedrockChat( credentials_profile_name=credentials_profile_name, model_id=model_id, region_name=region_name, model_kwargs=model_kwargs, endpoint_url=endpoint_url, - streaming=streaming, + streaming=stream, cache=cache, - ) # type: ignore + ) except Exception as e: raise ValueError("Could not connect to AmazonBedrock API.") from e return output - `; await page.locator("textarea").fill(emptyOptionsCode); await page.getByRole("button", { name: "Check & Save" }).click(); diff --git a/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts b/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts index 00f761dea..33b3a332f 100644 --- a/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts +++ b/src/frontend/tests/end-to-end/fileUploadComponent.spec.ts @@ -1,7 +1,7 @@ import { expect, test } from "@playwright/test"; import path from "path"; -test("dropDownComponent", async ({ page }) => { +test("should be able to upload a file", async ({ page }) => { await page.goto("/"); await page.waitForTimeout(2000); diff --git a/src/frontend/tests/end-to-end/filterEdge.spec.ts b/src/frontend/tests/end-to-end/filterEdge.spec.ts index 7edbc0436..ff2ebd015 100644 --- a/src/frontend/tests/end-to-end/filterEdge.spec.ts +++ b/src/frontend/tests/end-to-end/filterEdge.spec.ts @@ -188,9 +188,9 @@ test("LLMChain - Filter", async ({ page }) => { ) .click(); - await expect(page.getByTestId("inputsChat Input")).toBeVisible(); + await expect(page.getByTestId("saved_componentsChat Input")).toBeVisible(); await expect(page.getByTestId("outputsChat Output")).toBeVisible(); await expect(page.getByTestId("helpersID Generator")).toBeVisible(); - await expect(page.getByTestId("vectorstoresChroma")).toBeVisible(); + await expect(page.getByTestId("vectorstoresChroma DB")).toBeVisible(); await expect(page.getByTestId("disclosure-vector stores")).toBeVisible(); }); diff --git a/src/frontend/tests/end-to-end/inputComponent.spec.ts b/src/frontend/tests/end-to-end/inputComponent.spec.ts index 3e6936b43..99bf207cf 100644 --- a/src/frontend/tests/end-to-end/inputComponent.spec.ts +++ b/src/frontend/tests/end-to-end/inputComponent.spec.ts @@ -30,7 +30,7 @@ test("InputComponent", async ({ page }) => { await page.waitForTimeout(1000); await page - .getByTestId("vectorstoresChroma") + .getByTestId("vectorstoresChroma DB") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); @@ -88,11 +88,6 @@ test("InputComponent", async ({ page }) => { await page.locator('//*[@id="showcollection_name"]').isChecked(), ).toBeFalsy(); - await page.locator('//*[@id="showindex_directory"]').click(); - expect( - await page.locator('//*[@id="showindex_directory"]').isChecked(), - ).toBeFalsy(); - await page.locator('//*[@id="showchroma_server_cors_allow_origins"]').click(); expect( await page @@ -120,11 +115,6 @@ test("InputComponent", async ({ page }) => { await page.locator('//*[@id="showchroma_server_ssl_enabled"]').isChecked(), ).toBeFalsy(); - await page.locator('//*[@id="showindex_directory"]').click(); - expect( - await page.locator('//*[@id="showindex_directory"]').isChecked(), - ).toBeTruthy(); - let valueEditNode = await page .getByTestId("popover-anchor-input-collection_name-edit") .inputValue(); diff --git a/src/frontend/tests/end-to-end/inputListComponent.spec.ts b/src/frontend/tests/end-to-end/inputListComponent.spec.ts index 797289890..e28ba67b2 100644 --- a/src/frontend/tests/end-to-end/inputListComponent.spec.ts +++ b/src/frontend/tests/end-to-end/inputListComponent.spec.ts @@ -28,7 +28,7 @@ test("InputListComponent", async ({ page }) => { await page.waitForTimeout(1000); await page - .getByTestId("vectorstoresAstra DB") + .getByTestId("vectorsearchAstra DB Search") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/end-to-end/logs.spec.ts b/src/frontend/tests/end-to-end/logs.spec.ts index 9d3c0120b..8f5ce4a2d 100644 --- a/src/frontend/tests/end-to-end/logs.spec.ts +++ b/src/frontend/tests/end-to-end/logs.spec.ts @@ -42,13 +42,18 @@ test("should able to see and interact with logs", async ({ page }) => { await page.getByTestId("icon-ChevronDown").click(); await page.getByText("Logs").click(); - await page.getByText("timestamp").isVisible(); - await page.getByText("flow_id").isVisible(); - await page.getByText("source").isVisible(); - await page.getByText("target", { exact: true }).isVisible(); - await page.getByText("target_args", { exact: true }).isVisible(); + await page.getByText("timestamp").first().isVisible(); + await page.getByText("flow_id").first().isVisible(); + await page.getByText("source").first().isVisible(); + await page.getByText("target", { exact: true }).first().isVisible(); + await page.getByText("target_args", { exact: true }).first().isVisible(); await page.getByRole("gridcell").first().isVisible(); + await page.keyboard.press("Escape"); + + await page.getByTestId("user-profile-settings").first().click(); + await page.getByText("Settings", { exact: true }).click(); + await page.getByText("Messages", { exact: true }).click(); await page.getByText("index", { exact: true }).last().isVisible(); await page.getByText("timestamp", { exact: true }).isVisible(); diff --git a/src/frontend/tests/end-to-end/nestedComponent.spec.ts b/src/frontend/tests/end-to-end/nestedComponent.spec.ts index 2df9c1b7b..a00e2f9b3 100644 --- a/src/frontend/tests/end-to-end/nestedComponent.spec.ts +++ b/src/frontend/tests/end-to-end/nestedComponent.spec.ts @@ -37,18 +37,6 @@ test("NestedComponent", async ({ page }) => { await page.getByTestId("more-options-modal").click(); await page.getByTestId("edit-button-modal").click(); - //showpool_threads - await page.locator('//*[@id="showpool_threads"]').click(); - - expect( - await page.locator('//*[@id="showpool_threads"]').isChecked(), - ).toBeTruthy(); - - //showtext_key - await page.locator('//*[@id="showtext_key"]').click(); - - expect(await page.locator('//*[@id="showtext_key"]').isChecked()).toBeFalsy(); - // showindex_name await page.locator('//*[@id="showindex_name"]').click(); @@ -175,13 +163,6 @@ test("NestedComponent", async ({ page }) => { await page.locator('//*[@id="showpinecone_api_key"]').isChecked(), ).toBeTruthy(); - //showpool_threads - await page.locator('//*[@id="showpool_threads"]').click(); - - expect( - await page.locator('//*[@id="showpool_threads"]').isChecked(), - ).toBeFalsy(); - //showtext_key await page.locator('//*[@id="showtext_key"]').click(); 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 2d85cc8dc..871e8a2ba 100644 --- a/src/frontend/tests/end-to-end/tweaks_test.spec.ts +++ b/src/frontend/tests/end-to-end/tweaks_test.spec.ts @@ -90,7 +90,7 @@ test("check if tweaks are updating when someothing on the flow changes", async ( await page.waitForTimeout(1000); await page - .getByTestId("vectorstoresChroma") + .getByTestId("vectorstoresChroma DB") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); @@ -103,25 +103,25 @@ test("check if tweaks are updating when someothing on the flow changes", async ( .getByTestId("popover-anchor-input-collection_name") .fill("collection_name_test_123123123!@#$&*(&%$@"); - await page.getByTestId("popover-anchor-input-index_directory").click(); + await page.getByTestId("popover-anchor-input-persist_directory").click(); await page - .getByTestId("popover-anchor-input-index_directory") - .fill("index_directory_123123123!@#$&*(&%$@"); + .getByTestId("popover-anchor-input-persist_directory") + .fill("persist_directory_123123123!@#$&*(&%$@"); await page.getByText("API", { exact: true }).first().click(); await page.getByText("Tweaks").nth(1).click(); await page.getByText("collection_name_test_123123123!@#$&*(&%$@").isVisible(); - await page.getByText("index_directory_123123123!@#$&*(&%$@").isVisible(); + await page.getByText("persist_directory_123123123!@#$&*(&%$@").isVisible(); await page.getByText("Python API", { exact: true }).click(); await page.getByText("collection_name_test_123123123!@#$&*(&%$@").isVisible(); - await page.getByText("index_directory_123123123!@#$&*(&%$@").isVisible(); + await page.getByText("persist_directory_123123123!@#$&*(&%$@").isVisible(); await page.getByText("Python Code", { exact: true }).click(); await page.getByText("collection_name_test_123123123!@#$&*(&%$@").isVisible(); - await page.getByText("index_directory_123123123!@#$&*(&%$@").isVisible(); + await page.getByText("persist_directory_123123123!@#$&*(&%$@").isVisible(); });