feat: Update components input/output display name and descriptions (#8284)

* create an IO bundle

* Update styleUtils.ts

* [autofix.ci] apply automated fixes

* change folder names

* [autofix.ci] apply automated fixes

* Update test_endpoints.py

* refactor: update test IDs for input/output components in specs

* test: update test IDs for chat input/output components in decisionFlow.spec.ts

* test: update test IDs for input/output components in generalBugs-shard-5.spec.ts

* Update styleUtils.ts

* fix input and output

* update input and output

* 🐛 (typescript_test.yml): increase the maximum shard count to 40 to improve test distribution and efficiency

* fix FE Tests Input output component Ids

* [autofix.ci] apply automated fixes

* ✅ (filterEdge-shard-1.spec.ts): update test to log error message when element is not visible before asserting visibility

* ✅ (notifications.spec.ts): update test selectors for better clarity and consistency in the notifications feature test suite

* fix conflicts

* update json

* update jsons

* update test chat output

* fix tests

* fix fe tests

* update test

* update json

* [autofix.ci] apply automated fixes

* fix tests

* fix tests

* [autofix.ci] apply automated fixes

* update tests

* update test

* [autofix.ci] apply automated fixes

* fix tests

* fix format

* [autofix.ci] apply automated fixes

* fix test

---------

Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: deon-sanchez <deon.sanchez@datastax.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
This commit is contained in:
Yuqi Tang 2025-06-03 10:52:21 -07:00 • committed by GitHub
commit 07284891cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
55 changed files with 384 additions and 341 deletions

View file

@ -220,12 +220,12 @@ jobs:
echo "Total tests to run: $TEST_COUNT" echo "Total tests to run: $TEST_COUNT"
# Calculate optimal shard count - 1 shard per 5 tests, min 1, max 10 # Calculate optimal shard count - 1 shard per 5 tests, min 1, max 40
SHARD_COUNT=$(( (TEST_COUNT + 4) / 5 )) SHARD_COUNT=$(( (TEST_COUNT + 4) / 5 ))
if [ $SHARD_COUNT -lt 1 ]; then if [ $SHARD_COUNT -lt 1 ]; then
SHARD_COUNT=1 SHARD_COUNT=1
elif [ $SHARD_COUNT -gt 10 ]; then elif [ $SHARD_COUNT -gt 40 ]; then
SHARD_COUNT=10 SHARD_COUNT=40
fi fi
# Create the matrix combinations string # Create the matrix combinations string

View file

@ -7,7 +7,7 @@ class LCEmbeddingsModel(Component):
trace_type = "embedding" trace_type = "embedding"
outputs = [ outputs = [
Output(display_name="Embeddings", name="embeddings", method="build_embeddings"), Output(display_name="Embedding Model", name="embeddings", method="build_embeddings"),
] ]
def _validate_outputs(self) -> None: def _validate_outputs(self) -> None:

View file

@ -50,7 +50,7 @@ class LCModelComponent(Component):
] ]
outputs = [ outputs = [
Output(display_name="Message", name="text_output", method="text_response"), Output(display_name="Model Response", name="text_output", method="text_response"),
Output(display_name="Language Model", name="model_output", method="build_model"), Output(display_name="Language Model", name="model_output", method="build_model"),
] ]

View file

@ -26,7 +26,7 @@ class ChatInput(ChatComponent):
inputs = [ inputs = [
MultilineInput( MultilineInput(
name="input_value", name="input_value",
display_name="Text", display_name="Input Text",
value="", value="",
info="Message to be passed as input.", info="Message to be passed as input.",
input_types=[], input_types=[],
@ -88,7 +88,7 @@ class ChatInput(ChatComponent):
), ),
] ]
outputs = [ outputs = [
Output(display_name="Message", name="message", method="message_response"), Output(display_name="Chat Message", name="message", method="message_response"),
] ]
async def message_response(self) -> Message: async def message_response(self) -> Message:

View file

