From 04f578f8be393bc1c66b9e1f32108e5b37e3957a Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Fri, 14 Jun 2024 11:49:16 -0300 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=85=20(floatComponent.spec.ts):=20upd?= =?UTF-8?q?ate=20test=20values=20and=20remove=20redundant=20checks=20?= =?UTF-8?q?=E2=9C=85=20(inputListComponent.spec.ts):=20correct=20test=20ID?= =?UTF-8?q?s=20and=20update=20element=20counts=20=E2=9C=85=20(promptModalC?= =?UTF-8?q?omponent.spec.ts):=20fix=20incorrect=20locator=20ID=20=E2=9C=85?= =?UTF-8?q?=20(textAreaModalComponent.spec.ts):=20fix=20incorrect=20locato?= =?UTF-8?q?r=20ID=20=E2=9C=85=20(textInputOutput.spec.ts):=20update=20hove?= =?UTF-8?q?r=20element=20locator=20for=20accuracy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/end-to-end/floatComponent.spec.ts | 86 +++++-------------- .../end-to-end/inputListComponent.spec.ts | 32 +++---- .../end-to-end/promptModalComponent.spec.ts | 6 +- .../end-to-end/textAreaModalComponent.spec.ts | 4 +- .../tests/end-to-end/textInputOutput.spec.ts | 8 +- 5 files changed, 45 insertions(+), 91 deletions(-) diff --git a/src/frontend/tests/end-to-end/floatComponent.spec.ts b/src/frontend/tests/end-to-end/floatComponent.spec.ts index aacd7e1a2..126863a6b 100644 --- a/src/frontend/tests/end-to-end/floatComponent.spec.ts +++ b/src/frontend/tests/end-to-end/floatComponent.spec.ts @@ -39,107 +39,61 @@ test("FloatComponent", async ({ page }) => { await page.getByTitle("zoom out").click(); await page.getByTitle("zoom out").click(); + await page.waitForTimeout(2000); await page.locator('//*[@id="float-input"]').click(); + await page.locator('//*[@id="float-input"]').fill(""); + await page.waitForTimeout(2000); await page.locator('//*[@id="float-input"]').fill("3"); let value = await page.locator('//*[@id="float-input"]').inputValue(); - if (value != "1") { + if (value != "2") { expect(false).toBeTruthy(); } + await page.waitForTimeout(2000); await page.locator('//*[@id="float-input"]').click(); + await page.locator('//*[@id="float-input"]').fill(""); + await page.waitForTimeout(2000); await page.locator('//*[@id="float-input"]').fill("-3"); value = await page.locator('//*[@id="float-input"]').inputValue(); - if (value != "-1") { + if (value != "-2") { expect(false).toBeTruthy(); } await page.getByTestId("more-options-modal").click(); await page.getByTestId("edit-button-modal").click(); - await page.getByTestId("showformat").click(); - expect(await page.locator('//*[@id="showformat"]').isChecked()).toBeTruthy(); - - await page.getByTestId("showformat").click(); - expect(await page.locator('//*[@id="showformat"]').isChecked()).toBeFalsy(); - - await page.getByTestId("showmirostat").click(); - expect(await page.locator('//*[@id="showmirostat"]').isChecked()).toBeFalsy(); - - await page.getByTestId("showmirostat").click(); + await page.getByTestId("showmirostat_eta").click(); expect( - await page.locator('//*[@id="showmirostat"]').isChecked() + await page.locator('//*[@id="showmirostat_eta"]').isChecked(), ).toBeTruthy(); await page.getByTestId("showmirostat_eta").click(); expect( - await page.locator('//*[@id="showmirostat"]').isChecked() + await page.locator('//*[@id="showmirostat_eta"]').isChecked(), + ).toBeFalsy(); + + await page.getByTestId("showmirostat_eta").click(); + expect( + await page.locator('//*[@id="showmirostat_eta"]').isChecked(), ).toBeTruthy(); await page.getByTestId("showmirostat_eta").click(); expect( - await page.locator('//*[@id="showmirostat"]').isChecked() - ).toBeTruthy(); - - await page.getByTestId("showmirostat_eta").click(); - expect( - await page.locator('//*[@id="showmirostat_eta"]').isChecked() - ).toBeTruthy(); - - await page.getByTestId("showmirostat_eta").click(); - expect( - await page.locator('//*[@id="showmirostat_eta"]').isChecked() + await page.locator('//*[@id="showmirostat_eta"]').isChecked(), ).toBeFalsy(); await page.getByTestId("showmirostat_tau").click(); expect( - await page.locator('//*[@id="showmirostat_tau"]').isChecked() + await page.locator('//*[@id="showmirostat_tau"]').isChecked(), ).toBeTruthy(); await page.getByTestId("showmirostat_tau").click(); expect( - await page.locator('//*[@id="showmirostat_tau"]').isChecked() - ).toBeFalsy(); - - await page.getByTestId("showmodel").click(); - expect(await page.locator('//*[@id="showmodel"]').isChecked()).toBeFalsy(); - - await page.getByTestId("showmodel").click(); - expect(await page.locator('//*[@id="showmodel"]').isChecked()).toBeTruthy(); - - await page.getByTestId("shownum_ctx").click(); - expect(await page.locator('//*[@id="shownum_ctx"]').isChecked()).toBeTruthy(); - - await page.getByTestId("shownum_ctx").click(); - expect(await page.locator('//*[@id="shownum_ctx"]').isChecked()).toBeFalsy(); - - await page.getByTestId("shownum_gpu").click(); - expect(await page.locator('//*[@id="shownum_gpu"]').isChecked()).toBeTruthy(); - - await page.getByTestId("shownum_gpu").click(); - expect(await page.locator('//*[@id="shownum_gpu"]').isChecked()).toBeFalsy(); - - await page.getByTestId("shownum_thread").click(); - expect( - await page.locator('//*[@id="shownum_thread"]').isChecked() - ).toBeTruthy(); - - await page.getByTestId("shownum_thread").click(); - expect( - await page.locator('//*[@id="shownum_thread"]').isChecked() - ).toBeFalsy(); - - await page.getByTestId("showrepeat_last_n").click(); - expect( - await page.locator('//*[@id="showrepeat_last_n"]').isChecked() - ).toBeTruthy(); - - await page.getByTestId("showrepeat_last_n").click(); - expect( - await page.locator('//*[@id="showrepeat_last_n"]').isChecked() + await page.locator('//*[@id="showmirostat_tau"]').isChecked(), ).toBeFalsy(); await page.getByText("Save Changes", { exact: true }).click(); @@ -155,7 +109,7 @@ test("FloatComponent", async ({ page }) => { // showtemperature await page.locator('//*[@id="showtemperature"]').click(); expect( - await page.locator('//*[@id="showtemperature"]').isChecked() + await page.locator('//*[@id="showtemperature"]').isChecked(), ).toBeTruthy(); await page.getByText("Save Changes", { exact: true }).click(); diff --git a/src/frontend/tests/end-to-end/inputListComponent.spec.ts b/src/frontend/tests/end-to-end/inputListComponent.spec.ts index 6414c92db..797289890 100644 --- a/src/frontend/tests/end-to-end/inputListComponent.spec.ts +++ b/src/frontend/tests/end-to-end/inputListComponent.spec.ts @@ -41,19 +41,19 @@ test("InputListComponent", async ({ page }) => { await page.getByTestId("edit-button-modal").click(); expect( - await page.getByTestId("showmetadata_indexing_exclude").isChecked() + await page.getByTestId("showmetadata_indexing_exclude").isChecked(), ).toBeFalsy(); await page.getByTestId("showmetadata_indexing_exclude").click(); expect( - await page.getByTestId("showmetadata_indexing_exclude").isChecked() + await page.getByTestId("showmetadata_indexing_exclude").isChecked(), ).toBeTruthy(); expect( - await page.getByTestId("showmetadata_indexing_include").isChecked() + await page.getByTestId("showmetadata_indexing_include").isChecked(), ).toBeFalsy(); await page.getByTestId("showmetadata_indexing_include").click(); expect( - await page.getByTestId("showmetadata_indexing_include").isChecked() + await page.getByTestId("showmetadata_indexing_include").isChecked(), ).toBeTruthy(); await page @@ -89,11 +89,11 @@ test("InputListComponent", async ({ page }) => { } await page - .getByTestId("input-list-minus-btn_metadata_indexing_include-0") + .getByTestId("input-list-minus-btn_metadata_indexing_include-1") .click(); const plusButtonLocator = page.getByTestId( - "input-list-plus-btn_metadata_indexing_include-1" + "input-list-plus-btn_metadata_indexing_include-1", ); const elementCount = await plusButtonLocator?.count(); @@ -105,13 +105,13 @@ test("InputListComponent", async ({ page }) => { .getByTestId("input-list-plus-btn_metadata_indexing_include-0") .click(); await page - .getByTestId("input-list-plus-btn_metadata_indexing_include-1") + .getByTestId("input-list-plus-btn_metadata_indexing_include-0") .click(); await page - .getByTestId("input-list-plus-btn_metadata_indexing_include-2") + .getByTestId("input-list-plus-btn_metadata_indexing_include-0") .click(); await page - .getByTestId("input-list-plus-btn_metadata_indexing_include-3") + .getByTestId("input-list-plus-btn_metadata_indexing_include-0") .click(); await page @@ -154,7 +154,7 @@ test("InputListComponent", async ({ page }) => { } await page - .getByTestId("input-list-minus-btn-edit_metadata_indexing_include-0") + .getByTestId("input-list-minus-btn-edit_metadata_indexing_include-1") .click(); await page .getByTestId("input-list-minus-btn-edit_metadata_indexing_include-1") @@ -164,32 +164,32 @@ test("InputListComponent", async ({ page }) => { .click(); const plusButtonLocatorEdit0 = await page.getByTestId( - "input-list-plus-btn-edit_metadata_indexing_include-0" + "input-list-plus-btn-edit_metadata_indexing_include-0", ); const elementCountEdit0 = await plusButtonLocatorEdit0?.count(); const plusButtonLocatorEdit2 = await page.getByTestId( - "input-list-plus-btn-edit_metadata_indexing_include-2" + "input-list-plus-btn-edit_metadata_indexing_include-2", ); const elementCountEdit2 = await plusButtonLocatorEdit2?.count(); - if (elementCountEdit0 > 0 || elementCountEdit2 > 0) { + if (elementCountEdit0 > 1 || elementCountEdit2 > 0) { expect(false).toBeTruthy(); } const minusButtonLocatorEdit1 = await page.getByTestId( - "input-list-minus-btn-edit_metadata_indexing_include-1" + "input-list-minus-btn-edit_metadata_indexing_include-1", ); const elementCountMinusEdit1 = await minusButtonLocatorEdit1?.count(); const minusButtonLocatorEdit2 = await page.getByTestId( - "input-list-minus-btn-edit_metadata_indexing_include-2" + "input-list-minus-btn-edit_metadata_indexing_include-2", ); const elementCountMinusEdit2 = await minusButtonLocatorEdit2?.count(); - if (elementCountMinusEdit1 > 0 || elementCountMinusEdit2 > 0) { + if (elementCountMinusEdit1 > 1 || elementCountMinusEdit2 > 0) { expect(false).toBeTruthy(); } }); diff --git a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts index 75b8513a6..b91cb6ed5 100644 --- a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts +++ b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts @@ -29,7 +29,7 @@ test("PromptTemplateComponent", async ({ page }) => { await page.waitForTimeout(1000); await page - .locator('//*[@id="inputsPrompt"]') + .locator('//*[@id="promptsPrompt"]') .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); @@ -140,7 +140,7 @@ test("PromptTemplateComponent", async ({ page }) => { await page.locator('//*[@id="showtemplate"]').click(); expect( - await page.locator('//*[@id="showtemplate"]').isChecked() + await page.locator('//*[@id="showtemplate"]').isChecked(), ).toBeTruthy(); await page.locator('//*[@id="showprompt"]').click(); @@ -160,7 +160,7 @@ test("PromptTemplateComponent", async ({ page }) => { await page.locator('//*[@id="showtemplate"]').click(); expect( - await page.locator('//*[@id="showtemplate"]').isChecked() + await page.locator('//*[@id="showtemplate"]').isChecked(), ).toBeTruthy(); await page.locator('//*[@id="showprompt"]').click(); diff --git a/src/frontend/tests/end-to-end/textAreaModalComponent.spec.ts b/src/frontend/tests/end-to-end/textAreaModalComponent.spec.ts index fa4248a63..590d43933 100644 --- a/src/frontend/tests/end-to-end/textAreaModalComponent.spec.ts +++ b/src/frontend/tests/end-to-end/textAreaModalComponent.spec.ts @@ -29,7 +29,7 @@ test("TextAreaModalComponent", async ({ page }) => { await page.waitForTimeout(1000); await page - .locator('//*[@id="inputsPrompt"]') + .locator('//*[@id="promptsPrompt"]') .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); @@ -51,7 +51,7 @@ test("TextAreaModalComponent", async ({ page }) => { await page .getByTestId("textarea-text") .fill( - "test test test test test test test test test test test !@#%*)( 123456789101010101010101111111111 !!!!!!!!!!" + "test test test test test test test test test test test !@#%*)( 123456789101010101010101111111111 !!!!!!!!!!", ); await page.getByTestId("textarea-text-ExternalLink").click(); diff --git a/src/frontend/tests/end-to-end/textInputOutput.spec.ts b/src/frontend/tests/end-to-end/textInputOutput.spec.ts index 7fe74aacb..3d2823ebe 100644 --- a/src/frontend/tests/end-to-end/textInputOutput.spec.ts +++ b/src/frontend/tests/end-to-end/textInputOutput.spec.ts @@ -60,7 +60,7 @@ test("TextInputOutputComponent", async ({ page }) => { // Click and hold on the first element await page .locator( - '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[1]/div/div[2]/div[6]/button/div/div' + '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[1]/div/div[2]/div[6]/button/div/div', ) .hover(); await page.mouse.down(); @@ -68,7 +68,7 @@ test("TextInputOutputComponent", async ({ page }) => { // Move to the second element await page .locator( - '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[9]/div/button/div/div' + '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[3]/div/button/div/div', ) .hover(); @@ -92,7 +92,7 @@ test("TextInputOutputComponent", async ({ page }) => { // Click and hold on the first element await page .locator( - '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[13]/button/div/div' + '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[13]/button/div/div', ) .hover(); await page.mouse.down(); @@ -100,7 +100,7 @@ test("TextInputOutputComponent", async ({ page }) => { // Move to the second element await page .locator( - '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[3]/div/div[2]/div[3]/div/button/div/div' + '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[3]/div/div[2]/div[3]/div/button/div/div', ) .hover(); From 6f0ddc78c75f1575076e1ca6b01c504e5d84f346 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Fri, 14 Jun 2024 11:50:27 -0300 Subject: [PATCH 2/2] refactor: Update chatInputOutput.spec.ts to improve chat input/output interaction --- .../tests/end-to-end/chatInputOutput.spec.ts | 68 +++++++++++++------ .../end-to-end/chatInputOutputUser.spec.ts | 18 +++-- 2 files changed, 62 insertions(+), 24 deletions(-) diff --git a/src/frontend/tests/end-to-end/chatInputOutput.spec.ts b/src/frontend/tests/end-to-end/chatInputOutput.spec.ts index a1429ddec..a5a1719fa 100644 --- a/src/frontend/tests/end-to-end/chatInputOutput.spec.ts +++ b/src/frontend/tests/end-to-end/chatInputOutput.spec.ts @@ -24,31 +24,59 @@ test("chat_io_teste", async ({ page }) => { const jsonContent = readFileSync( "src/frontend/tests/end-to-end/assets/ChatTest.json", - "utf-8" + "utf-8", ); await page.getByTestId("blank-flow").click(); - await page.waitForTimeout(2000); + await page.waitForTimeout(3000); + await page.getByTestId("extended-disclosure").click(); + await page.getByPlaceholder("Search").click(); + await page.getByPlaceholder("Search").fill("chat output"); + await page.waitForTimeout(1000); - // Create the DataTransfer and File - const dataTransfer = await page.evaluateHandle((data) => { - const dt = new DataTransfer(); - // Convert the buffer to a hex array - const file = new File([data], "ChatTest.json", { - type: "application/json", - }); - dt.items.add(file); - return dt; - }, jsonContent); + await page + .getByTestId("outputsChat Output") + .dragTo(page.locator('//*[@id="react-flow-id"]')); + await page.mouse.up(); + await page.mouse.down(); + + await page.getByPlaceholder("Search").click(); + await page.getByPlaceholder("Search").fill("chat input"); + await page.waitForTimeout(1000); + + await page + .getByTestId("inputsChat Input") + .dragTo(page.locator('//*[@id="react-flow-id"]')); + await page.mouse.up(); + await page.mouse.down(); + + 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.getByTitle("zoom out").click(); + await page.getByTitle("zoom out").click(); + await page.getByTitle("zoom out").click(); + await page.getByTitle("zoom out").click(); + + // Click and hold on the first element + await page + .locator( + '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[8]/button/div/div', + ) + .hover(); + await page.mouse.down(); + + // Move to the second element + await page + .locator( + '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[1]/div/div[2]/div[3]/div/button/div/div', + ) + .hover(); + + // Release the mouse + await page.mouse.up(); - // Now dispatch - await page.dispatchEvent( - '//*[@id="react-flow-id"]/div[1]/div[1]/div', - "drop", - { - dataTransfer, - } - ); await page.getByLabel("fit view").click(); await page.getByText("Playground", { exact: true }).click(); await page.getByPlaceholder("Send a message...").click(); diff --git a/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts b/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts index 1b27fa11f..babc40082 100644 --- a/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts +++ b/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts @@ -56,10 +56,20 @@ test("user must interact with chat with Input/Output", async ({ page }) => { .getByTestId("textarea-input_value") .nth(1) .fill( - "testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!" + "testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!", ); + await page.getByText("Playground", { exact: true }).last().click(); await page.getByTestId("icon-LucideSend").click(); await page.getByText("Close", { exact: true }).click(); + await page.getByText("Chat Input", { exact: true }).click(); + await page.getByTestId("advanced-button-modal").click(); + await page.getByTestId("showsender_name").click(); + await page.getByText("Save Changes", { exact: true }).click(); + + await page.getByText("Chat Output", { exact: true }).click(); + await page.getByTestId("advanced-button-modal").click(); + await page.getByTestId("showsender_name").click(); + await page.getByText("Save Changes", { exact: true }).click(); await page .getByTestId("popover-anchor-input-sender_name") @@ -87,9 +97,9 @@ test("user must interact with chat with Input/Output", async ({ page }) => { await page .getByText( "testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!", - { exact: true } + { exact: true }, ) - .isVisible() + .isVisible(), ); }); @@ -199,7 +209,7 @@ test("user must be able to send an image on chat", async ({ page }) => { const jsonContent = readFileSync( "src/frontend/tests/end-to-end/assets/chain.png", - "utf-8" + "utf-8", ); // Create the DataTransfer and File