From fe88eeaf109487e73e9cb4b90fbaa6d5f6396ade Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Fri, 28 Feb 2025 15:52:57 +0530 Subject: [PATCH 1/5] add ce files --- app/client/cypress/tags.js | 1 + .../widgets/src/components/TextArea/src/TextArea.tsx | 2 ++ .../design-system/widgets/src/components/TextArea/src/types.ts | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/client/cypress/tags.js b/app/client/cypress/tags.js index d40eb2e43e29..be931a646a04 100644 --- a/app/client/cypress/tags.js +++ b/app/client/cypress/tags.js @@ -73,5 +73,6 @@ module.exports = { "@tag.Workspace", "@tag.airgap", "@tag.excludeForAirgap", + "@tag.AIAgents", ], }; diff --git a/app/client/packages/design-system/widgets/src/components/TextArea/src/TextArea.tsx b/app/client/packages/design-system/widgets/src/components/TextArea/src/TextArea.tsx index 6fc6c23c2f93..7da5c0b2298e 100644 --- a/app/client/packages/design-system/widgets/src/components/TextArea/src/TextArea.tsx +++ b/app/client/packages/design-system/widgets/src/components/TextArea/src/TextArea.tsx @@ -21,6 +21,7 @@ interface Size { export function TextArea(props: TextAreaProps) { const { contextualHelp, + "data-testid": dataTestId, errorMessage, fieldClassName, inputClassName, @@ -141,6 +142,7 @@ export function TextArea(props: TextAreaProps) { ; - maxRows?: number; + "data-testid"?: string; } From f237662e940ff75d10d01e20eed765f95b3a0562 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Fri, 28 Feb 2025 16:20:20 +0530 Subject: [PATCH 2/5] add more ce files --- app/client/cypress/support/Constants.js | 1 + .../cypress/support/Pages/AggregateHelper.ts | 56 +++++++++++++++++++ .../support/Pages/Anvil/Locators/index.ts | 23 ++++++++ app/client/cypress/support/commands.js | 5 +- 4 files changed, 83 insertions(+), 2 deletions(-) diff --git a/app/client/cypress/support/Constants.js b/app/client/cypress/support/Constants.js index 0fe95fd43976..30c6272abe0a 100644 --- a/app/client/cypress/support/Constants.js +++ b/app/client/cypress/support/Constants.js @@ -119,6 +119,7 @@ export const TABLE_DATA_STATIC = ` export const WALKTHROUGH_TEST_PAGE = "WALKTHROUGH_TEST_PAGE"; export const ANVIL_EDITOR_TEST = "ANVIL_EDITOR_TEST"; +export const AI_AGENTS_TEST = "AI_AGENTS_TEST"; export const DEFAULT_COLUMN_NAME = "Table Column"; export const FEATURE_WALKTHROUGH_INDEX_KEY = "FEATURE_WALKTHROUGH"; export const USER_SIGN_UP_INDEX_KEY = "USER_SIGN_UP"; diff --git a/app/client/cypress/support/Pages/AggregateHelper.ts b/app/client/cypress/support/Pages/AggregateHelper.ts index e91fc6fd5219..fa74ea5a239f 100644 --- a/app/client/cypress/support/Pages/AggregateHelper.ts +++ b/app/client/cypress/support/Pages/AggregateHelper.ts @@ -2094,4 +2094,60 @@ export class AggregateHelper { return fetchEmail(); } + + public getCanvasWidgetStateByWidgetName(widgetName: string): any { + return cy + .window() + .its("store") + .invoke("getState") + .then((state) => { + const widgets = state.entities.canvasWidgets; + + const widgetId = Object.keys(widgets).find((widgetId) => { + if (widgets[widgetId].widgetName === widgetName) { + return widgets[widgetId]; + } + }); + + if (!widgetId) return null; + + return widgets[widgetId]; + }); + } + + public getDatasourceStateByName(datasourceName: string): any { + return cy + .window() + .its("store") + .invoke("getState") + .then((state) => { + const datasources = state.entities.datasources.list; + + const datasource = datasources.find( + (datasource: any) => datasource.name === datasourceName, + ); + + if (!datasource) return null; + + return datasource; + }); + } + + public getActionStateByName(actionName: string): any { + return cy + .window() + .its("store") + .invoke("getState") + .then((state) => { + const actions = state.entities.actions; + + const action = actions.find( + (action: any) => action.config.name === actionName, + ); + + if (!action) return null; + + return action; + }); + } } diff --git a/app/client/cypress/support/Pages/Anvil/Locators/index.ts b/app/client/cypress/support/Pages/Anvil/Locators/index.ts index 21bf736b7134..81f28a8c384f 100644 --- a/app/client/cypress/support/Pages/Anvil/Locators/index.ts +++ b/app/client/cypress/support/Pages/Anvil/Locators/index.ts @@ -31,6 +31,27 @@ const anvilModalWidgetSelectors = { }, }; +const anvilAIChatWidgetSelectors = { + anvilAIChatInputSelector: (widgetName: string) => { + return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-input-text-area"]`; + }, + anvilAIChatSendButtonSelector: (widgetName: string) => { + return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-input-send-button"]`; + }, + anvilAIChatMessageListSelector: (widgetName: string) => { + return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-message-list"]`; + }, + anvilAIChatMessageItemSelector: (widgetName: string) => { + return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-message-item"]`; + }, + anvilAIChatHeaderDeleteButtonSelector: (widgetName: string) => { + return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-header-delete-button"]`; + }, + anvilAIChatPromptSuggestionListSelector: (widgetName: string) => { + return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-prompt-suggestion-list"]`; + }, +}; + const anvilOnCanvasUISelectors = { anvilOnCanvasWidgetNameSelector: "[data-testid=t--anvil-draggable-widget-name]", @@ -65,6 +86,7 @@ const anvilWidgetsLocators = { WDSMODAL: "wdsmodalwidget", SECTION: "sectionwidget", ZONE: "zonewidget", + WDSAICHAT: "wdsaichatwidget", }; export const anvilLocators = { @@ -74,4 +96,5 @@ export const anvilLocators = { ...anvilSectionAndZonesBasedSelectors, ...anvilDnDBasedSelectors, ...anvilOnCanvasUISelectors, + ...anvilAIChatWidgetSelectors, }; diff --git a/app/client/cypress/support/commands.js b/app/client/cypress/support/commands.js index d3e25fdc1be9..2695b9616d75 100644 --- a/app/client/cypress/support/commands.js +++ b/app/client/cypress/support/commands.js @@ -1,7 +1,7 @@ /* eslint-disable cypress/no-unnecessary-waiting */ /* eslint-disable cypress/no-assigning-return-values */ /* This file is used to maintain comman methods across tests , refer other *.js files for adding common methods */ -import { ANVIL_EDITOR_TEST } from "./Constants.js"; +import { ANVIL_EDITOR_TEST, AI_AGENTS_TEST } from "./Constants.js"; import advancedFormat from "dayjs/plugin/advancedFormat"; import EditorNavigation, { @@ -741,7 +741,8 @@ Cypress.Commands.add("startServerAndRoutes", () => { cy.intercept("PUT", "/api/v1/git/discard/app/*").as("discardChanges"); cy.intercept("GET", "/api/v1/libraries/*").as("getLibraries"); - if (Cypress.currentTest.titlePath[0].includes(ANVIL_EDITOR_TEST)) { + if (Cypress.currentTest.titlePath[0].includes(ANVIL_EDITOR_TEST) || + Cypress.currentTest.titlePath[0].includes(AI_AGENTS_TEST)) { // intercept features call for creating pages that support Anvil + WDS tests featureFlagIntercept({ release_anvil_enabled: true }, false); } else { From e2a151f191bac59ce558853f634611e9f7978f86 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Fri, 28 Feb 2025 16:28:45 +0530 Subject: [PATCH 3/5] fix prettier bugs --- app/client/cypress/support/commands.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/client/cypress/support/commands.js b/app/client/cypress/support/commands.js index 2695b9616d75..96dba3434e3d 100644 --- a/app/client/cypress/support/commands.js +++ b/app/client/cypress/support/commands.js @@ -741,8 +741,10 @@ Cypress.Commands.add("startServerAndRoutes", () => { cy.intercept("PUT", "/api/v1/git/discard/app/*").as("discardChanges"); cy.intercept("GET", "/api/v1/libraries/*").as("getLibraries"); - if (Cypress.currentTest.titlePath[0].includes(ANVIL_EDITOR_TEST) || - Cypress.currentTest.titlePath[0].includes(AI_AGENTS_TEST)) { + if ( + Cypress.currentTest.titlePath[0].includes(ANVIL_EDITOR_TEST) || + Cypress.currentTest.titlePath[0].includes(AI_AGENTS_TEST) + ) { // intercept features call for creating pages that support Anvil + WDS tests featureFlagIntercept({ release_anvil_enabled: true }, false); } else { From eaa782ebf4ddad0235812da2c20d11142dc0dd47 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Fri, 7 Mar 2025 16:12:29 +0530 Subject: [PATCH 4/5] remove ai chat locators in ce --- .../support/Pages/Anvil/Locators/index.ts | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/app/client/cypress/support/Pages/Anvil/Locators/index.ts b/app/client/cypress/support/Pages/Anvil/Locators/index.ts index 81f28a8c384f..21bf736b7134 100644 --- a/app/client/cypress/support/Pages/Anvil/Locators/index.ts +++ b/app/client/cypress/support/Pages/Anvil/Locators/index.ts @@ -31,27 +31,6 @@ const anvilModalWidgetSelectors = { }, }; -const anvilAIChatWidgetSelectors = { - anvilAIChatInputSelector: (widgetName: string) => { - return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-input-text-area"]`; - }, - anvilAIChatSendButtonSelector: (widgetName: string) => { - return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-input-send-button"]`; - }, - anvilAIChatMessageListSelector: (widgetName: string) => { - return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-message-list"]`; - }, - anvilAIChatMessageItemSelector: (widgetName: string) => { - return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-message-item"]`; - }, - anvilAIChatHeaderDeleteButtonSelector: (widgetName: string) => { - return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-header-delete-button"]`; - }, - anvilAIChatPromptSuggestionListSelector: (widgetName: string) => { - return `${anvilWidgetBasedSelectors.anvilWidgetNameSelector(widgetName)} [data-testid="t--ai-chat-prompt-suggestion-list"]`; - }, -}; - const anvilOnCanvasUISelectors = { anvilOnCanvasWidgetNameSelector: "[data-testid=t--anvil-draggable-widget-name]", @@ -86,7 +65,6 @@ const anvilWidgetsLocators = { WDSMODAL: "wdsmodalwidget", SECTION: "sectionwidget", ZONE: "zonewidget", - WDSAICHAT: "wdsaichatwidget", }; export const anvilLocators = { @@ -96,5 +74,4 @@ export const anvilLocators = { ...anvilSectionAndZonesBasedSelectors, ...anvilDnDBasedSelectors, ...anvilOnCanvasUISelectors, - ...anvilAIChatWidgetSelectors, }; From d7fc099930a658b3d68cc5ef063661df02765801 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Fri, 7 Mar 2025 16:19:35 +0530 Subject: [PATCH 5/5] fix types --- .../design-system/widgets/src/components/TextArea/src/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/client/packages/design-system/widgets/src/components/TextArea/src/types.ts b/app/client/packages/design-system/widgets/src/components/TextArea/src/types.ts index 3b53f53c192d..9d5a0dcf50ed 100644 --- a/app/client/packages/design-system/widgets/src/components/TextArea/src/types.ts +++ b/app/client/packages/design-system/widgets/src/components/TextArea/src/types.ts @@ -11,5 +11,6 @@ export interface TextAreaProps extends AriaTextFieldProps, FieldProps { fieldClassName?: string; inputClassName?: string; size?: Exclude; + maxRows?: number; "data-testid"?: string; }