Skip to content

Commit 07b804d

Browse files
author
Hwashiang Yu
committed
MC-5386: Anchors Under Each Div if TinyMCE link Is Added to Banner/Slide (Add Notification for When Link Attribute Is Entered)
- Combined multiple selectors for url and wysiwyg validation message - Removed newly added action groups and used saveEditPanelAndValidateFieldError action group instead - Added storefront validation to test and check for correct error modal content - Removed unrelated test that was added previously - Added comment to regex check
1 parent 579a9b9 commit 07b804d

File tree

7 files changed

+53
-118
lines changed

7 files changed

+53
-118
lines changed

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/EditFormActionGroup.xml

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,28 +34,6 @@
3434
<waitForElementVisible selector="{{EditPanelForm.panelFieldValidationErrorMessage(property.section, property.fieldName, property.errorMessage)}}" stepKey="waitForErrorMessage"/>
3535
<waitForElementVisible selector="{{EditPanelForm.panelSectionError(property.section)}}" stepKey="waitForSectionError"/>
3636
</actionGroup>
37-
<actionGroup name="saveEditPanelAndValidateFieldErrorUrlInput">
38-
<arguments>
39-
<argument name="property"/>
40-
</arguments>
41-
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMask"/>
42-
<waitForElementVisible time="5" selector="{{EditPanelForm.editFormSave}}" stepKey="waitForColumnSaveButton"/>
43-
<click selector="{{EditPanelForm.editFormSave}}" stepKey="clickSaveColumn"/>
44-
<waitForElementVisible selector="{{EditPanelForm.panelFieldValidationError(property.section, property.fieldName)}}" stepKey="waitForErrorField"/>
45-
<waitForElementVisible selector="{{EditPanelForm.panelUrlInputFieldValidationErrorMessage(property.section, property.fieldName, property.errorMessage)}}" stepKey="waitForErrorMessage"/>
46-
<waitForElementVisible selector="{{EditPanelForm.panelSectionError(property.section)}}" stepKey="waitForSectionError"/>
47-
</actionGroup>
48-
<actionGroup name="saveEditPanelAndValidateFieldErrorWysiwyg">
49-
<arguments>
50-
<argument name="property"/>
51-
</arguments>
52-
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMask"/>
53-
<waitForElementVisible time="5" selector="{{EditPanelForm.editFormSave}}" stepKey="waitForColumnSaveButton"/>
54-
<click selector="{{EditPanelForm.editFormSave}}" stepKey="clickSaveColumn"/>
55-
<waitForElementVisible selector="{{EditPanelForm.panelWysiwygFieldValidationError(property.section, property.fieldName)}}" stepKey="waitForErrorField"/>
56-
<waitForElementVisible selector="{{EditPanelForm.panelWysiwygFieldValidationErrorMessage(property.section, property.fieldName, property.errorMessage)}}" stepKey="waitForErrorMessage"/>
57-
<waitForElementVisible selector="{{EditPanelForm.panelSectionError(property.section)}}" stepKey="waitForSectionError"/>
58-
</actionGroup>
5937
<actionGroup name="saveEditPanelAndValidateFieldErrorGeneralSection">
6038
<arguments>
6139
<argument name="form" defaultValue="EditPanelForm"/>

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/WYSIWYGActionGroup.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
<waitForElementVisible selector="{{section.textInIFrame(property.value)}}" stepKey="waitForTextVisible"/>
2323
<switchToIFrame stepKey="exitIFrame"/>
2424
</actionGroup>
25+
<actionGroup name="replaceTextToTinyMCE" extends="addTextToTinyMCE">
26+
<executeJS function="tinymce.activeEditor.setContent('{{property.value}}')" stepKey="addTextToWYSIWYG"/>
27+
</actionGroup>
2528
<actionGroup name="addVariableToTinyMCE">
2629
<arguments>
2730
<argument name="variable" defaultValue=""/>

app/code/Magento/PageBuilder/Test/Mftf/Data/BannerData.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@
7474
<data key="fieldName">message</data>
7575
<data key="errorMessage">Adding link in both content and outer element is not allowed.</data>
7676
</entity>
77+
<entity name="PageBuilderStageBannerMessageInvalidProperty" type="pagebuilder_banner_message_property">
78+
<data key="errorMessage">Adding link in content and outer element is not allowed. Remove the link from the element before adding links to the content.</data>
79+
</entity>
7780
<!-- Background Color -->
7881
<entity name="PageBuilderBannerBackgroundColor_Empty" type="pagebuilder_banner_background_color_property">
7982
<data key="name">Background Color</data>

