refactor: parameter component, edit node modal and api modal (#2928)

* changed column defs to receive handleOnNewValue and use it to change Advanced variable

* Exported function isTargetHandleConnected

* Refactored types of setNodeClass

* Exported type of handleOnNewValue

* Refactored useHandleNodeClass to only handle changes to node data

* Refactored toggleCellRender to handle advanced values by itself with the handleOnNewValue

* changed setNodeClass types and disabled hook

* changed handleNodeClass on parametercomponent

* changed handleNodeClass on the two components that used it

* refactor: Update handleNodeClass to accept newNodeClass and type only

* Refactor EditNodeModal component to use new handleNodeClass and columnDefs

* Changed columnDefs to receive new handleNodeClass and not receive useless parameters

* changed cellTypeStr to strRender

* Refactored inputFileComponent to use the new handleOnNewValue

* Refactored keypairList to convert values on the fly

* added parameterRenderComponent that renders all parameters in one place

* Exported parameterRenderComponent

* Changed tableNodeCellRender to use ParameterRenderComponent

* changed parameterredercomponent to receive name

* changed strrendercomponent to receive name

* changed nodecellrender to pass name and to check if value is undefined before assigning on templateData

* chore: Refactor use-handle-new-value to handle undefined values in changes

* Used ParameterRenderComponent at parameterComponent

* Refactored parameterRenderComponent to include refresh button

* Created refresh parameter component

* Added nodeId to parameterrendercomponent call

* Removed unused variable

* Refactored refreshButton

* Fixed parameters not showing when they dont have a value

* Created a tweakComplnent that renders the tweak individually, with the same table as the EditNode

* Created tweaks component, that renders all tweaks

* Changed tableNodeCellRender to pass setNode as well

* changed handleOnNewValue to use custom setNode if specified

* added editNodeComponent that handles the table and rowData and columnDefs

* changed editNodeModal to use editNodeComponent instead of table

* changed columndefs type to handle setNode and hideVisibility optional parameters

* changed useRowData to not use myData, and just use nodeClass

* Changed codeTabsPropsType tweaks property to include only the ncessary

* changed codeTabsComponent to use TweaksComponent and handle an internal nodes state

* changed apiModal to handle the tweaks build by finding the differences between old and current node

* fix bug on API modal that refresh tweaks table all the time

* Created new tweaks store type

* Added tweaks store with all of the logic needed to get the tweaks on the API page

* refactored TweakComponent to hold an temporary state to prevent the table from rerendering

* Added TweakComponent into TweaksComponent

* Removed external state on tableAdvancedToggle, making every state come from the Stores

* Removed external state from TableNodeCellRender and added isTweaks to choose which store to use

* Added SetNode type on HandleOnNewValue

* Added custom setNode to handleNodeClass

* Removed unused logic from apiModal

* removed unused old code

* Changed type of getChangesTypes

* Transformed string into object on get codes

* Changed getNodesWithDefaultValue to return nodes that will appear on Tweaks, as well as just the allowed parameters

* added hasTweaks to tabs

* added check of template keys to update the local nodeClass state, allowing the table to be updated just when the number of parameters changes

* passed isTweaks to columnDefs

* removed unused state and passed isTweaks to value getters

* Removed unused state

* updated tabsArrayType with hasTweaks and removed unused types

* Added local nodes tweaks state to the codetabscomponent and refactored conditions of display

* removed unused console.log

* changed advanced toggle to use parameterid given by the value

* changed nodecellrender to use parameter id given by the value

* passed parameter id by value to the renderers

* removed nodeClass from columnDefs definition

* Fixed isTargetHandleConnected returning error if field is undefined

* Fix performance issues on edit node modal

* Fixed scroll overflow issues on tweaksComponent

* Revert "Revert "refactor: update template api, handleonnewvalue and handlenodeclass hooks (#2628)""

This reverts commit 236ae82cabba2fa1128f498d781099facd222b57.

* 📝 (tweaksTest.spec.ts): remove redundant code and improve readability by simplifying the interaction with elements in the test case

* added custom id for tests

* ✨ (frontend): Add unique id prop to input components for better testability and accessibility.

✨ (Hierarchical Tasks Agent.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (Memory Chatbot.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (Sequential Tasks Agent.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (chatInputOutputUser-shard-0.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (chatInputOutputUser-shard-1.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (chatInputOutputUser-shard-2.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (decisionFlow.spec.ts): Update input list element IDs to improve clarity and consistency
✨ (decisionFlow.spec.ts): Update prompt area element IDs to improve clarity and consistency
✨ (decisionFlow.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (freeze-path.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (generalBugs-shard-0.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (generalBugs-shard-1.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (generalBugs-shard-3.spec.ts): Update dropdown element IDs to improve clarity and consistency

🔧 (logs.spec.ts, textInputOutput.spec.ts): update dropdown test selectors to match changes in the frontend codebase

* Fixed prompt not holding the value when validating

* Fixed range spec on int component

* Fixed OpenAI Model max tokens range spec

* ✨ (dropdownComponent.spec.ts): Update dropdown test cases to use more descriptive test IDs for better clarity and maintainability
📝 (fileUploadComponent.spec.ts): Add explicit wait for "Run Flow" button to ensure it is loaded before clicking
📝 (folders.spec.ts): Update file path in readFileSync function to use an absolute path for better reliability
📝 (freeze-path.spec.ts): Refactor test code to remove commented out code and improve readability by using more descriptive test IDs and removing unnecessary code snippets

✨ (inputListComponent.spec.ts): Update test file to use consistent naming convention for input elements in the InputListComponent
📝 (intComponent.spec.ts): Refactor test file to use consistent naming convention for input elements in the IntComponent

✨ (nestedComponent.spec.ts): Update test steps and interactions for nestedComponent to improve test coverage and accuracy.

📝 (promptModalComponent.spec.ts): Update test selectors for prompt modal component to improve consistency and readability
📝 (textAreaModalComponent.spec.ts): Update test selectors for text area modal component to improve consistency and readability
📝 (toggleComponent.spec.ts): Update test selectors for toggle component to improve consistency and readability

* 🐛 (intComponent.spec.ts): fix incorrect value comparison in test for IntComponent
🐛 (intComponent.spec.ts): fix missing test step for clicking on a specific element in IntComponent test

* 📝 (Vector Store.spec.ts): increase timeout for waiting for "built successfully" text to improve test reliability and prevent false negatives

* Fixed folders test

---------

Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
This commit is contained in:
Lucas Oliveira 2024-07-26 13:32:24 -03:00 • committed by GitHub
commit a9863a050e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
80 changed files with 2026 additions and 2923 deletions

View file

@ -54,7 +54,7 @@ test("Basic Prompting (Hello, World)", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -51,18 +51,18 @@ test("Blog Writer", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
await page
.getByTestId("input-list-input_urls-0")
.getByTestId("inputlist_str_urls_0")
.nth(0)
.fill(
"https://www.natgeokids.com/uk/discover/animals/sea-life/turtle-facts/",
);
await page
.getByTestId("input-list-input_urls-1")
.getByTestId("inputlist_str_urls_1")
.nth(0)
.fill("https://www.originaldiving.com/blog/top-ten-turtle-facts");

View file

@ -70,7 +70,7 @@ test("Complex Agent", async ({ page }) => {
.nth(i)
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").nth(i).click();
await page.getByTestId("dropdown_str_model_name").nth(i).click();
await page.getByTestId("gpt-4o-1-option").last().click();
await page.waitForTimeout(1000);

View file

@ -51,7 +51,7 @@ test("Document QA", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -65,12 +65,12 @@ test("Hierarchical Tasks Agent", async ({ page }) => {
.nth(1)
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").first().click();
await page.getByTestId("dropdown_str_model_name").first().click();
await page.getByTestId("gpt-4o-1-option").first().click();
await page.waitForTimeout(2000);
await page.getByTestId("dropdown-model_name").last().click();
await page.getByTestId("dropdown_str_model_name").last().click();
await page.getByTestId("gpt-4o-1-option").last().click();
await page.waitForTimeout(2000);

View file

@ -53,7 +53,7 @@ test("Memory Chatbot", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -60,7 +60,7 @@ test("Sequential Tasks Agent", async ({ page }) => {
.first()
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -96,21 +96,21 @@ test("Vector Store RAG", async ({ page }) => {
await page.waitForTimeout(2000);
await page.getByTestId("button_run_astra db").first().click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page.waitForSelector("text=built successfully", { timeout: 60000 * 2 });
await page.getByText("built successfully").last().click({
timeout: 30000,
});
await page.getByTestId("button_run_chat output").click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page.waitForSelector("text=built successfully", { timeout: 60000 * 2 });
await page.getByText("built successfully").last().click({
timeout: 30000,
});
await page.getByTestId("button_run_astra db").last().click();
await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page.waitForSelector("text=built successfully", { timeout: 60000 * 2 });
await page.getByText("built successfully").last().click({
timeout: 30000,

View file

@ -55,7 +55,7 @@ test("user must be able to send an image on chat", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForSelector("text=Chat Input", { timeout: 30000 });

View file

@ -55,7 +55,7 @@ test("user must be able to see output inspection", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -55,7 +55,7 @@ test("user must interact with chat with Input/Output", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);
@ -86,7 +86,7 @@ test("user must interact with chat with Input/Output", async ({ page }) => {
await page.keyboard.press("Escape");
await page
.getByTestId("textarea-input_value")
.getByTestId("textarea_str_input_value")
.nth(0)
.fill(
"testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!",

View file

@ -80,12 +80,14 @@ test("should create a flow with decision", async ({ page }) => {
await page.getByTestId("input-list-plus-btn_texts-0").click();
await page
.getByTestId("input-list-input_texts-0")
.getByTestId("inputlist_str_texts_0")
.first()
.fill("big news! langflow 1.0 is out");
await page
.getByTestId("input-list-input_texts-1")
.getByTestId("inputlist_str_texts_1")
.first()
.fill("uhul that movie was awesome");
await page.getByTestId("input-list-input_texts-2").fill("love you babe");
await page.getByTestId("inputlist_str_texts_2").first().fill("love you babe");
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
@ -108,15 +110,12 @@ test("should create a flow with decision", async ({ page }) => {
await page.getByTestId("input-list-plus-btn_texts-0").last().click();
await page.getByTestId("input-list-plus-btn_texts-0").last().click();
await page.getByTestId("inputlist_str_texts_0").last().fill("oh my cat died");
await page
.getByTestId("input-list-input_texts-0")
.last()
.fill("oh my cat died");
await page
.getByTestId("input-list-input_texts-1")
.getByTestId("inputlist_str_texts_1")
.last()
.fill("No one loves me");
await page.getByTestId("input-list-input_texts-2").last().fill("not cool..");
await page.getByTestId("inputlist_str_texts_2").last().fill("not cool..");
await page.getByPlaceholder("Search").click();
await page.getByPlaceholder("Search").fill("parse data");
@ -348,8 +347,8 @@ test("should create a flow with decision", async ({ page }) => {
await page.mouse.up();
//edit prompt
await page.getByTestId("prompt-input-template").first().click();
await page.getByTestId("modal-prompt-input-template").first().fill(`
await page.getByTestId("promptarea_prompt_template").first().click();
await page.getByTestId("modal-promptarea_prompt_template").first().fill(`
{Condition}
Answer with either TRUE or FALSE (and nothing else).
@ -551,7 +550,7 @@ AI:
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.getByLabel("fit view").click();
@ -570,7 +569,7 @@ AI:
await page.getByTestId("icon-LucideSend").click();
await page.waitForSelector("text=🥲", {
timeout: 100000,
timeout: 1200000,
});
await page.getByText("🥲").isVisible();

View file

@ -46,22 +46,24 @@ test("dropDownComponent", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page.getByTestId("title-Amazon Bedrock").click();
await page.getByTestId("dropdown-model_id").click();
await page.getByTestId("dropdown_str_model_id").click();
await page.getByTestId("value-dropdown-dropdown-model_id").click();
await page
.getByTestId("anthropic.claude-3-haiku-20240307-v1:0-10-option")
.click();
let value = await page
.getByTestId("value-dropdown-dropdown-model_id")
.getByTestId("anthropic.claude-3-haiku-20240307-v1:0-10-option")
.first()
.innerText();
if (value !== "anthropic.claude-3-haiku-20240307-v1:0") {
expect(false).toBeTruthy();
}
await page.getByTestId("dropdown-model_id").click();
await page.getByTestId("dropdown_str_model_id").click();
await page.getByText("anthropic.claude-v2").last().click();
value = await page.getByTestId("dropdown-model_id").innerText();
value = await page.getByTestId("dropdown_str_model_id").innerText();
if (value !== "anthropic.claude-v2:1") {
expect(false).toBeTruthy();
}
@ -71,7 +73,9 @@ test("dropDownComponent", async ({ page }) => {
await page.getByTestId("more-options-modal").click();
await page.getByTestId("edit-button-modal").click();
value = await page.getByTestId("dropdown-edit-model_id").innerText();
value = await page
.getByTestId("value-dropdown-dropdown_str_edit_model_id")
.innerText();
if (value !== "anthropic.claude-v2:1") {
expect(false).toBeTruthy();
}
@ -136,17 +140,21 @@ test("dropDownComponent", async ({ page }) => {
await page.locator('//*[@id="showmodel_id"]').isChecked(),
).toBeTruthy();
await page.getByTestId("dropdown-edit-model_id").click();
await page.getByTestId("value-dropdown-dropdown_str_edit_model_id").click();
await page.getByText("cohere").last().click();
value = await page.getByTestId("dropdown-edit-model_id").innerText();
value = await page
.getByTestId("value-dropdown-dropdown_str_edit_model_id")
.innerText();
if (value !== "cohere.embed-multilingual-v3") {
expect(false).toBeTruthy();
}
await page.getByText("Close").last().click();
value = await page.getByTestId("dropdown-model_id").innerText();
value = await page
.getByTestId("value-dropdown-dropdown_str_model_id")
.innerText();
if (value !== "cohere.embed-multilingual-v3") {
expect(false).toBeTruthy();
}

View file

@ -147,8 +147,15 @@ test("should be able to upload a file", async ({ page }) => {
await page.mouse.up();
await page.getByText("Playground", { exact: true }).click();
await page.waitForSelector("text=Run Flow", {
timeout: 30000,
});
await page.getByText("Run Flow", { exact: true }).click();
await page.waitForTimeout(3000);
const textOutput = await page.getByPlaceholder("Empty").first().inputValue();
expect(textOutput).toContain("this is a test file");

View file

@ -8,146 +8,6 @@ test("user must be able to freeze a path", async ({ page }) => {
"OPENAI_API_KEY required to run this test",
);
// const codeOpenAI = `
// import operator
// from functools import reduce
// from langchain_openai import ChatOpenAI
// from pydantic.v1 import SecretStr
// from langflow.base.constants import STREAM_INFO_TEXT
// from langflow.base.models.model import LCModelComponent
// from langflow.base.models.openai_constants import MODEL_NAMES
// from langflow.field_typing import LanguageModel
// from langflow.inputs import (
// BoolInput,
// DictInput,
// DropdownInput,
// FloatInput,
// IntInput,
// MessageInput,
// SecretStrInput,
// StrInput,
// )
// class OpenAIModelComponent(LCModelComponent):
// display_name = "OpenAI"
// description = "Generates text using OpenAI LLMs."
// icon = "OpenAI"
// name = "OpenAIModel"
// inputs = [
// MessageInput(name="input_value", display_name="Input"),
// IntInput(
// name="max_tokens",
// display_name="Max Tokens",
// advanced=True,
// info="The maximum number of tokens to generate. Set to 0 for unlimited tokens.",
// ),
// DictInput(name="model_kwargs", display_name="Model Kwargs", advanced=True),
// BoolInput(
// name="json_mode",
// display_name="JSON Mode",
// advanced=True,
// info="If True, it will output JSON regardless of passing a schema.",
// ),
// DictInput(
// name="output_schema",
// is_list=True,
// display_name="Schema",
// advanced=True,
// info="The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.",
// ),
// DropdownInput(
// name="model_name", display_name="Model Name", advanced=False, options=MODEL_NAMES, value=MODEL_NAMES[0]
// ),
// StrInput(
// name="openai_api_base",
// display_name="OpenAI API Base",
// advanced=True,
// info="The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.",
// ),
// SecretStrInput(
// name="api_key",
// display_name="OpenAI API Key",
// info="The OpenAI API Key to use for the OpenAI model.",
// advanced=False,
// value="OPENAI_API_KEY",
// ),
// FloatInput(name="temperature", display_name="Temperature", value=0.1),
// BoolInput(name="stream", display_name="Stream", info=STREAM_INFO_TEXT, advanced=True),
// StrInput(
// name="system_message",
// display_name="System Message",
// info="System message to pass to the model.",
// advanced=True,
// ),
// IntInput(
// name="seed",
// display_name="Seed",
// info="The seed controls the reproducibility of the job.",
// advanced=True,
// value=1,
// ),
// ]
// def build_model(self) -> LanguageModel: # type: ignore[type-var]
// # self.output_schema is a list of dictionaries
// # let's convert it to a dictionary
// output_schema_dict: dict[str, str] = reduce(operator.ior, self.output_schema or {}, {})
// openai_api_key = self.api_key
// temperature = self.temperature
// model_name: str = self.model_name
// max_tokens = self.max_tokens
// model_kwargs = self.model_kwargs or {}
// openai_api_base = self.openai_api_base or "https://api.openai.com/v1"
// json_mode = bool(output_schema_dict) or self.json_mode
// seed = self.seed
// if openai_api_key:
// api_key = SecretStr(openai_api_key)
// else:
// api_key = None
// output = ChatOpenAI(
// max_tokens=max_tokens or None,
// model_kwargs=model_kwargs,
// model=model_name,
// base_url=openai_api_base,
// api_key=api_key,
// temperature=0.8,
// seed=seed,
// )
// if json_mode:
// if output_schema_dict:
// output = output.with_structured_output(schema=output_schema_dict, method="json_mode") # type: ignore
// else:
// output = output.bind(response_format={"type": "json_object"}) # type: ignore
// return output # type: ignore
// def _get_exception_message(self, e: Exception):
// """
// Get a message from an OpenAI exception.
// Args:
// exception (Exception): The exception to get the message from.
// Returns:
// str: The message from the exception.
// """
// try:
// from openai import BadRequestError
// except ImportError:
// return
// if isinstance(e, BadRequestError):
// message = e.body.get("message") # type: ignore
// if message:
// return message
// return
// `;
if (!process.env.CI) {
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
}
@ -195,23 +55,15 @@ test("user must be able to freeze a path", async ({ page }) => {
.fill(process.env.OPENAI_API_KEY ?? "");
await page
.getByTestId("textarea-input_value")
.getByTestId("textarea_str_input_value")
.first()
.fill(
"say a random number between 1 and 100000 and a random animal that lives in the sea",
);
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
// await page.getByText("OpenAI").first().click();
// await page.getByTestId("code-button-modal").first().click();
// await page.locator("textarea").press("Control+a");
// await page.locator("textarea").fill(codeOpenAI);
// await page.locator('//*[@id="checkAndSaveBtn"]').click();
await page.waitForTimeout(2000);
await page.getByTestId("float-input").fill("1.0");

View file

@ -92,7 +92,7 @@ test("erase button should clear the chat messages", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -52,7 +52,7 @@ test("should delete rows from table message", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -103,7 +103,7 @@ test("should copy code from playground modal", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
const elementsChatInput = await page

View file

@ -39,34 +39,28 @@ test("InputListComponent", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTestId("input-list-input_urls-0").fill("test test test test");
await page.getByTestId("inputlist_str_urls_0").fill("test test test test");
await page.getByTestId("input-list-plus-btn_urls-0").click();
await page.getByTestId("input-list-plus-btn_urls-0").click();
await page
.getByTestId("input-list-input_urls-1")
.getByTestId("inputlist_str_urls_1")
.fill("test1 test1 test1 test1");
await page
.getByTestId("input-list-input_urls-2")
.getByTestId("inputlist_str_urls_2")
.fill("test2 test2 test2 test2");
await page.getByTestId("div-generic-node").click();
await page.getByTestId("more-options-modal").click();
await page.getByTestId("edit-button-modal").click();
const value0 = await page
.getByTestId("input-list-input-edit_urls-0")
.inputValue();
const value1 = await page
.getByTestId("input-list-input-edit_urls-1")
.inputValue();
const value0 = await page.getByTestId("inputlist_str_urls_0").inputValue();
const value1 = await page.getByTestId("inputlist_str_urls_1").inputValue();
const value2 = await page
.getByTestId("input-list-input-edit_urls-2")
.inputValue();
const value2 = await page.getByTestId("inputlist_str_urls_2").inputValue();
if (
value0 !== "test test test test" ||
@ -94,15 +88,15 @@ test("InputListComponent", async ({ page }) => {
await page.getByTestId("input-list-plus-btn_urls-0").click();
await page.getByTestId("input-list-plus-btn_urls-0").click();
await page.getByTestId("input-list-input_urls-0").fill("test test test test");
await page.getByTestId("inputlist_str_urls_0").fill("test test test test");
await page
.getByTestId("input-list-input_urls-1")
.getByTestId("inputlist_str_urls_1")
.fill("test1 test1 test1 test1");
await page
.getByTestId("input-list-input_urls-2")
.getByTestId("inputlist_str_urls_2")
.fill("test2 test2 test2 test2");
await page
.getByTestId("input-list-input_urls-3")
.getByTestId("inputlist_str_urls_3")
.fill("test3 test3 test3 test3");
await page.getByTestId("div-generic-node").click();
@ -110,16 +104,16 @@ test("InputListComponent", async ({ page }) => {
await page.getByTestId("edit-button-modal").click();
const value0Edit = await page
.getByTestId("input-list-input-edit_urls-0")
.getByTestId("inputlist_str_edit_urls_0")
.inputValue();
const value1Edit = await page
.getByTestId("input-list-input-edit_urls-1")
.getByTestId("inputlist_str_edit_urls_1")
.inputValue();
const value2Edit = await page
.getByTestId("input-list-input-edit_urls-2")
.getByTestId("inputlist_str_edit_urls_2")
.inputValue();
const value3Edit = await page
.getByTestId("input-list-input-edit_urls-3")
.getByTestId("inputlist_str_edit_urls_3")
.inputValue();
if (

View file

@ -52,21 +52,19 @@ test("IntComponent", async ({ page }) => {
await page.getByTestId("showmax_tokens").click();
await page.getByText("Close").last().click();
await page.getByTestId("int-input-max_tokens").click();
await page
.getByTestId("int-input-max_tokens")
.fill("123456789123456789123456789");
await page.getByTestId("int_int_max_tokens").click();
await page.getByTestId("int_int_max_tokens").fill("1020304050");
let value = await page.getByTestId("int-input-max_tokens").inputValue();
let value = await page.getByTestId("int_int_max_tokens").inputValue();
if (value != "123456789123456789123456789") {
if (value != "1020304050") {
expect(false).toBeTruthy();
}
await page.getByTestId("int-input-max_tokens").click();
await page.getByTestId("int-input-max_tokens").fill("0");
await page.getByTestId("int_int_max_tokens").click();
await page.getByTestId("int_int_max_tokens").fill("0");
value = await page.getByTestId("int-input-max_tokens").inputValue();
value = await page.getByTestId("int_int_max_tokens").inputValue();
if (value != "0") {
expect(false).toBeTruthy();
@ -86,16 +84,14 @@ test("IntComponent", async ({ page }) => {
await page.getByTestId("more-options-modal").click();
await page.getByTestId("edit-button-modal").click();
value = await page.getByTestId("edit-int-input-max_tokens").inputValue();
value = await page.getByTestId("int_int_edit_max_tokens").inputValue();
if (value != "0") {
expect(false).toBeTruthy();
}
await page.getByTestId("edit-int-input-max_tokens").click();
await page
.getByTestId("edit-int-input-max_tokens")
.fill("123456789123456789123456789");
await page.getByTestId("int_int_edit_max_tokens").click();
await page.getByTestId("int_int_edit_max_tokens").fill("60708090");
await page.locator('//*[@id="showmodel_kwargs"]').click();
expect(
@ -167,33 +163,29 @@ test("IntComponent", async ({ page }) => {
await page.getByTestId("more-options-modal").click();
await page.getByTestId("edit-button-modal").click();
await page.locator('//*[@id="showtimeout"]').click();
expect(
await page.locator('//*[@id="showtimeout"]').isChecked(),
).toBeTruthy();
const valueEditNode = await page
.getByTestId("edit-int-input-max_tokens")
.getByTestId("int_int_max_tokens")
.inputValue();
if (valueEditNode != "123456789123456789123456789") {
if (valueEditNode != "128000") {
expect(false).toBeTruthy();
}
await page.getByText("Close").last().click();
await page.getByTestId("int-input-max_tokens").click();
await page.getByTestId("int-input-max_tokens").fill("3");
await page.getByTestId("int_int_max_tokens").click();
await page.getByTestId("int_int_max_tokens").fill("3");
let value = await page.getByTestId("int-input-max_tokens").inputValue();
let value = await page.getByTestId("int_int_max_tokens").inputValue();
if (value != "3") {
expect(false).toBeTruthy();
}
await page.getByTestId("int-input-max_tokens").click();
await page.getByTestId("int-input-max_tokens").fill("-3");
await page.getByTestId("int_int_max_tokens").click();
await page.getByTestId("int_int_max_tokens").fill("-3");
await page.getByTestId("div-generic-node").click();
value = await page.getByTestId("int-input-max_tokens").inputValue();
value = await page.getByTestId("int_int_max_tokens").inputValue();
if (value != "0") {
expect(false).toBeTruthy();

View file

@ -52,7 +52,7 @@ test("should able to see and interact with logs", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -28,151 +28,73 @@ test("NestedComponent", async ({ page }) => {
});
await page.getByTestId("extended-disclosure").click();
await page.getByPlaceholder("Search").click();
await page.getByPlaceholder("Search").fill("pinecone");
await page.getByPlaceholder("Search").fill("api request");
await page.waitForTimeout(1000);
await page
.getByTestId("vectorstoresPinecone")
.getByTestId("dataAPI Request")
.first()
.dragTo(page.locator('//*[@id="react-flow-id"]'));
await page.click('//*[@id="react-flow-id"]');
await page.getByTitle("fit view").click();
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTestId("dict_nesteddict_headers").first().click();
await page
.getByText("{")
.last()
.hover()
.then(async () => {
await page.locator(".json-view--edit").first().click();
await page.locator(".json-view--input").first().fill("keytest");
await page.locator(".json-view--edit").first().click();
await page.locator(".json-view--edit").first().click();
await page.locator(".json-view--input").first().fill("keytest1");
await page.locator(".json-view--edit").first().click();
await page.locator(".json-view--edit").first().click();
await page.locator(".json-view--input").first().fill("keytest2");
await page.locator(".json-view--edit").first().click();
});
await page
.locator(".json-view--pair")
.first()
.hover()
.then(async () => {
await page.locator(".json-view--edit").nth(2).click();
await page.locator(".json-view--null").first().fill("proptest1");
await page.locator(".json-view--edit").nth(2).click();
});
await page.getByText("Save").last().click();
await page.getByTestId("div-generic-node").click();
await page.getByTestId("more-options-modal").click();
await page.getByTestId("edit-button-modal").click();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
await page.getByTestId("dict_nesteddict_edit_headers").first().click();
expect(
await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeFalsy();
expect(await page.getByText("keytest", { exact: true }).count()).toBe(1);
expect(await page.getByText("keytest1", { exact: true }).count()).toBe(1);
expect(await page.getByText("keytest2", { exact: true }).count()).toBe(1);
expect(await page.getByText("proptest1").count()).toBe(1);
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
await page
.locator(".json-view--pair")
.first()
.hover()
.then(async () => {
await page.locator(".json-view--edit").nth(3).click();
await page.locator(".json-view--edit").nth(2).click();
});
expect(
await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeFalsy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeFalsy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeTruthy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeTruthy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeTruthy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeFalsy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeFalsy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeFalsy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeTruthy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeTruthy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeTruthy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeFalsy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeFalsy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeFalsy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeTruthy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeTruthy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeTruthy();
//showtext_key
await page.locator('//*[@id="showtext_key"]').click();
expect(
await page.locator('//*[@id="showtext_key"]').isChecked(),
).toBeTruthy();
await page.getByText("Close").last().click();
expect(await page.getByText("keytest", { exact: true }).count()).toBe(0);
expect(await page.getByText("proptest1").count()).toBe(0);
});

View file

@ -41,14 +41,14 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTestId("prompt-input-template").click();
await page.getByTestId("promptarea_prompt_template").click();
await page
.getByTestId("modal-prompt-input-template")
.getByTestId("modal-promptarea_prompt_template")
.fill("{prompt} example {prompt1}");
let value = await page
.getByTestId("modal-prompt-input-template")
.getByTestId("modal-promptarea_prompt_template")
.inputValue();
if (value != "{prompt} example {prompt1}") {
@ -67,10 +67,10 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.getByTestId("genericModalBtnSave").click();
await page.getByTestId("div-textarea-prompt").click();
await page.getByTestId("textarea-prompt").fill("prompt_value_!@#!@#");
await page.getByTestId("textarea_str_prompt").click();
await page.getByTestId("textarea_str_prompt").fill("prompt_value_!@#!@#");
value = await page.getByTestId("textarea-prompt").inputValue();
value = await page.getByTestId("textarea_str_prompt").inputValue();
if (value != "prompt_value_!@#!@#") {
expect(false).toBeTruthy();
@ -79,7 +79,6 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.getByTestId("div-generic-node").click();
await page.getByTestId("more-options-modal").click();
await page.getByTestId("save-button-modal").click();
const replace = await page.getByTestId("replace-button").isVisible();
@ -88,18 +87,12 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.getByTestId("replace-button").click();
}
await page.getByTestId("div-textarea-prompt1").click();
await page.getByTestId("textarea_str_prompt1").click();
await page
.getByTestId("textarea-prompt1")
.getByTestId("textarea_str_prompt1")
.fill("prompt_name_test_123123!@#!@#");
value = await page.getByTestId("textarea-prompt1").inputValue();
if (value != "prompt_name_test_123123!@#!@#") {
expect(false).toBeTruthy();
}
value = await page.getByTestId("textarea-prompt1").inputValue();
value = await page.getByTestId("textarea_str_prompt1").inputValue();
if (value != "prompt_name_test_123123!@#!@#") {
expect(false).toBeTruthy();
@ -109,36 +102,38 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.getByTestId("edit-button-modal").click();
value =
(await page.locator('//*[@id="textarea-edit-prompt"]').textContent()) ?? "";
(await page.locator('//*[@id="textarea_str_edit_prompt"]').textContent()) ??
"";
if (value != "prompt_value_!@#!@#") {
expect(false).toBeTruthy();
}
value =
(await page.locator('//*[@id="textarea-edit-prompt1"]').textContent()) ??
"";
(await page
.locator('//*[@id="textarea_str_edit_prompt1"]')
.textContent()) ?? "";
if (value != "prompt_name_test_123123!@#!@#") {
expect(false).toBeTruthy();
}
value = await page
.locator('//*[@id="prompt-area-edit-template"]')
.locator('//*[@id="promptarea_prompt_edit_template"]')
.innerText();
if (value != "{prompt} example {prompt1}") {
expect(false).toBeTruthy();
}
await page.locator('//*[@id="textarea-edit-prompt1"]').click();
await page.locator('//*[@id="textarea_str_edit_prompt1"]').click();
await page
.getByTestId("text-area-modal")
.fill("prompt_edit_test_12312312321!@#$");
await page.getByText("Finish Editing", { exact: true }).click();
await page.locator('//*[@id="textarea-edit-prompt"]').click();
await page.locator('//*[@id="textarea_str_edit_prompt"]').click();
await page
.getByTestId("text-area-modal")
.fill("prompt_edit_test_44444444444!@#$");
@ -191,22 +186,24 @@ test("PromptTemplateComponent", async ({ page }) => {
expect(await page.locator('//*[@id="showprompt1"]').isChecked()).toBeTruthy();
value =
(await page.locator('//*[@id="textarea-edit-prompt"]').textContent()) ?? "";
(await page.locator('//*[@id="textarea_str_edit_prompt"]').textContent()) ??
"";
if (value != "prompt_edit_test_44444444444!@#$") {
expect(false).toBeTruthy();
}
value =
(await page.locator('//*[@id="textarea-edit-prompt1"]').textContent()) ??
"";
(await page
.locator('//*[@id="textarea_str_edit_prompt1"]')
.textContent()) ?? "";
if (value != "prompt_edit_test_12312312321!@#$") {
expect(false).toBeTruthy();
}
value = await page
.locator('//*[@id="prompt-area-edit-template"]')
.locator('//*[@id="promptarea_prompt_edit_template"]')
.innerText();
if (value != "{prompt} example {prompt1}") {

View file

@ -52,9 +52,9 @@ test("TextAreaModalComponent", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTitle("zoom out").click();
await page.getByTestId("prompt-input-template").click();
await page.getByTestId("promptarea_prompt_template").click();
await page.getByTestId("modal-prompt-input-template").fill("{text}");
await page.getByTestId("modal-promptarea_prompt_template").fill("{text}");
let valueBadgeOne = await page.locator('//*[@id="badge0"]').innerText();
if (valueBadgeOne != "text") {
@ -64,12 +64,12 @@ test("TextAreaModalComponent", async ({ page }) => {
await page.getByTestId("genericModalBtnSave").click();
await page
.getByTestId("textarea-text")
.getByTestId("textarea_str_text")
.fill(
"test test test test test test test test test test test !@#%*)( 123456789101010101010101111111111 !!!!!!!!!!",
);
await page.getByTestId("textarea-text-ExternalLink").click();
await page.getByTestId("textarea_str_text-ExternalLink").click();
await page.waitForTimeout(500);
@ -86,7 +86,9 @@ test("TextAreaModalComponent", async ({ page }) => {
await page.getByTestId("genericModalBtnSave").click();
const valueTextArea = await page.getByTestId("textarea-text").inputValue();
const valueTextArea = await page
.getByTestId("textarea_str_text")
.inputValue();
if (valueTextArea != "test123123") {
expect(false).toBeTruthy();

View file

@ -193,7 +193,7 @@ test("TextInputOutputComponent", async ({ page }) => {
.getByTestId("popover-anchor-input-api_key")
.fill(process.env.OPENAI_API_KEY ?? "");
await page.getByTestId("dropdown-model_name").click();
await page.getByTestId("dropdown_str_model_name").click();
await page.getByTestId("gpt-4o-1-option").click();
await page.waitForTimeout(2000);

View file

@ -70,20 +70,30 @@ test("ToggleComponent", async ({ page }) => {
await page.getByTitle("fit view").click();
await page.getByTestId("toggle-load_hidden").click();
expect(await page.getByTestId("toggle-load_hidden").isChecked()).toBeTruthy();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("toggle-load_hidden").click();
expect(await page.getByTestId("toggle-load_hidden").isChecked()).toBeFalsy();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeFalsy();
await page.getByTestId("toggle-load_hidden").click();
expect(await page.getByTestId("toggle-load_hidden").isChecked()).toBeTruthy();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("toggle-load_hidden").click();
expect(await page.getByTestId("toggle-load_hidden").isChecked()).toBeFalsy();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeFalsy();
await page.getByTestId("toggle-load_hidden").click();
expect(await page.getByTestId("toggle-load_hidden").isChecked()).toBeTruthy();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("div-generic-node").click();
@ -99,7 +109,9 @@ test("ToggleComponent", async ({ page }) => {
await page.getByTestId("more-options-modal").click();
await page.getByTestId("edit-button-modal").click();
expect(await page.getByTestId("toggle-load_hidden").isChecked()).toBeTruthy();
expect(
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showload_hidden"]').click();
expect(
@ -154,7 +166,7 @@ test("ToggleComponent", async ({ page }) => {
await page.getByText("Close").last().click();
const plusButtonLocator = page.getByTestId("toggle-load_hidden");
const plusButtonLocator = page.getByTestId("toggle_bool_load_hidden");
const elementCount = await plusButtonLocator?.count();
if (elementCount === 0) {
expect(true).toBeTruthy();
@ -170,34 +182,34 @@ test("ToggleComponent", async ({ page }) => {
).toBeTruthy();
expect(
await page.getByTestId("toggle-edit-load_hidden").isChecked(),
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.getByText("Close").last().click();
await page.getByTestId("toggle-load_hidden").click();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle-load_hidden").isChecked(),
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeFalsy();
await page.getByTestId("toggle-load_hidden").click();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle-load_hidden").isChecked(),
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("toggle-load_hidden").click();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle-load_hidden").isChecked(),
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeFalsy();
await page.getByTestId("toggle-load_hidden").click();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle-load_hidden").isChecked(),
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("toggle-load_hidden").click();
await page.getByTestId("toggle_bool_load_hidden").click();
expect(
await page.getByTestId("toggle-load_hidden").isChecked(),
await page.getByTestId("toggle_bool_load_hidden").isChecked(),
).toBeFalsy();
}
});

View file

@ -35,18 +35,14 @@ test("curl_api_generation", async ({ page, context }) => {
.locator("div")
.first()
.click();
await page.waitForTimeout(1000);
await page
.getByRole("textbox", { name: "Type something..." })
.first()
.click();
await page
.getByRole("textbox", { name: "Type something..." })
.first()
.press("Control+a");
await page
.getByRole("textbox", { name: "Type something..." })
.getByTestId("popover-anchor-input-openai_api_base-edit")
.first()
.fill("teste");
await page.getByRole("tab", { name: "cURL" }).click();
await page.getByTestId("icon-Copy").click();
const handle2 = await page.evaluateHandle(() =>