Skip to content

Commit 3c80707

Browse files
committed
MC-4137: TinyMCE Issues within inline WYSIWYG
1 parent 9a2affb commit 3c80707

File tree

5 files changed

+211
-0
lines changed

5 files changed

+211
-0
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,24 @@
176176
<waitForPageLoad stepKey="waitForPageLoad2"/>
177177
<waitForElementNotVisible selector="{{WYSIWYGInsertLinkModal.modal}}" stepKey="waitForInsertLinkModalGone"/>
178178
</actionGroup>
179+
<actionGroup name="insertLinkInWYSIWYGExistingText">
180+
<arguments>
181+
<argument name="section" defaultValue="TinyMCESection"/>
182+
<argument name="url" type="string"/>
183+
<argument name="title" type="string" defaultValue=""/>
184+
<argument name="wysiwygArea" defaultValue="{{WYSIWYGOnPageBuilderInline.notCss}}" type="string"/>
185+
</arguments>
186+
<comment userInput="insertLinkInWYSIWYGExistingText" stepKey="comment"/>
187+
<waitForElementVisible selector="{{wysiwygArea}} {{section.InsertLink}}" stepKey="waitForInsertLinkButton"/>
188+
<click selector="{{wysiwygArea}} {{section.InsertLink}}" stepKey="clickInsertLinkButton"/>
189+
<waitForPageLoad stepKey="waitForPageLoad"/>
190+
<waitForElementVisible selector="{{WYSIWYGInsertLinkModal.modal}}" stepKey="waitForInsertLinkModal"/>
191+
<fillField selector="{{WYSIWYGInsertLinkModal.urlInput}}" userInput="{{url}}" stepKey="insertUrl"/>
192+
<fillField selector="{{WYSIWYGInsertLinkModal.titleInput}}" userInput="{{title}}" stepKey="insertTitle"/>
193+
<click selector="{{WYSIWYGInsertLinkModal.okButton}}" stepKey="clickOkButton"/>
194+
<waitForPageLoad stepKey="waitForPageLoad2"/>
195+
<waitForElementNotVisible selector="{{WYSIWYGInsertLinkModal.modal}}" stepKey="waitForInsertLinkModalGone"/>
196+
</actionGroup>
179197
<actionGroup name="assertTextareaContainsValue">
180198
<arguments>
181199
<argument name="selector" type="string"/>

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,9 @@
6767
<data key="editPanelValue">{{widget type="Magento\Cms\Block\Widget\Page\Link" template="widget/link/link_block.phtml" page_id="2" type_name="CMS Page Link"}}</data>
6868
<data key="identifier">home</data>
6969
</entity>
70+
<entity name="PageBuilderVariableWidgetText" type="pagebuilder_text_property">
71+
<data key="value">test string</data>
72+
<data key="expectedString1">test str</data>
73+
<data key="expectedString2">ing</data>
74+
</entity>
7075
</entities>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
<element name="notHidden" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]/parent::*[contains(@class, 'pagebuilder-content-type-wrapper') and not(contains(@class, 'pagebuilder-content-type-hidden'))][1]" parameterized="true"/>
1515
<element name="textAreaTextContains" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//textarea[contains(@value,'{{arg2}}')]" parameterized="true"/>
1616
<element name="text" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]/div//*[contains(.,'{{arg2}}')]" parameterized="true"/>
17+
<element name="textParagraph" type="text" selector="(//div[@data-content-type='text'])[{{arg1}}]//div[contains(@class,'inline-wysiwyg')]/p" parameterized="true"/>
18+
<element name="textAnchorText" type="text" selector="(//div[@data-content-type='text'])[{{arg1}}]//div[contains(@class,'inline-wysiwyg')]/p/a[text()='{{arg2}}']" parameterized="true"/>
1719
<element name="directive" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]/div//span[contains(.,'{{arg2}}')]" parameterized="true"/>
1820
<element name="mcePlaceholder" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]/div//*[starts-with(@id, '{{arg2}}')]" parameterized="true"/>
1921
<element name="variablePlaceholder" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg}}]/div//*[contains(@class, 'magento-variable magento-placeholder')]" parameterized="true"/>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<element name="formatSelector" type="button" selector="//div[contains(@class, 'mce-tinymce') and not(contains(@class, 'mce-tinymce-inline'))]//span[text()='Formats']"/>
3131
</section>
3232
<section name="WYSIWYGOnPageBuilderInline">
33+
<element name="inlineCss" type="button" selector=".mce-tinymce.mce-tinymce-inline"/>
3334
<element name="notCss" type="button" selector=".mce-tinymce:not(.mce-tinymce-inline)"/>
3435
<element name="undo" type="button" selector=".mce-tinymce-inline div[aria-label='Undo']"/>
3536
<element name="redo" type="button" selector=".mce-tinymce-inline div[aria-label='Redo']"/>

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

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2770,4 +2770,189 @@
27702770
<seeElement selector="{{TextOnStage.base('1')}}" stepKey="seeText" />
27712771
<seeElement selector="{{TextOnStage.text('1', PageBuilderTextProperty.value)}}" stepKey="seeTestStringInText"/>
27722772
</test>
2773+
<test name="TextAddVariableWithinStringInlineWYSWIYG">
2774+
<annotations>
2775+
<features value="PageBuilder"/>
2776+
<stories value="Text"/>
2777+
<title value="Add variable into string"/>
2778+
<description value="Ensure a user can add a variable in the middle of a string"/>
2779+
<severity value="AVERAGE"/>
2780+
<useCaseId value="MC-4137"/>
2781+
<testCaseId value="MC-18691"/>
2782+
<group value="pagebuilder"/>
2783+
<group value="pagebuilder-text"/>
2784+
</annotations>
2785+
<before>
2786+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2787+
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
2788+
<createData entity="_defaultCmsPage" stepKey="createCMSPage" />
2789+
</before>
2790+
<after>
2791+
<deleteData createDataKey="createCMSPage" stepKey="deletePreReqCMSPage" />
2792+
<actionGroup ref="logout" stepKey="logout"/>
2793+
</after>
2794+
<actionGroup ref="navigateToCreatedCMSPage" stepKey="navigateToCreatedCMSPage1">
2795+
<argument name="CMSPage" value="$$createCMSPage$$"/>
2796+
</actionGroup>
2797+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
2798+
<argument name="contentType" value="PageBuilderTextContentType"/>
2799+
</actionGroup>
2800+
<actionGroup ref="dragContentTypeToStage" stepKey="dragTabsIntoStage">
2801+
<argument name="contentType" value="PageBuilderTextContentType"/>
2802+
</actionGroup>
2803+
<click selector="{{TextOnStage.tinymce('1')}}" stepKey="focusOnTextEditorArea"/>
2804+
<comment userInput="Write text into WYSIWYG" stepKey="commentWriteTextIntoWysiwyg"/>
2805+
<pressKey selector="{{TextOnStage.tinymce('1')}}" userInput="{{PageBuilderVariableWidgetText.value}}" stepKey="fillWysiwygField"/>
2806+
<waitForElementVisible selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="waitForTextOnStage"/>
2807+
<seeElement selector="{{TextOnStage.text('1', PageBuilderTextProperty.value)}}" stepKey="seeTextOnStage"/>
2808+
<comment userInput="Move caret 3 spaces to the left" stepKey="commentMoveCaretLeft"/>
2809+
<pressKey selector="{{TextOnStage.tinymce('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::LEFT, \Facebook\WebDriver\WebDriverKeys::LEFT, \Facebook\WebDriver\WebDriverKeys::LEFT]" stepKey="pressLeftKey"/>
2810+
<comment userInput="Input variable into text content type" stepKey="commentInputVariableIntoStage"/>
2811+
<actionGroup ref="addVariableToTinyMCEInline" stepKey="addVariableToTinyMCE">
2812+
<argument name="variable" value="TinyMCEVariableBaseURL"/>
2813+
</actionGroup>
2814+
<comment userInput="Verify variable has been placed in between string" stepKey="commentVerifyWidgetWithinString"/>
2815+
<waitForElementVisible selector="{{TextOnStage.text('1', TinyMCEVariableBaseURL.editPanelValue)}}" stepKey="waitForVariable"/>
2816+
<seeElement selector="{{TextOnStage.text('1', TinyMCEVariableBaseURL.editPanelValue)}}" stepKey="seeVariableOnStage"/>
2817+
<dontSeeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="dontSeeOriginalTextOnStage"/>
2818+
<seeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.expectedString1)}}" stepKey="seeExpectedString" />
2819+
<seeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.expectedString2)}}" stepKey="seeExpectedString1" />
2820+
</test>
2821+
<test name="TextAddWidgetWithinStringInlineWYSIWYG">
2822+
<annotations>
2823+
<features value="PageBuilder"/>
2824+
<stories value="Text"/>
2825+
<title value="Add widget into string"/>
2826+
<description value="Ensure a user is able to add a widget into the middle of string"/>
2827+
<severity value="AVERAGE"/>
2828+
<useCaseId value="MC-4137"/>
2829+
<testCaseId value="MC-18692"/>
2830+
<group value="pagebuilder"/>
2831+
<group value="pagebuilder-text"/>
2832+
</annotations>
2833+
<before>
2834+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2835+
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
2836+
<createData entity="_defaultCmsPage" stepKey="createCMSPage" />
2837+
<createData entity="_defaultCmsPage" stepKey="createCMSPageB" />
2838+
</before>
2839+
<after>
2840+
<deleteData createDataKey="createCMSPage" stepKey="deletePreReqCMSPage" />
2841+
<deleteData createDataKey="createCMSPageB" stepKey="deletePreReqCMSPageB" />
2842+
<actionGroup ref="logout" stepKey="logout"/>
2843+
</after>
2844+
<actionGroup ref="navigateToCreatedCMSPage" stepKey="navigateToCreatedCMSPage1">
2845+
<argument name="CMSPage" value="$$createCMSPage$$"/>
2846+
</actionGroup>
2847+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
2848+
<argument name="contentType" value="PageBuilderTextContentType"/>
2849+
</actionGroup>
2850+
<actionGroup ref="dragContentTypeToStage" stepKey="dragTabsIntoStage">
2851+
<argument name="contentType" value="PageBuilderTextContentType"/>
2852+
</actionGroup>
2853+
<click selector="{{TextOnStage.tinymce('1')}}" stepKey="focusOnTextEditorArea"/>
2854+
<comment userInput="Write text into WYSIWYG" stepKey="commentWriteTextIntoWysiwyg"/>
2855+
<pressKey selector="{{TextOnStage.tinymce('1')}}" userInput="{{PageBuilderVariableWidgetText.value}}" stepKey="fillWysiwygField"/>
2856+
<waitForElementVisible selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="waitForTextOnStage"/>
2857+
<seeElement selector="{{TextOnStage.text('1', PageBuilderTextProperty.value)}}" stepKey="seeTextOnStage"/>
2858+
<comment userInput="Move caret 3 spaces to the left" stepKey="commentMoveCaretLeft"/>
2859+
<pressKey selector="{{TextOnStage.tinymce('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::LEFT, \Facebook\WebDriver\WebDriverKeys::LEFT, \Facebook\WebDriver\WebDriverKeys::LEFT]" stepKey="pressLeftKey"/>
2860+
<comment userInput="Input variable into text content type" stepKey="commentInputVariableIntoStage"/>
2861+
<actionGroup ref="addPageLinkWidgetToTinyMCEInline" stepKey="addPageLinkWidgetToTinyMCE">
2862+
<argument name="widget" value="TinyMCEWidgetCMSPageLink"/>
2863+
<argument name="page" value="$$createCMSPageB.identifier$$"/>
2864+
</actionGroup>
2865+
<comment userInput="Verify widget has been placed in between string" stepKey="commentVerifyWidgetWithinString"/>
2866+
<waitForElementVisible selector="{{TextOnStage.text('1', TinyMCEWidgetCMSPageLink.editPanelValue)}}" stepKey="waitForWidgetStage1"/>
2867+
<seeElement selector="{{TextOnStage.text('1', TinyMCEWidgetCMSPageLink.editPanelValue)}}" stepKey="seeWidgetOnStage"/>
2868+
<dontSeeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="dontSeeOriginalTextOnStage"/>
2869+
<seeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.expectedString1)}}" stepKey="seeExpectedString" />
2870+
<seeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.expectedString2)}}" stepKey="seeExpectedString1" />
2871+
</test>
2872+
<test name="TextCopyAndPasteAllTextInlineWYSIWYG">
2873+
<annotations>
2874+
<features value="PageBuilder"/>
2875+
<stories value="Text"/>
2876+
<title value="Copy and paste all text"/>
2877+
<description value="Ensure a user can copy all text and paste it over the original text without duplicating"/>
2878+
<severity value="AVERAGE"/>
2879+
<useCaseId value="MC-4137"/>
2880+
<testCaseId value="MC-18693"/>
2881+
<group value="pagebuilder"/>
2882+
<group value="pagebuilder-text"/>
2883+
</annotations>
2884+
<before>
2885+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2886+
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
2887+
<createData entity="_defaultCmsPage" stepKey="createCMSPage" />
2888+
</before>
2889+
<after>
2890+
<deleteData createDataKey="createCMSPage" stepKey="deletePreReqCMSPage" />
2891+
<actionGroup ref="logout" stepKey="logout"/>
2892+
</after>
2893+
<actionGroup ref="navigateToCreatedCMSPage" stepKey="navigateToCreatedCMSPage1">
2894+
<argument name="CMSPage" value="$$createCMSPage$$"/>
2895+
</actionGroup>
2896+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
2897+
<argument name="contentType" value="PageBuilderTextContentType"/>
2898+
</actionGroup>
2899+
<actionGroup ref="dragContentTypeToStage" stepKey="dragTabsIntoStage">
2900+
<argument name="contentType" value="PageBuilderTextContentType"/>
2901+
</actionGroup>
2902+
<click selector="{{TextOnStage.tinymce('1')}}" stepKey="focusOnTextEditorArea"/>
2903+
<comment userInput="Write text into WYSIWYG" stepKey="commentWriteTextIntoWysiwyg"/>
2904+
<pressKey selector="{{TextOnStage.tinymce('1')}}" userInput="{{PageBuilderVariableWidgetText.value}}" stepKey="fillWysiwygField"/>
2905+
<waitForElementVisible selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="waitForTextOnStage"/>
2906+
<seeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="seeTextOnStage" />
2907+
<pressKey selector="{{TextOnStage.tinymce('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::COMMAND, 'a']" stepKey="selectAllText"/>
2908+
<waitForPageLoad stepKey="waitForTextSelect"/>
2909+
<pressKey selector="{{TextOnStage.tinymce('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::COMMAND, 'c']" stepKey="copyAllText"/>
2910+
<waitForPageLoad stepKey="waitForTextCopy"/>
2911+
<pressKey selector="{{TextOnStage.tinymce('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::COMMAND, 'v']" stepKey="pasteAllText"/>
2912+
<waitForPageLoad stepKey="waitForTextPaste"/>
2913+
<seeNumberOfElements selector="{{TextOnStage.textParagraph('1')}}" userInput="1" stepKey="seeOnlyOneParagraph"/>
2914+
</test>
2915+
<test name="TextAddLinkToTextInlineWYSIWYG">
2916+
<annotations>
2917+
<features value="PageBuilder"/>
2918+
<stories value="Text"/>
2919+
<title value="Add link to text"/>
2920+
<description value="Ensure a user is able to add a link to text within the inline WYSIWYG"/>
2921+
<severity value="MAJOR"/>
2922+
<useCaseId value="MC-13631"/>
2923+
<testCaseId value="MC-18694"/>
2924+
<group value="pagebuilder"/>
2925+
<group value="pagebuilder-text"/>
2926+
</annotations>
2927+
<before>
2928+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2929+
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
2930+
<createData entity="_defaultCmsPage" stepKey="createCMSPage" />
2931+
</before>
2932+
<after>
2933+
<deleteData createDataKey="createCMSPage" stepKey="deletePreReqCMSPage" />
2934+
<actionGroup ref="logout" stepKey="logout"/>
2935+
</after>
2936+
<actionGroup ref="navigateToCreatedCMSPage" stepKey="navigateToCreatedCMSPage1">
2937+
<argument name="CMSPage" value="$$createCMSPage$$"/>
2938+
</actionGroup>
2939+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
2940+
<argument name="contentType" value="PageBuilderTextContentType"/>
2941+
</actionGroup>
2942+
<actionGroup ref="dragContentTypeToStage" stepKey="dragTabsIntoStage">
2943+
<argument name="contentType" value="PageBuilderTextContentType"/>
2944+
</actionGroup>
2945+
<click selector="{{TextOnStage.tinymce('1')}}" stepKey="focusOnTextEditorArea"/>
2946+
<comment userInput="Write text into WYSIWYG" stepKey="commentWriteTextIntoWysiwyg"/>
2947+
<pressKey selector="{{TextOnStage.tinymce('1')}}" userInput="{{PageBuilderTextProperty.value}}" stepKey="fillWysiwygField"/>
2948+
<waitForElementVisible selector="{{TextOnStage.text('1', PageBuilderTextProperty.value)}}" stepKey="waitForTextOnStage"/>
2949+
<seeElement selector="{{TextOnStage.text('1', PageBuilderVariableWidgetText.value)}}" stepKey="seeTextOnStage" />
2950+
<pressKey selector="{{TextOnStage.tinymce('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::COMMAND, 'a']" stepKey="selectAllText"/>
2951+
<waitForPageLoad stepKey="waitForTextSelect"/>
2952+
<actionGroup ref="insertLinkInWYSIWYGExistingText" stepKey="insertLinkInWYSIWYG">
2953+
<argument name="url" value="{{ExternalLink.googleUrl}}"/>
2954+
<argument name="wysiwygArea" value="{{WYSIWYGOnPageBuilderInline.inlineCss}}"/>
2955+
</actionGroup>
2956+
<seeElement selector="{{TextOnStage.textAnchorText('1', PageBuilderTextProperty.value)}}" stepKey="seeAnchorInWysiwyg"/>
2957+
</test>
27732958
</tests>

0 commit comments

Comments
 (0)