app/code/Magento/PageBuilder/Test/Mftf/Data/SlideData.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,4 +247,7 @@
247247
<data key="fieldName">content</data>
248248
<data key="errorMessage">Adding link in both content and outer element is not allowed.</data>
249249
</entity>
250+
<entity name="PageBuilderStageSlideItemMessageInvalidProperty" type="pagebuilder_slide_item_message__property">
251+
<data key="errorMessage">Adding link in content and outer element is not allowed. Remove the link from the element before adding links to the content.</data>
252+
</entity>
250253
</entities>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderEditFormSection.xml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,8 @@
3131
<element name="panelFieldNoPlaceholderText" type="input" selector='//div[@data-index="{{arg1}}"]/descendant::*[@name="{{arg2}}" and not(@placeholder)]' parameterized="true"/>
3232
<element name="panelFieldAfterLabelText" type="text" selector="//div[@data-index='{{arg1}}']//span[@data-bind='text: addafter' and .='{{arg2}}']" parameterized="true"/>
3333
<element name="panelFieldNoAfterLabelText" type="text" selector="//div[@data-index='{{arg1}}']//span[@data-bind='text: addafter']" parameterized="true"/>
34-
<element name="panelFieldValidationError" type="input" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}' and contains(@class,'_error')]//div[contains(@class,'')]//input[@name='{{arg2}}']" parameterized="true"/>
35-
<element name="panelWysiwygFieldValidationError" type="input" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}' and contains(@class,'_error')]//div[contains(@class,'')]//textarea[@name='{{arg2}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}' and contains(@class,'_error')]//div[contains(@class,'')]//div[contains(@class,'mce-tinymce')]" parameterized="true"/>
36-
<element name="panelFieldValidationErrorMessage" type="button" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//input[@name='{{arg2}}']//..//../label[.='{{arg3}}']" parameterized="true"/>
37-
<element name="panelWysiwygFieldValidationErrorMessage" type="button" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//textarea[@name='{{arg2}}']//..//..//../label[.='{{arg3}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//div[contains(@class,'mce-tinymce')]//..//..//../label[.='{{arg3}}']" parameterized="true"/>
38-
<element name="panelUrlInputFieldValidationErrorMessage" type="button" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//input[@name='{{arg2}}']//..//..//../label[.='{{arg3}}']" parameterized="true"/>
34+
<element name="panelFieldValidationError" type="input" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}' and contains(@class,'_error')]//div[contains(@class,'')]//input[@name='{{arg2}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}' and contains(@class,'_error')]//div[contains(@class,'')]//textarea[@name='{{arg2}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}' and contains(@class,'_error')]//div[contains(@class,'')]//div[contains(@class,'mce-tinymce')]" parameterized="true"/>
35+
<element name="panelFieldValidationErrorMessage" type="button" selector="//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//input[@name='{{arg2}}']//..//../label[.='{{arg3}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//textarea[@name='{{arg2}}']//..//..//../label[.='{{arg3}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//div[contains(@class,'mce-tinymce')]//..//..//../label[.='{{arg3}}']|//div[contains(@class,'_insert_form')]//div[@data-index='{{arg1}}']//div[contains(@class,'admin__field-control')]//input[@name='{{arg2}}']//..//..//../label[.='{{arg3}}']" parameterized="true"/>
3936
<element name="panelMultiSelectFieldControl" type="input" selector="aside [data-index='{{arg1}}'] [data-index='{{arg2}}'] [data-role='advanced-select']" parameterized="true"/>
4037
<element name="panelMultiSelectFieldControlInput" type="input" selector="aside [data-index='{{arg1}}'] [data-index='{{arg2}}'] .admin__action-multiselect-search" parameterized="true"/>
4138
<element name="panelMultiSelectFieldControlResult" type="input" selector="//aside//div[@data-index='{{arg1}}']//div[@data-index='{{arg2}}']//div[contains(@class,'action-menu-item')]//span[.='{{arg3}}']" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCommonTest.xml

