Skip to content

Commit ff614c0

Browse files
committed
PB-77: Product Carousel Appearance
- Adding extended mftf tests for Product carousel appearance - Adding supporting data & sections - Fixing incorrect supporting selector & actiongroup
1 parent cc00ad3 commit ff614c0

File tree

5 files changed

+620
-22
lines changed

5 files changed

+620
-22
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@
228228
<waitForElement time="2" selector="{{EditPanelForm.panelFieldControl(property.section, property.fieldName)}}" stepKey="waitForElementVisible"/>
229229
<seeElement selector='//li[@name="{{property.value}}"]' stepKey="seeVisualSelect"/>
230230
<click selector='//div[@data-index="{{property.section}}"]//li[@name="{{property.value}}"]' stepKey="chooseVisualSelectOption"/>
231+
<waitForPageLoad stepKey="waitForPageLoad"/>
231232
</actionGroup>
232233
<actionGroup name="scrollToSlideOutPanelField">
233234
<arguments>

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

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@
1717
<data key="is_active">true</data>
1818
<data key="include_in_menu">true</data>
1919
</entity>
20+
<!-- Appearance -->
21+
<entity name="PageBuilderProductsProductGridAppearance" type="pagebuilder_products_appearance">
22+
<data key="name">Appearance</data>
23+
<data key="section">appearance_fieldset</data>
24+
<data key="fieldName">appearance</data>
25+
<data key="value">grid</data>
26+
</entity>
27+
<entity name="PageBuilderProductsProductCarouselAppearance" type="pagebuilder_products_appearance">
28+
<data key="name">Appearance</data>
29+
<data key="section">appearance_fieldset</data>
30+
<data key="fieldName">appearance</data>
31+
<data key="value">carousel</data>
32+
</entity>
2033
<!-- Select Products By -->
2134
<entity name="PageBuilderProductsSelectProductsByCategory" type="pagebuilder_select_products_by_types">
2235
<data key="name">Select Products By</data>
@@ -72,7 +85,7 @@
7285
<data key="fieldName">sort_order</data>
7386
<data key="value">position</data>
7487
</entity>
75-
<!-- Number of Products to Display -->
88+
<!-- Number of Products to Display: Grid Appearance -->
7689
<entity name="PageBuilderProductsCountPropertyOne" type="pagebuilder_content_type">
7790
<data key="name">Number of Products to Display</data>
7891
<data key="section">general</data>
@@ -91,6 +104,12 @@
91104
<data key="fieldName">products_count</data>
92105
<data key="value">4</data>
93106
</entity>
107+
<entity name="PageBuilderProductsCountPropertyFive" type="pagebuilder_content_type">
108+
<data key="name">Number of Products to Display</data>
109+
<data key="section">general</data>
110+
<data key="fieldName">products_count</data>
111+
<data key="value">5</data>
112+
</entity>
94113
<entity name="PageBuilderProductsCountPropertyMax" type="pagebuilder_content_type">
95114
<data key="name">Number of Products to Display</data>
96115
<data key="section">general</data>
@@ -125,4 +144,63 @@
125144
<data key="value"/>
126145
<data key="errorMessage">This is a required field.</data>
127146
</entity>
147+
<!-- Number of Products to Display: Carousel Appearance -->
148+
<entity name="PageBuilderProductsCarouselCountPropertyOne" type="pagebuilder_content_type">
149+
<data key="name">Number of Products to Display</data>
150+
<data key="section">general</data>
151+
<data key="fieldName">carousel_products_count</data>
152+
<data key="value">1</data>
153+
</entity>
154+
<entity name="PageBuilderProductsCarouselCountPropertyTwo" type="pagebuilder_content_type">
155+
<data key="name">Number of Products to Display</data>
156+
<data key="section">general</data>
157+
<data key="fieldName">carousel_products_count</data>
158+
<data key="value">2</data>
159+
</entity>
160+
<entity name="PageBuilderProductsCarouselCountPropertyFour" type="pagebuilder_content_type">
161+
<data key="name">Number of Products to Display</data>
162+
<data key="section">general</data>
163+
<data key="fieldName">carousel_products_count</data>
164+
<data key="value">4</data>
165+
</entity>
166+
<entity name="PageBuilderProductsCarouselCountPropertyTwenty" type="pagebuilder_content_type">
167+
<data key="name">Number of Products to Display</data>
168+
<data key="section">general</data>
169+
<data key="fieldName">carousel_products_count</data>
170+
<data key="value">20</data>
171+
</entity>
172+
<entity name="PageBuilderProductsCarouselCountPropertyMax" type="pagebuilder_content_type">
173+
<data key="name">Number of Products to Display</data>
174+
<data key="section">general</data>
175+
<data key="fieldName">carousel_products_count</data>
176+
<data key="value">999</data>
177+
</entity>
178+
<entity name="PageBuilderProductsCarouselInvalidMinCountProperty" type="pagebuilder_content_type">
179+
<data key="name">Number of Products to Display</data>
180+
<data key="section">general</data>
181+
<data key="fieldName">carousel_products_count</data>
182+
<data key="value">0</data>
183+
<data key="errorMessage">Please enter a value greater than or equal to 1.</data>
184+
</entity>
185+
<entity name="PageBuilderProductsCarouselInvalidMaxCountProperty" type="pagebuilder_content_type">
186+
<data key="name">Number of Products to Display</data>
187+
<data key="section">general</data>
188+
<data key="fieldName">carousel_products_count</data>
189+
<data key="value">1000</data>
190+
<data key="errorMessage">Please enter a value less than or equal to 999.</data>
191+
</entity>
192+
<entity name="PageBuilderProductsCarouselInvalidTypeCountProperty" type="pagebuilder_content_type">
193+
<data key="name">Number of Products to Display</data>
194+
<data key="section">general</data>
195+
<data key="fieldName">carousel_products_count</data>
196+
<data key="value">Invalid</data>
197+
<data key="errorMessage">Please enter a valid number in this field.</data>
198+
</entity>
199+
<entity name="PageBuilderProductsCarouselInvalidEmptyCountProperty" type="pagebuilder_content_type">
200+
<data key="name">Number of Products to Display</data>
201+
<data key="section">general</data>
202+
<data key="fieldName">carousel_products_count</data>
203+
<data key="value"/>
204+
<data key="errorMessage">This is a required field.</data>
205+
</entity>
128206
</entities>

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

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,35 @@
3737
<element name="margins" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'grid')])[{{arg1}}][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
3838
<element name="padding" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'grid')])[{{arg1}}][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
3939
</section>
40+
<section name="ProductsCarouselOnStage">
41+
<element name="base" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}]" parameterized="true"/>
42+
<element name="price" type="text" selector="//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//div[contains(@data-role,'priceBox')]"/>
43+
<element name="hidden" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}]/ancestor::*[contains(@class, 'pagebuilder-content-type-wrapper') and contains(@class, 'pagebuilder-content-type-hidden')]" parameterized="true"/>
44+
<element name="notHidden" type="text" selector="(//div[contains(@class,'pagebuilder-products') and not(contains(@class,'placeholder'))])[{{arg1}}]//parent::*[contains(@class, 'pagebuilder-content-type-wrapper') and not(contains(@class, 'pagebuilder-content-type-hidden'))][1]" parameterized="true"/>
45+
<element name="emptyProductsPlaceholder" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}]//*[contains(@class,'pagebuilder-products-placeholder')]" parameterized="true"/>
46+
<element name="product" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}]//ol//li[contains(@class,'product-item')]" parameterized="true"/>
47+
<element name="productImage" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//img[@class='product-image-photo']" parameterized="true"/>
48+
<element name="productImageCSS" type="text" selector=".pagebuilder-products div[data-appearance=carousel] ol li.product-item img.product-image-photo"/>
49+
<element name="productName" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//strong//a[@class='product-item-link' and @href and contains(.,'{{arg2}}')]" parameterized="true"/>
50+
<element name="productPrice" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//span[@class='price' and .='${{arg2}}']" parameterized="true"/>
51+
<element name="productPriceContainer" type="text" selector=".pagebuilder-products div[data-appearance=carousel] ol li.product-item div.price-box"/>
52+
<element name="productAddToCart" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//button[contains(@class,'tocart') and @title='Add to Cart']" parameterized="true"/>
53+
<element name="productAddToWishList" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//a[contains(@class,'towishlist') and @title='Add to Wish List']" parameterized="true"/>
54+
<element name="productAddToCompare" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//a[contains(@class,'tocompare') and @title='Add to Compare']" parameterized="true"/>
55+
<element name="productActions" type="text" selector=".pagebuilder-products div[data-appearance=carousel] ol li.product-item div.product-item-actions"/>
56+
<!-- Advanced Configuration -->
57+
<element name="alignment" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
58+
<element name="noAlignment" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][not(contains(@style,'text-align:'))]" parameterized="true"/>
59+
<element name="border" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'border-style: {{arg2}};')]" parameterized="true"/>
60+
<element name="borderColor" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'border-color: {{arg2}};')]" parameterized="true"/>
61+
<element name="noBorderColor" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][not(contains(@style,'border-color:'))]" parameterized="true"/>
62+
<element name="borderWidth" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'border-width: {{arg2}}px;')]" parameterized="true"/>
63+
<element name="borderRadius" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'border-radius: {{arg2}}px;')]" parameterized="true"/>
64+
<element name="cssClasses" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@class,'{{arg2}}')]" parameterized="true"/>
65+
<element name="noCssClasses" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][not(@class)]" parameterized="true"/>
66+
<element name="margins" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
67+
<element name="padding" type="text" selector="(//div[contains(@class,'pagebuilder-products')]//div[contains(@data-appearance,'carousel')])[{{arg1}}][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
68+
</section>
4069
<section name="ProductsContentTypeForm">
4170
<element name="conditionsListText" type="text" selector="//label[contains(@class,'admin__field-label')]//span[text()='Condition']"/>
4271
<element name="conditionsList" type="text" selector=".rule-param-children"/>
@@ -60,7 +89,7 @@
6089
<element name="productImage" type="text" selector="(//div[contains(@data-content-type,'products')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//img[@class='product-image-photo']" parameterized="true"/>
6190
<element name="productImageCSS" type="text" selector="div[data-content-type=products] ol li.product-item img.product-image-photo"/>
6291
<element name="productImageByProductName" type="text" selector="//div[contains(@data-content-type,'products')]//ol//li[contains(@class,'product-item')]//a[contains(.,'{{arg1}}')]//ancestor::li[contains(@class,'product-item')]//img[@class='product-image-photo']" parameterized="true"/>
63-
<element name="productName" type="text" selector="(//div[contains(@data-content-type,'products')])//ol//li[contains(@class,'product-item')][{{arg1}}]//strong//a[@class='product-item-link' and @href and contains(.,'{{arg2}}')]" parameterized="true"/>
92+
<element name="productName" type="text" selector="(//div[contains(@data-content-type,'products')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//strong//a[@class='product-item-link' and @href and contains(.,'{{arg2}}')]" parameterized="true"/>
6493
<element name="productNameByProductName" type="text" selector="//div[contains(@data-content-type,'products')]//ol//li[contains(@class,'product-item')]//a[contains(.,'{{arg1}}')]" parameterized="true"/>
6594
<element name="productPrice" type="text" selector="(//div[contains(@data-content-type,'products')]//ol//li[contains(@class,'product-item')])[{{arg1}}]//span[@class='price' and .='${{arg2}}']" parameterized="true"/>
6695
<element name="productPriceContainer" type="text" selector="div[data-content-type=products] ol li.product-item div.price-box"/>

0 commit comments

Comments
 (0)