From f7ad36b21144fcb0a049d754be832d4e170b3697 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Date: Fri, 26 Jul 2024 16:21:17 -0300 Subject: [PATCH] fix: ctrl a not working on edit node table (#2992) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * removed console log and fixed nulland * Fixed ag grid version mismatch * Fixed unused import * Fixed ctrl+a not working on edit node and tweaks * Fixed styling on editnode * Made it work on mac * ✅ (generalBugs-shard-7.spec.ts): add end-to-end test for selecting all with ctrl + A on advanced modal to ensure functionality works as expected --------- Co-authored-by: cristhianzl --- src/frontend/package-lock.json | 34 +++-- src/frontend/package.json | 4 +- .../tableAdvancedToggleCellRender/index.tsx | 3 +- .../components/tableNodeCellRender/index.tsx | 2 +- .../src/components/tableComponent/index.tsx | 1 - .../editNodeModal/hooks/use-column-defs.tsx | 3 + .../end-to-end/generalBugs-shard-7.spec.ts | 117 ++++++++++++++++++ 7 files changed, 140 insertions(+), 24 deletions(-) create mode 100644 src/frontend/tests/end-to-end/generalBugs-shard-7.spec.ts diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index ff9d7e8c5..231dc6f2f 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -35,8 +35,8 @@ "@tanstack/react-query": "^5.49.2", "@types/axios": "^0.14.0", "ace-builds": "^1.35.0", - "ag-grid-community": "^32.0.0", - "ag-grid-react": "^31.3.2", + "ag-grid-community": "^32.0.2", + "ag-grid-react": "^32.0.2", "ansi-to-html": "^0.7.2", "axios": "^1.7.2", "base64-js": "^1.5.1", @@ -5655,24 +5655,27 @@ } }, "node_modules/ag-charts-types": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ag-charts-types/-/ag-charts-types-10.0.0.tgz", - "integrity": "sha512-jjiwrzydERou4yp9WHiJeVK237B7BUP3/4j6tdycyHag266YVWa/BMNtTOThWJKGku+m+TC2qfaujLYixgcbrQ==" + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/ag-charts-types/-/ag-charts-types-10.0.2.tgz", + "integrity": "sha512-Nxo5slHOXlaeg0gRIsVnovAosQzzlYfWJtdDy0Aq/VvpJru/PJ+5i2c9aCyEhgRxhBjImsoegwkgRj7gNOWV6Q==", + "license": "MIT" }, "node_modules/ag-grid-community": { - "version": "32.0.0", - "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-32.0.0.tgz", - "integrity": "sha512-H0I19/+SXTP/uMeG58nlm/Fj1rMKlX6mnbMW+MrfJ+e0/aguOtrOG+UGOn8f3CTmSwjOIQquCmu3gK8hBMqgtQ==", + "version": "32.0.2", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-32.0.2.tgz", + "integrity": "sha512-vLJJUjnsG9hNK41GNuW2EHu1W264kxA/poOpcX4kmyrjU5Uzvelsbj3HdKAO9POV28iqyRdKGYfAWdn8QzA7KA==", + "license": "MIT", "dependencies": { - "ag-charts-types": "10.0.0" + "ag-charts-types": "10.0.2" } }, "node_modules/ag-grid-react": { - "version": "31.3.2", - "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-31.3.2.tgz", - "integrity": "sha512-SFHN05bsXp901rIT00Fa6iQLCtyavoJiKaXEDUtAU5LMu+GTkjs/FPQBQ8754omgdDFr4NsS3Ri6QbqBne3rug==", + "version": "32.0.2", + "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-32.0.2.tgz", + "integrity": "sha512-IWYsoyJ/Z763rWbE5/9SaT1n5xwIKrm/QzOG14l7i8z5J6JdJwfV0aQFATmEE8Xws2H48vlLcLdW1cv4hwV3eg==", + "license": "MIT", "dependencies": { - "ag-grid-community": "31.3.2", + "ag-grid-community": "32.0.2", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -5680,11 +5683,6 @@ "react-dom": "^16.3.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/ag-grid-react/node_modules/ag-grid-community": { - "version": "31.3.2", - "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.2.tgz", - "integrity": "sha512-GxqFRD0OcjaVRE1gwLgoP0oERNPH8Lk8wKJ1txulsxysEQ5dZWHhiIoXXSiHjvOCVMkK/F5qzY6HNrn6VeDMTQ==" - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", diff --git a/src/frontend/package.json b/src/frontend/package.json index 6505ee9b3..baf6af68f 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -30,8 +30,8 @@ "@tanstack/react-query": "^5.49.2", "@types/axios": "^0.14.0", "ace-builds": "^1.35.0", - "ag-grid-community": "^32.0.0", - "ag-grid-react": "^31.3.2", + "ag-grid-community": "^32.0.2", + "ag-grid-react": "^32.0.2", "ansi-to-html": "^0.7.2", "axios": "^1.7.2", "base64-js": "^1.5.1", diff --git a/src/frontend/src/components/tableComponent/components/tableAdvancedToggleCellRender/index.tsx b/src/frontend/src/components/tableComponent/components/tableAdvancedToggleCellRender/index.tsx index 4cf60c801..6525e0ac5 100644 --- a/src/frontend/src/components/tableComponent/components/tableAdvancedToggleCellRender/index.tsx +++ b/src/frontend/src/components/tableComponent/components/tableAdvancedToggleCellRender/index.tsx @@ -40,9 +40,8 @@ export default function TableAdvancedToggleCellRender({ { - console.log(e, parameter); handleOnNewValue({ advanced: !e }); }} size="small" diff --git a/src/frontend/src/components/tableComponent/components/tableNodeCellRender/index.tsx b/src/frontend/src/components/tableComponent/components/tableNodeCellRender/index.tsx index d1665a7f9..9b6275700 100644 --- a/src/frontend/src/components/tableComponent/components/tableNodeCellRender/index.tsx +++ b/src/frontend/src/components/tableComponent/components/tableNodeCellRender/index.tsx @@ -38,7 +38,7 @@ export default function TableNodeCellRender({ return ( parameter && ( -
+
+ params.event.key === "a" && + (params.event.ctrlKey || params.event.metaKey), minWidth: 340, autoHeight: true, flex: 1, diff --git a/src/frontend/tests/end-to-end/generalBugs-shard-7.spec.ts b/src/frontend/tests/end-to-end/generalBugs-shard-7.spec.ts new file mode 100644 index 000000000..0337ad097 --- /dev/null +++ b/src/frontend/tests/end-to-end/generalBugs-shard-7.spec.ts @@ -0,0 +1,117 @@ +import { expect, test } from "@playwright/test"; +import uaParser from "ua-parser-js"; + +test("should be able to select all with ctrl + A on advanced modal", async ({ + page, +}) => { + await page.goto("/"); + + let modalCount = 0; + + try { + const modalTitleElement = await page?.getByTestId("modal-title"); + if (modalTitleElement) { + modalCount = await modalTitleElement.count(); + } + } catch (error) { + modalCount = 0; + } + + while (modalCount === 0) { + await page.getByText("New Project", { exact: true }).click(); + await page.waitForTimeout(5000); + modalCount = await page.getByTestId("modal-title")?.count(); + } + + await page.waitForSelector('[data-testid="blank-flow"]', { + timeout: 30000, + }); + + await page.getByTestId("blank-flow").click(); + await page.waitForSelector('[data-testid="extended-disclosure"]', { + timeout: 30000, + }); + + await page.getByTestId("extended-disclosure").click(); + await page.getByPlaceholder("Search").click(); + await page.getByPlaceholder("Search").fill("ollama"); + await page.waitForTimeout(1000); + + await page + .getByTestId("embeddingsOllama Embeddings") + .dragTo(page.locator('//*[@id="react-flow-id"]')); + + await page.getByTitle("fit view").click(); + await page.getByTitle("zoom out").click(); + await page.getByTitle("zoom out").click(); + + const getUA = await page.evaluate(() => navigator.userAgent); + const userAgentInfo = uaParser(getUA); + let control = "Control"; + + if (userAgentInfo.os.name.includes("Mac")) { + control = "Meta"; + } + + await page.getByTestId("div-generic-node").click(); + + await page.keyboard.press(`${control}+Shift+A`); + + await page.waitForTimeout(1000); + + await page + .getByPlaceholder("Type something...") + .nth(2) + .fill("ollama_test_ctrl_a_first_input"); + let value = await page + .getByPlaceholder("Type something...") + .nth(2) + .inputValue(); + expect(value).toBe("ollama_test_ctrl_a_first_input"); + + await page + .getByPlaceholder("Type something...") + .last() + .fill("ollama_test_ctrl_a_second_input"); + let secondValue = await page + .getByPlaceholder("Type something...") + .last() + .inputValue(); + expect(secondValue).toBe("ollama_test_ctrl_a_second_input"); + + await page.getByPlaceholder("Type something...").last().click(); + await page.waitForTimeout(1000); + + await page.keyboard.down(control); + await page.waitForTimeout(200); + await page.keyboard.press("a"); + await page.keyboard.up(control); + + await page.waitForTimeout(1000); + + await page.keyboard.down(control); + await page.waitForTimeout(200); + await page.keyboard.press("c"); + await page.keyboard.up(control); + + await page.waitForTimeout(1000); + + await page.getByPlaceholder("Type something...").nth(2).click(); + + await page.waitForTimeout(1000); + + await page.keyboard.down(control); + await page.waitForTimeout(200); + await page.keyboard.press("a"); + await page.keyboard.up(control); + + await page.waitForTimeout(1000); + + await page.keyboard.down(control); + await page.waitForTimeout(200); + await page.keyboard.press("v"); + await page.keyboard.up(control); + + value = await page.getByPlaceholder("Type something...").nth(2).inputValue(); + expect(value).toBe("ollama_test_ctrl_a_second_input"); +});