Lines changed: 24 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -2228,79 +2228,11 @@
22282228
<!-- Validate Image Editor On Storefront -->
22292229
<seeElement selector="{{BannerOnFrontend.messageContentTextAreaImage('1', PageBuilderBackgroundImage_JPG.value)}}" stepKey="validateImageFrontEnd"/>
22302230
</test>
2231-
2232-
<test name="BannerCannotHaveTinyMCELinkAndLinkUrl">
2233-
<annotations>
2234-
<features value="PageBuilder"/>
2235-
<stories value="Banner"/>
2236-
<title value="Can Not Add Both Banner TinyMCE Link and Link URL"/>
2237-
<description value="Banner edit form validate banner TinyMCE Link and Link URL could not be added at the same time."/>
2238-
<severity value="MAJOR"/>
2239-
<useCaseId value="MAGETWO-81599"/>
2240-
<testCaseId value="MC-2823"/>
2241-
<group value="pagebuilder"/>
2242-
<group value="pagebuilder-banner"/>
2243-
<group value="pagebuilder-bannerCommon"/>
2244-
</annotations>
2245-
<before>
2246-
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2247-
<actionGroup ref="navigateToAPageWithPageBuilder" stepKey="navigateToAPageWithPageBuilder"/>
2248-
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage"/>
2249-
</before>
2250-
<after>
2251-
<actionGroup ref="logout" stepKey="logout"/>
2252-
</after>
2253-
<actionGroup ref="addPageBuilderPageTitle" stepKey="enterPageTitle">
2254-
<argument name="contentType" value="PageBuilderBannerContentType"/>
2255-
</actionGroup>
2256-
<actionGroup ref="expandPageBuilderPanelGroup" stepKey="expandPageBuilderPanelGroup">
2257-
<argument name="group" value="PageBuilderBannerContentType"/>
2258-
</actionGroup>
2259-
<actionGroup ref="dragContentTypeToStage" stepKey="dragBannerIntoStage">
2260-
<argument name="contentType" value="PageBuilderBannerContentType"/>
2261-
</actionGroup>
2262-
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditMenuOnStage">
2263-
<argument name="contentType" value="PageBuilderBannerContentType"/>
2264-
</actionGroup>
2265-
<actionGroup ref="selectSlideOutPanelField" stepKey="enterBannerShowOverlayAlways">
2266-
<argument name="property" value="PageBuilderBannerShowContentOverlayAlwaysProperty"/>
2267-
</actionGroup>
2268-
<!-- Check Invalid Min -->
2269-
<comment userInput="Check Invalid Min" stepKey="commentCheckInvalidMin"/>
2270-
<actionGroup ref="fillSlideOutPanelFieldGeneral" stepKey="enterBannerOverlayTransparencyInvalidMin">
2271-
<argument name="property" value="PageBuilderBannerOverlayTransparencyInvalidMinProperty"/>
2272-
</actionGroup>
2273-
<actionGroup ref="saveEditPanelAndValidateFieldError" stepKey="validateInvalidMin">
2274-
<argument name="property" value="PageBuilderBannerOverlayTransparencyInvalidMinProperty"/>
2275-
</actionGroup>
2276-
<!-- Check Invalid Max -->
2277-
<comment userInput="Check Invalid Max" stepKey="commentCheckInvalidMax"/>
2278-
<actionGroup ref="fillSlideOutPanelFieldGeneral" stepKey="enterBannerOverlayTransparencyInvalidMax">
2279-
<argument name="property" value="PageBuilderBannerOverlayTransparencyInvalidMaxProperty"/>
2280-
</actionGroup>
2281-
<actionGroup ref="saveEditPanelAndValidateFieldError" stepKey="validateInvalidMax">
2282-
<argument name="property" value="PageBuilderBannerOverlayTransparencyInvalidMaxProperty"/>
2283-
</actionGroup>
2284-
<!-- Check Invalid Type -->
2285-
<comment userInput="Check Invalid Type" stepKey="commentCheckInvalidType"/>
2286-
<actionGroup ref="fillSlideOutPanelFieldGeneral" stepKey="enterBannerOverlayTransparencyInvalidType">
2287-
<argument name="property" value="PageBuilderBannerOverlayTransparencyInvalidTypeProperty"/>
2288-
</actionGroup>
2289-
<actionGroup ref="saveEditPanelAndValidateFieldError" stepKey="validateInvalidType">
2290-
<argument name="property" value="PageBuilderBannerOverlayTransparencyInvalidTypeProperty"/>
2291-
</actionGroup>
2292-
<!-- Check Valid -->
2293-
<comment userInput="Check Valid" stepKey="commentCheckValid"/>
2294-
<actionGroup ref="fillSlideOutPanelField" stepKey="enterBannerOverlayTransparencyValid">
2295-
<argument name="property" value="PageBuilderBannerOverlayTransparencyDefaultProperty"/>
2296-
</actionGroup>
2297-
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings"/>
2298-
</test>
22992231
<test name="BannerCannotHaveInlineWysiwygLinkAndLinkUrl">
23002232
<annotations>
23012233
<features value="PageBuilder"/>
23022234
<stories value="Banner"/>
2303-
<title value="Banner inline WYSIWYG editor will notify user of not adding "/>
2235+
<title value="Banner inline WYSIWYG editor will notify user of could not add TinyMCE Link and Link URL at the same time"/>
23042236
<description value="Banner edit form and inline editor validate banner TinyMCE Link and Link URL could not be added at the same time."/>
23052237
<severity value="MAJOR"/>
23062238
<useCaseId value="MC-5386"/>
@@ -2330,7 +2262,7 @@
23302262
<argument name="contentType" value="PageBuilderBannerContentType"/>
23312263
</actionGroup>
23322264
<!-- Check Invalid Link Url and Message Text -->
2333-
<comment userInput="- Check Invalid Link Url and Message Text" stepKey="commentCheckInvalidLinkUrlAndMessageText"/>
2265+
<comment userInput="Check Invalid Link Url and Message Text" stepKey="commentCheckInvalidLinkUrlAndMessageText"/>
23342266
<actionGroup ref="fillSlideOutPanelLinkUrlField" stepKey="enterLink">
23352267
<argument name="property" value="PageBuilderBannerLinkUrlProperty"/>
23362268
<argument name="selection" value="{{ExternalLink.url}}"/>
@@ -2340,43 +2272,35 @@
23402272
<argument name="url" value="{{ExternalLink.googleUrl}}"/>
23412273
<argument name="textToDisplay" value="{{ExternalLink.googleUrl}}"/>
23422274
</actionGroup>
2343-
<actionGroup ref="saveEditPanelAndValidateFieldErrorUrlInput" stepKey="validateInvalidLinkUrl">
2275+
<actionGroup ref="saveEditPanelAndValidateFieldError" stepKey="validateInvalidLinkUrl">
23442276
<argument name="property" value="PageBuilderBannerLinkUrlInvalidProperty"/>
23452277
</actionGroup>
2346-
<actionGroup ref="saveEditPanelAndValidateFieldErrorWysiwyg" stepKey="validateInvalidMessageWithUrl">
2278+
<actionGroup ref="saveEditPanelAndValidateFieldError" stepKey="validateInvalidMessageWithUrl">
23472279
<argument name="property" value="PageBuilderBannerMessageInvalidProperty"/>
23482280
</actionGroup>
2349-
<!-- Reset and Fill Url -->
2350-
<comment userInput="Reset and Fill Url" stepKey="commentResetAndFillUrl"/>
2351-
<actionGroup ref="closeEditPanelSettings" stepKey="closeEditPanelSettings"/>
2352-
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditMenuOnStageAfterInitialValidation">
2353-
<argument name="contentType" value="PageBuilderBannerContentType"/>
2354-
</actionGroup>
2355-
<actionGroup ref="fillSlideOutPanelLinkUrlField" stepKey="enterLinkAfterInitialValidation">
2356-
<argument name="property" value="PageBuilderBannerLinkUrlProperty"/>
2357-
<argument name="selection" value="{{ExternalLink.url}}"/>
2358-
<argument name="newTab" value="PageBuilderBannerNewTabProperty"/>
2359-
</actionGroup>
2360-
<actionGroup ref="addTextToTinyMCE" stepKey="enterMessageText">
2281+
<!-- Correcting invalid fields -->
2282+
<comment userInput="Correcting invalid fields" stepKey="commentCorrectingInvalidFields"/>
2283+
<actionGroup ref="replaceTextToTinyMCE" stepKey="replaceMessageText">
23612284
<argument name="property" value="PageBuilderBannerMessageProperty"/>
23622285
<argument name="section" value="BannerOnConfigurationPanel"/>
23632286
</actionGroup>
23642287
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings"/>
2365-
<!-- Validate Inline Editor -->
2366-
<comment userInput="Validate Inline Editor" stepKey="commentValidateInlineEditor"/>
2288+
<!-- Check inline editor will validate for not allowing TinyMCE Link and Link URL at the same time -->
2289+
<comment userInput="Check inline editor will validate for not allowing TinyMCE Link and Link URL at the same time" stepKey="commentCheckInlineEditorPreventAddingBothUrls"/>
23672290
<click selector="{{PageBuilderStage.inlineWYSIWYGEditor(PageBuilderBannerContentType.role, '1')}}" stepKey="focusOnEditorArea"/>
23682291
<waitForElementVisible selector="{{PageBuilderStage.inlineWYSIWYGEditorPanel(PageBuilderBannerContentType.role, '1')}}" stepKey="waitForEditorPanel"/>
23692292
<actionGroup ref="addPageLinkToTinyMCEInline" stepKey="insertLinkInStageInlineEditor">
23702293
<argument name="url" value="{{ExternalLink.googleUrl}}"/>
23712294
<argument name="textToDisplay" value="{{ExternalLink.googleUrl}}"/>
23722295
</actionGroup>
2296+
<seeElement selector="{{PageBuilderStage.modal(PageBuilderStageBannerMessageInvalidProperty.errorMessage)}}" stepKey="seeCorrectErrorModal"/>
23732297
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingLinkModal"/>
23742298
<executeJS function="return (/&lt;a[\s]+([^&gt;]+)&gt;|&lt;a&gt;|&lt;\/a&gt;/igm).test(tinymce.activeEditor.getContent());" stepKey="grabIfAnchorInWysiwygBoolean"/>
23752299
<assertFalse stepKey="assertMessageHasNoAnchorTags">
23762300
<actualResult type="variable">grabIfAnchorInWysiwygBoolean</actualResult>
23772301
</assertFalse>
2378-
<!-- Validate Slide Out Editor -->
2379-
<comment userInput="Validate Slide Out Editor" stepKey="commentValidateSlideOutEditor"/>
2302+
<!-- Check slide out editor will validate for not allowing TinyMCE Link and Link URL at the same time -->
2303+
<comment userInput="Check slide out editor will validate for not allowing TinyMCE Link and Link URL at the same time" stepKey="commentCheckSlideOutEditorPreventAddingBothUrls"/>
23802304
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unFocusEditor"/>
23812305
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditMenuOnStageAfterInlineValidation">
23822306
<argument name="contentType" value="PageBuilderBannerContentType"/>
@@ -2385,5 +2309,17 @@
23852309
<assertFalse stepKey="assertMessageHasNoAnchorTags2">
23862310
<actualResult type="variable">grabIfAnchorInSlideOutWysiwygBoolean</actualResult>
23872311
</assertFalse>
2312+
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings2"/>
2313+
<actionGroup ref="saveAndContinueEditCmsPage" stepKey="saveAndContinueEditCmsPage"/>
2314+
<!-- Storefront: Validate No Link in Banner Content -->
2315+
<comment userInput="Storefront: Validate No Link in Banner Content" stepKey="CommentValidateNoLinkInBannerContent"/>
2316+
<actionGroup ref="navigateToStoreFront" stepKey="navigateToStoreFront">
2317+
<argument name="contentType" value="PageBuilderBannerContentType"/>
2318+
</actionGroup>
2319+
<!-- Checks for a tags within the message with regex -->
2320+
<executeJS function="return (/&lt;a[\s]+([^&gt;]+)&gt;|&lt;a&gt;|&lt;\/a&gt;/igm).test({{BannerOnFrontend.contentJS('1')}}.innerHTML);" stepKey="grabIfFrontendAnchorInContentBoolean"/>
2321+
<assertFalse stepKey="assertFrontendMessageHasNoAnchorTags">
2322+
<actualResult type="variable">grabIfFrontendAnchorInContentBoolean</actualResult>
2323+
</assertFalse>
23882324
</test>
23892325
</tests>

0 commit comments

Comments
 (0)