PromucFlow_constructor/app/client/cypress/locators/WidgetLocators.ts

53 lines
1.7 KiB
TypeScript
Raw Normal View History

export const WIDGET = {
INPUT_V2: "inputwidgetv2",
TEXT: "textwidget",
TEXTNAME: (index: string) => `Text${index}`,
PHONE_INPUT: "phoneinputwidget",
CURRENCY_INPUT: "currencyinputwidget",
BUTTON: "buttonwidget",
BUTTONNAME: (index: string) => `Button${index}`,
MULTISELECT: "multiselectwidgetv2",
BUTTON_GROUP: "buttongroupwidget",
TREESELECT: "singleselecttreewidget",
TAB: "tabswidget",
TABLE: "tablewidgetv2",
SWITCHGROUP: "switchgroupwidget",
SWITCH: "switchwidget",
SELECT: "selectwidget",
MULTITREESELECT: "multiselecttreewidget",
RADIO_GROUP: "radiogroupwidget",
LIST: "listwidget",
RATING: "ratewidget",
CHECKBOXGROUP: "checkboxgroupwidget",
CHECKBOX: "checkboxwidget",
AUDIO: "audiowidget",
AUDIORECORDER: "audiorecorderwidget",
PHONEINPUT: "phoneinputwidget",
CAMERA: "camerawidget",
FILEPICKER: "filepickerwidgetv2",
DOCUMENT_VIEWER: "documentviewerwidget",
VIDEO: "videowidget",
CATEGORY_SLIDER: "categorysliderwidget",
NUMBER_SLIDER: "numbersliderwidget",
RANGE_SLIDER: "rangesliderwidget",
feat: Add postMessage as a global function (#14925) ## Description **Revert Context -** Reverts appsmithorg/appsmith#14890 (We had to revert the PR as we got some suggestions on improving the feature - now reverting the revert so we can have this feature out with improvements) **PR Context -** This pull request exposes window.postMessage() as a global function in the Appsmith platform. Post message safely enables cross-origin communication between window objects. Example use-case - Appsmith page embedded within an iframe which communicates with the container website Diagram for all the different levels of communication - ![Untitled-2022-09-12-1205](https://user-images.githubusercontent.com/10229595/189592030-98bc29ac-b94e-4c75-8567-965757cc0d18.png) **More on post message here** - https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage **References used for this PR:** 1. Geolocation APIs - https://github.com/appsmithorg/appsmith/pull/9295 2. setInterval and clearInterval support - https://github.com/appsmithorg/appsmith/pull/8158 **Fixes** https://github.com/appsmithorg/appsmith/issues/7241 ## Type of change - New feature (non-breaking change which adds functionality) ## How Has This Been Tested? Test plan - **Manual**: Created an app with different buttons holding different types of data and embedded it in a code sandbox within an iframe. Also removed the target origin which throws an error (App link - https://dev.appsmith.com/app/post-msg-app/page1-624c1af4d8e632741017682e, Codesandbox link - https://codesandbox.io/s/compassionate-tdd-6dnzzd?file=/src/index.js) - Added Jest tests - https://github.com/appsmithorg/TestSmith/issues/1892 - https://github.com/appsmithorg/TestSmith/issues/2068 - https://github.com/appsmithorg/TestSmith/issues/2069 - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-10-20 07:09:42 +00:00
IFRAME: "iframewidget",
} as const;
// property pane element selector are maintained here
export const PROPERTY_SELECTOR = {
// input
onClick: ".t--property-control-onclick",
onSubmit: ".t--property-control-onsubmit",
text: ".t--property-control-text",
defaultValue: ".t--property-control-defaultselectedvalues",
propertyName: ".t--property-control-propertyname",
onClickFieldName: "onClick",
TextFieldName: "Text",
};
type ValueOf<T> = T[keyof T];
export const getWidgetSelector = (widget: ValueOf<typeof WIDGET>) =>
`.t--widget-${widget}`;
export const getWidgetInputSelector = (widget: ValueOf<typeof WIDGET>) =>
`.t--widget-${widget} input`;