Skip to content

Commit 1437135

Browse files
committed
MC-17823: Access Images/Widgets/Variable from HTML content type
- add functional test coverage
1 parent 06674a8 commit 1437135

File tree

3 files changed

+133
-5
lines changed

3 files changed

+133
-5
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="addPageLinkWidgetToHtmlCodeWYSIWYGDisabled" extends="addPageLinkWidgetToTinyMCE">
12+
<arguments>
13+
<argument name="widget" defaultValue=""/>
14+
<argument name="page" defaultValue="" type="string"/>
15+
</arguments>
16+
<comment userInput="Adding Widget To Textarea" stepKey="commentAddWidget"/>
17+
<waitForElementVisible selector="{{HtmlOnConfiguration.insertWidgetButton}}" stepKey="waitForInsertWidget1"/>
18+
<click selector="{{HtmlOnConfiguration.insertWidgetButton}}" stepKey="clickAddWidgetBtn"/>
19+
<waitForElementVisible selector="{{HtmlOnConfiguration.textarea}}" stepKey="waitForInsertWidgetModalToClose"/>
20+
<executeJS function="return document.querySelectorAll('{{HtmlOnConfiguration.textareaCSS}}')[0].value;" stepKey="getText"/>
21+
<assertContains actual="getText" actualType="variable" expected="{{widget.editPanelValue}}" expectedType="string" stepKey="assertValue"/>
22+
</actionGroup>
23+
<actionGroup name="addPageLinkVariableToHtmlCodeWYSIWYGDisabled">
24+
<arguments>
25+
<argument name="variable" defaultValue=""/>
26+
</arguments>
27+
<waitForElementVisible selector="{{HtmlOnConfiguration.insertVariableButton}}" stepKey="waitForInsertVariable1"/>
28+
<click selector="{{HtmlOnConfiguration.insertVariableButton}}" stepKey="clickInsertVariable1"/>
29+
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear"/>
30+
<waitForElementVisible selector="{{VariableSection.Radio(variable.variableName)}}" stepKey="waitForVariable1"/>
31+
<checkOption selector="{{VariableSection.Radio(variable.variableName)}}" stepKey="selectVariable"/>
32+
<waitForElementVisible selector="{{VariableSection.InsertWidget}}" stepKey="waitForInsertVariable2"/>
33+
<click selector="{{VariableSection.InsertWidget}}" stepKey="clickInsertVariable2"/>
34+
<waitForElementNotVisible selector="{{VariableSection.InsertWidget}}" stepKey="waitForVariableModalToClose"/>
35+
<waitForElementVisible selector="{{HtmlOnConfiguration.textarea}}" stepKey="waitForTextArea"/>
36+
<executeJS function="return document.querySelectorAll('{{HtmlOnConfiguration.textareaCSS}}')[0].value;" stepKey="getText"/>
37+
<assertContains actual="getText" actualType="variable" expected="{{variable.editPanelValue}}" expectedType="string" stepKey="assertValue"/>
38+
</actionGroup>
39+
</actionGroups>

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
1010
<section name="HtmlOnStage">
1111
<element name="base" type="text" selector="(//div[contains(@class,'pagebuilder-html')]//div[contains(@data-bind,'text: data.main.html') or contains(@class,'placeholder-html-empty')])[{{arg1}}]" parameterized="true"/>
12+
<element name="baseCSS" type="text" selector="[data-content-type=html][data-element=main]"/>
1213
<element name="hidden" type="text" selector="(//*[@data-content-type='html'])[{{arg1}}]/ancestor::*[contains(@class, 'pagebuilder-content-type-wrapper') and contains(@class, 'pagebuilder-content-type-hidden')]" parameterized="true"/>
1314
<element name="notHidden" type="text" selector="(//div[contains(@class,'pagebuilder-html')])[{{arg1}}]/parent::*[contains(@class, 'pagebuilder-content-type-wrapper') and not(contains(@class, 'pagebuilder-content-type-hidden'))][1]" parameterized="true"/>
1415
<element name="empty" type="text" selector="(//div[contains(@class,'placeholder-html-empty')])[{{arg1}}]" parameterized="true"/>
@@ -32,6 +33,8 @@
3233
<element name="hidden" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}][contains(@style, 'display: none')]" parameterized="true"/>
3334
<element name="notHidden" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}][not(contains(@style, 'display: none'))]" parameterized="true"/>
3435
<element name="html" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}]{{arg2}}" parameterized="true"/>
36+
<element name="widgetLink" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}]//a[contains(@href,'{{arg2}}html-code{{arg3}}')]" parameterized="true"/>
37+
<element name="text" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}]//*[contains(text(),'{{arg2}}')]" parameterized="true"/>
3538
<!-- Advanced Configuration -->
3639
<element name="alignment" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}][contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
3740
<element name="noAlignment" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}][not(contains(@style,'text-align:'))]" parameterized="true"/>
@@ -45,6 +48,13 @@
4548
<element name="margins" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
4649
<element name="padding" type="text" selector="(//div[@data-content-type='html'])[{{arg1}}][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
4750
</section>
51+
<section name="HtmlOnConfiguration">
52+
<element name="insertWidgetButton" type="text" selector="//button[contains(@class,'action-add-widget')]//*[.='Insert Widget...']"/>
53+
<element name="insertImageButton" type="text" selector="//button[contains(@class,'action-add-image')]//*[.='Insert Image...']"/>
54+
<element name="insertVariableButton" type="text" selector="//button[contains(@class,'add-variable')]//*[.='Insert Variable...']"/>
55+
<element name="textarea" type="text" selector="//div[@data-index='html']//textarea"/>
56+
<element name="textareaCSS" type="text" selector="div[data-index=html] textarea[name=html]"/>
57+
</section>
4858
<section name="HtmlOnBackendArbitraryHtml">
4959
<element name="content" type="button" selector="//div[contains(@class, 'pagebuilder-html')][1]//div[contains(text(), '&lt;div class=&quot;my-div&quot;&gt;&lt;/div&gt;')]"/>
5060
</section>

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