@ -30,7 +30,7 @@ class ChatOutput(ChatComponent):
inputs = [ inputs = [
HandleInput( HandleInput(
name="input_value", name="input_value",
display_name="Text", display_name="Inputs",
info="Message to be passed as output.", info="Message to be passed as output.",
input_types=["Data", "DataFrame", "Message"], input_types=["Data", "DataFrame", "Message"],
required=True, required=True,
@ -98,7 +98,7 @@ class ChatOutput(ChatComponent):
] ]
outputs = [ outputs = [
Output( Output(
display_name="Message", display_name="Output Message",
name="message", name="message",
method="message_response", method="message_response",
), ),

View file

@ -5,7 +5,7 @@ from langflow.schema.message import Message
class TextInputComponent(TextComponent): class TextInputComponent(TextComponent):
display_name = "Text Input" display_name = "Text Input"
description = "Get text inputs from the Playground." description = "Get user text inputs."
icon = "type" icon = "type"
name = "TextInput" name = "TextInput"
@ -17,7 +17,7 @@ class TextInputComponent(TextComponent):
), ),
] ]
outputs = [ outputs = [
Output(display_name="Message", name="text", method="text_response"), Output(display_name="Output Text", name="text", method="text_response"),
] ]
def text_response(self) -> Message: def text_response(self) -> Message:

View file