Lines changed: 84 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,22 @@
2323
<before>
2424
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2525
<actionGroup ref="navigateToAPageWithPageBuilder" stepKey="navigateToAPageWithPageBuilder"/>
26+
<actionGroup ref="addPageBuilderPageTitle" stepKey="enterPageTitle">
27+
<argument name="contentType" value="PageBuilderHtmlContentType"/>
28+
</actionGroup>
29+
<actionGroup ref="saveAndContinueEditCmsPage" stepKey="saveAndContinueEditCmsPage"/>
2630
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage"/>
2731
</before>
2832
<after>
33+
<actionGroup ref="navigateToMediaGallery" stepKey="navigateToMediaGallery"/>
34+
<actionGroup ref="NavigateToMediaFolderActionGroup" stepKey="NavigateToFolder2">
35+
<argument name="FolderName" value="{{ImageFolder.name}}"/>
36+
</actionGroup>
37+
<actionGroup ref="DeleteImageFromStorageActionGroup" stepKey="DeleteImageFromStorage2">
38+
<argument name="Image" value="ImageUpload3"/>
39+
</actionGroup>
2940
<actionGroup ref="logout" stepKey="logout"/>
3041
</after>
31-
<actionGroup ref="addPageBuilderPageTitle" stepKey="enterPageTitle">
32-
<argument name="contentType" value="PageBuilderHtmlContentType"/>
33-
</actionGroup>
3442
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
3543
<argument name="contentType" value="PageBuilderHtmlContentType"/>
3644
</actionGroup>
@@ -43,24 +51,88 @@
4351
<actionGroup ref="fillSlideOutPanelTextArea" stepKey="enterHtmlContent">
4452
<argument name="property" value="PageBuilderHtmlPropertyButton"/>
4553
</actionGroup>
54+
<!-- Add media directives -->
55+
<comment userInput="Add media directives" stepKey="commentAddMediaDirectives"/>
56+
<actionGroup ref="addPageLinkWidgetToHtmlCodeWYSIWYGDisabled" stepKey="addPageLinkWidgetToHtmlCodeWYSIWYGDisabled">
57+
<argument name="widget" value="PageBuilderTextArea_WidgetCMSPageLink"/>
58+
<argument name="page" value="html-code{{PageBuilderPageTitle.pageName}}"/>
59+
</actionGroup>
60+
<waitForElementVisible selector="{{HtmlOnConfiguration.insertImageButton}}" stepKey="waitForInsertImage"/>
61+
<click selector="{{HtmlOnConfiguration.insertImageButton}}" stepKey="clickInsertImage"/>
62+
<waitForPageLoad stepKey="waitForPageLoad"/>
63+
<click selector="{{MediaGallerySection.StorageRootArrow}}" stepKey="clickStorageRoot"/>
64+
<waitForPageLoad stepKey="waitForPageLoad2"/>
65+
<actionGroup ref="CreateImageFolder" stepKey="CreateImageFolder">
66+
<argument name="ImageFolder" value="ImageFolder"/>
67+
</actionGroup>
68+
<actionGroup ref="attachImage" stepKey="attachImage1">
69+
<argument name="Image" value="ImageUpload3"/>
70+
</actionGroup>
71+
<actionGroup ref="saveImage" stepKey="insertImage"/>
72+
<actionGroup ref="assertTextareaContainsValue" stepKey="assertImageInTextareaValueBeforeSave">
73+
<argument name="value" value="{{ImageUpload3.value}}"/>
74+
<argument name="selector" value="{{HtmlOnConfiguration.textarea}}"/>
75+
</actionGroup>
76+
<actionGroup ref="addPageLinkVariableToHtmlCodeWYSIWYGDisabled" stepKey="addPageLinkVariableToHtmlCodeWYSIWYGDisabled">
77+
<argument name="variable" value="PageBuilderTextArea_VariableBaseURL"/>
78+
</actionGroup>
4679
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings"/>
4780
<!-- Validate Stage -->
4881
<comment userInput="Validate Stage" stepKey="commentValidateStage"/>
4982
<waitForElementVisible selector="{{HtmlOnStage.base('1')}}" stepKey="waitForHtmlBaseStage1"/>
5083
<waitForElementVisible selector="{{HtmlOnStage.html('1', PageBuilderHtmlPropertyButton.selector)}}" stepKey="waitForHtmlStage1"/>
84+
<executeJS function="return document.querySelectorAll('{{HtmlOnStage.baseCSS}}')[0].innerText;" stepKey="actualData"/>
85+
<assertContains stepKey="assertWidget">
86+
<expectedResult type="string">{{TinyMCEWidgetCMSPageLink.stageValue}}</expectedResult>
87+
<actualResult type="variable">actualData</actualResult>
88+
</assertContains>
89+
<assertContains stepKey="assertImage">
90+
<expectedResult type="string">{{ImageUpload3.value}}</expectedResult>
91+
<actualResult type="variable">actualData</actualResult>
92+
</assertContains>
93+
<assertContains stepKey="assertVariable">
94+
<expectedResult type="string">{{TinyMCEVariableBaseURL.stageValue}}</expectedResult>
95+
<actualResult type="variable">actualData</actualResult>
96+
</assertContains>
5197
<actionGroup ref="saveAndContinueEditCmsPage" stepKey="saveAndContinueEditCmsPage"/>
5298
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage"/>
5399
<!-- Validate Stage After Save -->
54100
<comment userInput="Validate Stage After Save" stepKey="commentValidateStage2"/>
55101
<waitForElementVisible selector="{{HtmlOnStage.base('1')}}" stepKey="waitForHtmlBaseStage2"/>
56102
<waitForElementVisible selector="{{HtmlOnStage.html('1', PageBuilderHtmlPropertyButton.selector)}}" stepKey="waitForHtmlStage2"/>
103+
<executeJS function="return document.querySelectorAll('{{HtmlOnStage.baseCSS}}')[0].innerText;" stepKey="actualDataAfterSave"/>
104+
<assertContains stepKey="assertWidgetAfterSave">
105+
<expectedResult type="string">{{TinyMCEWidgetCMSPageLink.stageValue}}</expectedResult>
106+
<actualResult type="variable">actualDataAfterSave</actualResult>
107+
</assertContains>
108+
<assertContains stepKey="assertImageAfterSave">
109+
<expectedResult type="string">{{ImageUpload3.value}}</expectedResult>
110+
<actualResult type="variable">actualDataAfterSave</actualResult>
111+
</assertContains>
112+
<assertContains stepKey="assertVariableAfterSave">
113+
<expectedResult type="string">{{PageBuilderTextArea_VariableBaseURL.editPanelValue}}</expectedResult>
114+
<actualResult type="variable">actualDataAfterSave</actualResult>
115+
</assertContains>
57116
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditMenuOnStage2">
58117
<argument name="contentType" value="PageBuilderHtmlContentType"/>
59118
</actionGroup>
60119
<!-- Validate Edit Panel After Save -->
61120
<comment userInput="Validate Edit Panel After Save" stepKey="commentValidateEditPanel2"/>
62-
<actionGroup ref="seeInFieldWithoutLabelSlideOutProperty" stepKey="validateHtmlEditPanel">
63-
<argument name="property" value="PageBuilderHtmlPropertyButton"/>
121+
<actionGroup ref="assertTextareaContainsValue" stepKey="assertButtonInTextareaValueAfterSave">
122+
<argument name="value" value="{{PageBuilderHtmlPropertyButton.value}}"/>
123+
<argument name="selector" value="{{HtmlOnConfiguration.textarea}}"/>
124+
</actionGroup>
125+
<actionGroup ref="assertTextareaContainsValue" stepKey="assertWidgetInTextareaValueAfterSave">
126+
<argument name="value" value="{{PageBuilderTextArea_WidgetCMSPageLink.editPanelValue}}"/>
127+
<argument name="selector" value="{{HtmlOnConfiguration.textarea}}"/>
128+
</actionGroup>
129+
<actionGroup ref="assertTextareaContainsValue" stepKey="assertImageInTextareaValueAfterSave">
130+
<argument name="value" value="{{ImageUpload3.value}}"/>
131+
<argument name="selector" value="{{HtmlOnConfiguration.textarea}}"/>
132+
</actionGroup>
133+
<actionGroup ref="assertTextareaContainsValue" stepKey="assertVariableInTextareaValueAfterSave">
134+
<argument name="value" value="{{PageBuilderTextArea_VariableBaseURL.editPanelValue}}"/>
135+
<argument name="selector" value="{{HtmlOnConfiguration.textarea}}"/>
64136
</actionGroup>
65137
<actionGroup ref="navigateToStoreFront" stepKey="navigateToStoreFront">
66138
<argument name="contentType" value="PageBuilderHtmlContentType"/>
@@ -69,6 +141,13 @@
69141
<comment userInput="Validate Storefront" stepKey="commentValidateStorefront"/>
70142
<waitForElementVisible selector="{{HtmlOnStorefront.base('1')}}" stepKey="waitForHtmlBaseStorefront"/>
71143
<waitForElementVisible selector="{{HtmlOnStorefront.html('1', PageBuilderHtmlPropertyButton.selectorOnFrontend)}}" stepKey="waitForHtmlStorefront"/>
144+
<seeElement selector="{{HtmlOnStorefront.widgetLink('1', _ENV.MAGENTO_BASE_URL, PageBuilderPageTitle.pageName)}}" stepKey="seeWidgetStorefront"/>
145+
<seeElement selector="{{StorefrontCMSPageSection.imageSource(ImageUpload3.fileName)}}" stepKey="seeMediaSourceStorefront"/>
146+
<executeJS function="return document.querySelectorAll('{{HtmlOnStorefront.baseCSS}}')[0].innerText;" stepKey="actualTextStorefront"/>
147+
<assertContains stepKey="assertVariableStorefront">
148+
<expectedResult type="string">{{_ENV.MAGENTO_BASE_URL}}</expectedResult>
149+
<actualResult type="variable">actualTextStorefront</actualResult>
150+
</assertContains>
72151
</test>
73152
<test name="HtmlDelete">
74153
<annotations>

0 commit comments

Comments
 (0)