@ -5,19 +5,19 @@ from langflow.schema.message import Message
class TextOutputComponent(TextComponent): class TextOutputComponent(TextComponent):
display_name = "Text Output" display_name = "Text Output"
description = "Display a text output in the Playground." description = "Sends text output via API."
icon = "type" icon = "type"
name = "TextOutput" name = "TextOutput"
inputs = [ inputs = [
MultilineInput( MultilineInput(
name="input_value", name="input_value",
display_name="Text", display_name="Inputs",
info="Text to be passed as output.", info="Text to be passed as output.",
), ),
] ]
outputs = [ outputs = [
Output(display_name="Message", name="text", method="text_response"), Output(display_name="Output Text", name="text", method="text_response"),
] ]
def text_response(self) -> Message: def text_response(self) -> Message:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -46,7 +46,7 @@ test(
await page.waitForSelector("text=built successfully", { timeout: 30000 }); await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();
@ -69,7 +69,7 @@ test(
await page.waitForSelector("text=built successfully", { timeout: 30000 }); await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();
@ -109,7 +109,7 @@ test(
await page.waitForSelector("text=built successfully", { timeout: 30000 }); await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();

View file

@ -123,7 +123,7 @@ test(
//connection 2 //connection 2
await page await page
.getByTestId("handle-textinput-shownode-message-right") .getByTestId("handle-textinput-shownode-output text-right")
.nth(0) .nth(0)
.click(); .click();
await page.getByTestId("handle-splittext-shownode-separator-left").click(); await page.getByTestId("handle-splittext-shownode-separator-left").click();
@ -140,7 +140,7 @@ test(
.getByTestId("handle-parsedata-shownode-message-right") .getByTestId("handle-parsedata-shownode-message-right")
.nth(0) .nth(0)
.click(); .click();
await page.getByTestId("handle-chatoutput-shownode-text-left").click(); await page.getByTestId("handle-chatoutput-shownode-inputs-left").click();
await page await page
.getByTestId("textarea_str_input_value") .getByTestId("textarea_str_input_value")
@ -156,14 +156,14 @@ test(
await page.waitForSelector("text=built successfully", { timeout: 30000 }); await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page.waitForSelector( await page.waitForSelector(
'[data-testid="output-inspection-message-chatoutput"]', '[data-testid="output-inspection-output message-chatoutput"]',
{ {
timeout: 1000, timeout: 1000,
}, },
); );
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();
@ -180,14 +180,14 @@ test(
await page.waitForSelector("text=built successfully", { timeout: 30000 }); await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page.waitForSelector( await page.waitForSelector(
'[data-testid="output-inspection-message-chatoutput"]', '[data-testid="output-inspection-output message-chatoutput"]',
{ {
timeout: 1000, timeout: 1000,
}, },
); );
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();
@ -233,14 +233,14 @@ test(
await page.waitForSelector("text=built successfully", { timeout: 30000 }); await page.waitForSelector("text=built successfully", { timeout: 30000 });
await page.waitForSelector( await page.waitForSelector(
'[data-testid="output-inspection-message-chatoutput"]', '[data-testid="output-inspection-output message-chatoutput"]',
{ {
timeout: 1000, timeout: 1000,
}, },
); );
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();
@ -265,14 +265,14 @@ test(
}); });
await page.waitForSelector( await page.waitForSelector(
'[data-testid="output-inspection-message-chatoutput"]', '[data-testid="output-inspection-output message-chatoutput"]',
{ {
timeout: 1000, timeout: 1000,
}, },
); );
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();

View file

@ -63,13 +63,17 @@ test(
await adjustScreenView(page); await adjustScreenView(page);
await page await page
.getByTestId("handle-chatinput-noshownode-message-source") .getByTestId("handle-chatinput-noshownode-chat message-source")
.click(); .click();
await page.getByTestId("handle-textoutput-shownode-text-left").click(); await page.getByTestId("handle-textoutput-shownode-inputs-left").click();
await page.getByTestId("handle-textoutput-shownode-message-right").click(); await page
await page.getByTestId("handle-chatoutput-noshownode-text-target").click(); .getByTestId("handle-textoutput-shownode-output text-right")
.click();
await page
.getByTestId("handle-chatoutput-noshownode-inputs-target")
.click();
await page.getByRole("button", { name: "Playground", exact: true }).click(); await page.getByRole("button", { name: "Playground", exact: true }).click();
await page.waitForSelector('[data-testid="input-chat-playground"]', { await page.waitForSelector('[data-testid="input-chat-playground"]', {

View file

@ -85,7 +85,9 @@ test(
.click(); .click();
//connection 2 //connection 2
await page.getByTestId("handle-textinput-shownode-message-right").click(); await page
.getByTestId("handle-textinput-shownode-output text-right")
.click();
await page.getByTestId("handle-splittext-shownode-separator-left").click(); await page.getByTestId("handle-splittext-shownode-separator-left").click();
//connection 3 //connection 3
@ -94,7 +96,9 @@ test(
//connection 4 //connection 4
await page.getByTestId("handle-parsedata-shownode-message-right").click(); await page.getByTestId("handle-parsedata-shownode-message-right").click();
await page.getByTestId("handle-chatoutput-noshownode-text-target").click(); await page
.getByTestId("handle-chatoutput-noshownode-inputs-target")
.click();
await page.getByTestId("fit_view").click(); await page.getByTestId("fit_view").click();

View file

@ -248,7 +248,7 @@ test(
.nth(1) .nth(1)
.click(); .click();
await page await page
.getByTestId("handle-chatinput-noshownode-message-source") .getByTestId("handle-chatinput-noshownode-chat message-source")
.nth(0) .nth(0)
.click(); .click();
await page await page
@ -289,7 +289,7 @@ test(
.nth(0) .nth(0)
.click(); .click();
await page await page
.getByTestId("handle-openaimodel-shownode-message-right") .getByTestId("handle-openaimodel-shownode-model response-right")
.nth(0) .nth(0)
.click(); .click();
await page await page
@ -335,7 +335,7 @@ test(
.nth(1) .nth(1)
.click(); .click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.nth(0) .nth(0)
.click(); .click();
await page await page
@ -343,7 +343,7 @@ test(
.nth(0) .nth(0)
.click(); .click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.nth(1) .nth(1)
.click(); .click();
const apiKeyInput = page.getByTestId("popover-anchor-input-api_key"); const apiKeyInput = page.getByTestId("popover-anchor-input-api_key");

View file

@ -159,7 +159,7 @@ test(
//connection 1 //connection 1
const openAiEmbeddingOutput_0 = await page const openAiEmbeddingOutput_0 = await page
.getByTestId("handle-openaiembeddings-shownode-embeddings-right") .getByTestId("handle-openaiembeddings-shownode-embedding model-right")
.nth(0); .nth(0);
await openAiEmbeddingOutput_0.hover(); await openAiEmbeddingOutput_0.hover();
await page.mouse.down(); await page.mouse.down();
@ -172,7 +172,7 @@ test(
//connection 2 //connection 2
const openAiEmbeddingOutput_1 = await page const openAiEmbeddingOutput_1 = await page
.getByTestId("handle-openaiembeddings-shownode-embeddings-right") .getByTestId("handle-openaiembeddings-shownode-embedding model-right")
.nth(0); .nth(0);
await openAiEmbeddingOutput_1.hover(); await openAiEmbeddingOutput_1.hover();
await page.mouse.down(); await page.mouse.down();
@ -238,7 +238,7 @@ test(
await parseDataOutput.hover(); await parseDataOutput.hover();
await page.mouse.down(); await page.mouse.down();
const textOutputInput = await page const textOutputInput = await page
.getByTestId("handle-textoutput-shownode-text-left") .getByTestId("handle-textoutput-shownode-inputs-left")
.nth(0); .nth(0);
await textOutputInput.hover(); await textOutputInput.hover();
await page.mouse.up(); await page.mouse.up();
@ -249,7 +249,7 @@ test(
await page await page
.getByTestId(/rf__node-TextOutput-[a-zA-Z0-9]{5}/) .getByTestId(/rf__node-TextOutput-[a-zA-Z0-9]{5}/)
.getByTestId("output-inspection-message-textoutput") .getByTestId("output-inspection-output text-textoutput")
.first() .first()
.click(); .click();
const valueSimilarity = await page.getByTestId("textarea").textContent(); const valueSimilarity = await page.getByTestId("textarea").textContent();

View file

@ -41,7 +41,7 @@ test.skip(
await adjustScreenView(page); await adjustScreenView(page);
let visibleElementHandle; let visibleElementHandle;
const elementsTextInputOutput = await page const elementsTextInputOutput = await page
.getByTestId("handle-textinput-shownode-text-right") .getByTestId("handle-textinput-shownode-output text-right")
.all(); .all();
for (const element of elementsTextInputOutput) { for (const element of elementsTextInputOutput) {
if (await element.isVisible()) { if (await element.isVisible()) {
@ -102,7 +102,7 @@ test.skip(
await visibleElementHandle.hover(); await visibleElementHandle.hover();
await page.mouse.down(); await page.mouse.down();
const elementTextOutputInput = await page const elementTextOutputInput = await page
.getByTestId("handle-textoutput-shownode-text-left") .getByTestId("handle-textoutput-shownode-inputs-left")
.all(); .all();
for (const element of elementTextOutputInput) { for (const element of elementTextOutputInput) {
if (await element.isVisible()) { if (await element.isVisible()) {
@ -146,7 +146,7 @@ test.skip(
await page.getByTestId("button_run_text_output").click(); await page.getByTestId("button_run_text_output").click();
await page await page
.getByTestId(/^rf__node-TextOutput-[a-zA-Z0-9]+$/) .getByTestId(/^rf__node-TextOutput-[a-zA-Z0-9]+$/)
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.click(); .click();
await page.getByText("Run Flow", { exact: true }).click(); await page.getByText("Run Flow", { exact: true }).click();
await page.waitForTimeout(5000); await page.waitForTimeout(5000);

View file

@ -91,13 +91,13 @@ test(
await elementCombineTextOutput0.click(); await elementCombineTextOutput0.click();
const blockedHandle = page const blockedHandle = page
.getByTestId("div-handle-textinput-shownode-message-right") .getByTestId("div-handle-textinput-shownode-output text-right")
.first(); .first();
const secondBlockedHandle = page const secondBlockedHandle = page
.getByTestId("div-handle-combinetext-shownode-combined text-right") .getByTestId("div-handle-combinetext-shownode-combined text-right")
.nth(1); .nth(1);
const thirdBlockedHandle = page const thirdBlockedHandle = page
.getByTestId("div-handle-textoutput-shownode-message-right") .getByTestId("div-handle-textoutput-shownode-output text-right")
.first(); .first();
const hasGradient = await blockedHandle?.evaluate((el) => { const hasGradient = await blockedHandle?.evaluate((el) => {
@ -129,7 +129,7 @@ test(
.getByTestId("div-handle-combinetext-shownode-second text-left") .getByTestId("div-handle-combinetext-shownode-second text-left")
.first(); .first();
const fourthUnlockedHandle = page const fourthUnlockedHandle = page
.getByTestId("div-handle-textoutput-shownode-text-left") .getByTestId("div-handle-textoutput-shownode-inputs-left")
.first(); .first();
const hasGradientUnlocked = await unlockedHandle?.evaluate((el) => { const hasGradientUnlocked = await unlockedHandle?.evaluate((el) => {
@ -184,7 +184,7 @@ test(
//connection 1 //connection 1
const elementTextOutput0 = page const elementTextOutput0 = page
.getByTestId("handle-textinput-shownode-message-right") .getByTestId("handle-textinput-shownode-output text-right")
.nth(0); .nth(0);
await elementTextOutput0.click(); await elementTextOutput0.click();
const elementGroupInput0 = page.getByTestId( const elementGroupInput0 = page.getByTestId(
@ -194,7 +194,7 @@ test(
//connection 2 //connection 2
const elementTextOutput1 = page const elementTextOutput1 = page
.getByTestId("handle-textinput-shownode-message-right") .getByTestId("handle-textinput-shownode-output text-right")
.nth(2); .nth(2);
await elementTextOutput1.click(); await elementTextOutput1.click();
const elementGroupInput1 = page const elementGroupInput1 = page
@ -204,7 +204,7 @@ test(
//connection 3 //connection 3
const elementTextOutput2 = page const elementTextOutput2 = page
.getByTestId("handle-textinput-shownode-message-right") .getByTestId("handle-textinput-shownode-output text-right")
.nth(1); .nth(1);
await elementTextOutput2.click(); await elementTextOutput2.click();
@ -220,7 +220,7 @@ test(
.nth(0); .nth(0);
await elementGroupOutput.click(); await elementGroupOutput.click();
const elementTextOutputInput = page const elementTextOutputInput = page
.getByTestId("handle-textoutput-shownode-text-left") .getByTestId("handle-textoutput-shownode-inputs-left")
.nth(0); .nth(0);
await elementTextOutputInput.click(); await elementTextOutputInput.click();

View file

@ -43,8 +43,10 @@ test("chat_io_teste", { tag: ["@release", "@workspace"] }, async ({ page }) => {
await page.getByTestId("fit_view").click(); await page.getByTestId("fit_view").click();
await page.getByTestId("handle-chatinput-noshownode-message-source").click(); await page
await page.getByTestId("handle-chatoutput-noshownode-text-target").click(); .getByTestId("handle-chatinput-noshownode-chat message-source")
.click();
await page.getByTestId("handle-chatoutput-noshownode-inputs-target").click();
await page.getByText("Playground", { exact: true }).last().click(); await page.getByText("Playground", { exact: true }).last().click();
await page.waitForSelector('[data-testid="input-chat-playground"]', { await page.waitForSelector('[data-testid="input-chat-playground"]', {

View file

@ -278,7 +278,7 @@ test(
.first() .first()
.click(); .click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.first() .first()
.click(); .click();

View file

@ -153,7 +153,7 @@ test(
.click(); .click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.first() .first()
.click(); .click();
@ -228,13 +228,13 @@ test(
// Verify output // Verify output
await page.waitForSelector( await page.waitForSelector(
'[data-testid="output-inspection-message-chatoutput"]', '[data-testid="output-inspection-output message-chatoutput"]',
{ {
timeout: 1000, timeout: 1000,
}, },
); );
await page await page
.getByTestId("output-inspection-message-chatoutput") .getByTestId("output-inspection-output message-chatoutput")
.first() .first()
.click(); .click();

View file

@ -98,7 +98,7 @@ class CustomComponent(Component):
await elementCustomComponentOutput.hover(); await elementCustomComponentOutput.hover();
await page.mouse.down(); await page.mouse.down();
const elementChatOutput = await page const elementChatOutput = await page
.getByTestId("handle-chatoutput-shownode-text-left") .getByTestId("handle-chatoutput-shownode-inputs-left")
.first(); .first();
await elementChatOutput.hover(); await elementChatOutput.hover();
await page.mouse.up(); await page.mouse.up();

View file

@ -108,7 +108,7 @@ test(
await page.waitForTimeout(600); await page.waitForTimeout(600);
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.nth(0) .nth(0)
.click(); .click();
@ -130,7 +130,7 @@ test(
await page.getByText("Close").first().click(); await page.getByText("Close").first().click();
await page.getByTestId("handle-urlcomponent-shownode-result-right").click(); await page.getByTestId("handle-urlcomponent-shownode-result-right").click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.nth(1) .nth(1)
.click(); .click();
await page.waitForTimeout(2000); await page.waitForTimeout(2000);
@ -166,7 +166,7 @@ test(
.click(); .click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-chatoutput-noshownode-inputs-target")
.nth(1) .nth(1)
.click(); .click();

View file

@ -40,7 +40,7 @@ test(
.click(); .click();
await page await page
.getByTestId("handle-chatoutput-shownode-text-left") .getByTestId("handle-chatoutput-shownode-inputs-left")
.first() .first()
.click(); .click();

View file

@ -70,13 +70,15 @@ test(
await page.getByTestId("fit_view").click(); await page.getByTestId("fit_view").click();
await page await page
.getByTestId("handle-chatinput-noshownode-message-source") .getByTestId("handle-chatinput-noshownode-chat message-source")
.click(); .click();
await page.getByTestId("handle-openaimodel-shownode-input-left").click(); await page.getByTestId("handle-openaimodel-shownode-input-left").click();
await page.getByTestId("handle-openaimodel-shownode-message-right").click();
await page await page
.getByTestId("handle-chatoutput-noshownode-text-target") .getByTestId("handle-openaimodel-shownode-model response-right")
.click();
await page
.getByTestId("handle-chatoutput-noshownode-inputs-target")
.last() .last()
.click(); .click();