Skip to content

Commit 148d6cc

Browse files
authored
Merge pull request #5037 from magento-tsg-csl3/2.3-develop-pr37
[TSG-CSL3] For 2.3 (pr37)
2 parents f0ffe26 + dcaa36c commit 148d6cc

6 files changed

+173
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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="AdminChangeConfigurableProductVariationQty">
12+
<annotations>
13+
<description>Change quantity value for configurable product generated variation</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="rowIndex" type="string" defaultValue="0"/>
17+
<argument name="quantity" type="string" defaultValue="0"/>
18+
</arguments>
19+
<fillField selector="{{AdminCreateProductConfigurationsPanel.variationQty(rowIndex)}}" userInput="{{quantity}}" stepKey="fillVariationQuantity"/>
20+
</actionGroup>
21+
</actionGroups>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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="AdminFilterAttributeInConfigurableAttributesGrid">
12+
<annotations>
13+
<description>Filter attribute in configurable attributes grid by attribute code value</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="attributeCode" type="string" defaultValue="{{newProductAttribute.attribute_code}}"/>
17+
</arguments>
18+
<conditionalClick selector="{{AdminDataGridFilterSection.clear}}" visible="true" dependentSelector="{{AdminDataGridFilterSection.clear}}" stepKey="clearFilters"/>
19+
<waitForPageLoad stepKey="waitForFiltersReset"/>
20+
<waitForElementVisible selector="{{AdminCreateProductConfigurationsPanel.filters}}" stepKey="waitForFiltersAppear"/>
21+
<click selector="{{AdminCreateProductConfigurationsPanel.filters}}" stepKey="expandFilters"/>
22+
<fillField selector="{{AdminCreateProductConfigurationsPanel.attributeCode}}" userInput="{{attributeCode}}" stepKey="fillFilterValue"/>
23+
<click selector="{{AdminCreateProductConfigurationsPanel.applyFilters}}" stepKey="clickApplyFilters"/>
24+
</actionGroup>
25+
</actionGroups>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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="AdminSelectAttributeInConfigurableAttributesGrid" extends="AdminFilterAttributeInConfigurableAttributesGrid">
12+
<annotations>
13+
<description>EXTENDS: AdminFilterAttributeInConfigurableAttributesGrid. Select first filtered attribute.</description>
14+
</annotations>
15+
<click selector="{{AdminCreateProductConfigurationsPanel.firstCheckbox}}" stepKey="checkAttributeInGrid"/>
16+
</actionGroup>
17+
</actionGroups>

app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminCreateProductConfigurationsPanelSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<element name="applyFilters" type="button" selector="button[data-action='grid-filter-apply']" timeout="30"/>
1818
<element name="firstCheckbox" type="input" selector="tr[data-repeat-index='0'] .admin__control-checkbox"/>
1919
<element name="id" type="text" selector="//tr[contains(@data-repeat-index, '0')]/td[2]/div"/>
20+
<element name="variationsGrid" type="block" selector=".admin__field[data-index='configurable-matrix']"/>
21+
<element name="variationQty" type="input" selector=".admin__field[data-index='configurable-matrix'] input[name='configurable-matrix[{{rowIndex}}][qty]']" parameterized="true"/>
2022
<element name="attributeCheckbox" type="checkbox" selector="//div[contains(text(), '{{arg}}')]/ancestor::tr//input[@data-action='select-row']" parameterized="true"/>
2123
<element name="defaultLabel" type="text" selector="//div[contains(text(), '{{arg}}')]/ancestor::tr//td[3]/div[@class='data-grid-cell-content']" parameterized="true"/>
2224

app/code/Magento/ConfigurableProduct/Test/Mftf/Test/StorefrontConfigurableProductDetailsTest.xml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,108 @@
178178
<click selector="{{StorefrontProductInfoMainSection.AddToCart}}" stepKey="clickAddToCart" />
179179
<see userInput="This is a required field" selector="{{StorefrontProductInfoMainSection.productAttributeOptionsError}}" stepKey="seeError"/>
180180
</test>
181+
182+
<test name="StorefrontConfigurableProductVariationsTest">
183+
<annotations>
184+
<features value="ConfigurableProduct"/>
185+
<stories value="Configurable Product"/>
186+
<title value="Customer should get the right options list"/>
187+
<description value="Customer should get the right options list for each variation of configurable product"/>
188+
<severity value="CRITICAL"/>
189+
<testCaseId value="MC-23027"/>
190+
<useCaseId value="MC-22732"/>
191+
<group value="configurable_product"/>
192+
</annotations>
193+
194+
<before>
195+
<createData entity="ApiCategory" stepKey="createCategory"/>
196+
<!-- Add first attribute with options -->
197+
<createData entity="productAttributeWithTwoOptions" stepKey="createFirstAttribute"/>
198+
<createData entity="productAttributeOption1" stepKey="createFirstAttributeFirstOption">
199+
<requiredEntity createDataKey="createFirstAttribute"/>
200+
</createData>
201+
<createData entity="productAttributeOption2" stepKey="createFirstAttributeSecondOption">
202+
<requiredEntity createDataKey="createFirstAttribute"/>
203+
</createData>
204+
<!-- Add second attribute with options -->
205+
<createData entity="productAttributeWithTwoOptions" stepKey="createSecondAttribute"/>
206+
<createData entity="productAttributeOption1" stepKey="createSecondAttributeFirstOption">
207+
<requiredEntity createDataKey="createSecondAttribute"/>
208+
</createData>
209+
<createData entity="productAttributeOption2" stepKey="createSecondAttributeSecondOption">
210+
<requiredEntity createDataKey="createSecondAttribute"/>
211+
</createData>
212+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
213+
</before>
214+
<after>
215+
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
216+
<actionGroup ref="deleteProductBySku" stepKey="deleteProduct">
217+
<argument name="sku" value="{{BaseConfigurableProduct.sku}}"/>
218+
</actionGroup>
219+
<deleteData createDataKey="createFirstAttribute" stepKey="deleteFirstAttribute"/>
220+
<deleteData createDataKey="createSecondAttribute" stepKey="deleteSecondAttribute"/>
221+
<actionGroup ref="clearFiltersAdminDataGrid" stepKey="clearProductsGridFilters"/>
222+
<actionGroup ref="logout" stepKey="adminLogout"/>
223+
</after>
224+
225+
<actionGroup ref="AdminOpenProductIndexPageActionGroup" stepKey="openProductIndexPage"/>
226+
<actionGroup ref="goToCreateProductPage" stepKey="navigateToCreateProductPage">
227+
<argument name="product" value="BaseConfigurableProduct"/>
228+
</actionGroup>
229+
<actionGroup ref="fillMainProductForm" stepKey="fillProductForm">
230+
<argument name="product" value="BaseConfigurableProduct"/>
231+
</actionGroup>
232+
<actionGroup ref="SetCategoryByName" stepKey="addCategoryToProduct">
233+
<argument name="categoryName" value="$createCategory.name$"/>
234+
</actionGroup>
235+
<actionGroup ref="SetProductUrlKeyByString" stepKey="fillUrlKey">
236+
<argument name="urlKey" value="{{BaseConfigurableProduct.urlKey}}"/>
237+
</actionGroup>
238+
<click selector="{{AdminProductFormConfigurationsSection.createConfigurations}}" stepKey="clickOnCreateConfigurations"/>
239+
<actionGroup ref="AdminSelectAttributeInConfigurableAttributesGrid" stepKey="checkFirstAttribute">
240+
<argument name="attributeCode" value="$createFirstAttribute.attribute_code$"/>
241+
</actionGroup>
242+
<actionGroup ref="AdminSelectAttributeInConfigurableAttributesGrid" stepKey="checkSecondAttribute">
243+
<argument name="attributeCode" value="$createSecondAttribute.attribute_code$"/>
244+
</actionGroup>
245+
<click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickOnNextButton"/>
246+
<waitForPageLoad stepKey="waitForStepLoad"/>
247+
<click selector="{{AdminCreateProductConfigurationsPanel.selectAllByAttribute($createFirstAttribute.default_frontend_label$)}}" stepKey="clickFirstAttributeSelectAll"/>
248+
<click selector="{{AdminCreateProductConfigurationsPanel.selectAllByAttribute($createSecondAttribute.default_frontend_label$)}}" stepKey="clickSecondAttributeSelectAll"/>
249+
<click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickSecondNextStep"/>
250+
<waitForElement selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="waitThirdNextButton"/>
251+
<click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickThirdStep"/>
252+
<waitForElement selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="waitGenerateConfigurationsButton"/>
253+
<click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickToGenerateConfigurations"/>
254+
255+
<waitForElementVisible selector="{{AdminCreateProductConfigurationsPanel.variationsGrid}}" stepKey="waitForVariationsGrid"/>
256+
<actionGroup ref="AdminChangeConfigurableProductVariationQty" stepKey="setFirstVariationQuantity">
257+
<argument name="rowIndex" value="0"/>
258+
<argument name="quantity" value="0"/>
259+
</actionGroup>
260+
<actionGroup ref="AdminChangeConfigurableProductVariationQty" stepKey="setSecondVariationQuantity">
261+
<argument name="rowIndex" value="1"/>
262+
<argument name="quantity" value="1"/>
263+
</actionGroup>
264+
<actionGroup ref="AdminChangeConfigurableProductVariationQty" stepKey="setThirdVariationQuantity">
265+
<argument name="rowIndex" value="2"/>
266+
<argument name="quantity" value="1"/>
267+
</actionGroup>
268+
<actionGroup ref="AdminChangeConfigurableProductVariationQty" stepKey="setFourthVariationQuantity">
269+
<argument name="rowIndex" value="3"/>
270+
<argument name="quantity" value="1"/>
271+
</actionGroup>
272+
<actionGroup ref="saveConfigurableProduct" stepKey="saveConfigurableProduct">
273+
<argument name="product" value="BaseConfigurableProduct"/>
274+
</actionGroup>
275+
<scrollTo selector="{{AdminProductSEOSection.sectionHeader}}" x="0" y="-80" stepKey="scrollToAdminProductSEOSection"/>
276+
<click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="clickAdminProductSEOSectionHeader"/>
277+
<grabValueFrom selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="grabUrlKey"/>
278+
<amOnPage url="{$grabUrlKey}.html" stepKey="amOnConfigurableProductPage"/>
279+
<waitForPageLoad stepKey="waitForProductPageLoad"/>
280+
<waitForElementVisible selector="{{StorefrontProductInfoMainSection.productOptionSelect($createFirstAttribute.default_frontend_label$)}}" stepKey="waitForFirstSelect"/>
281+
<selectOption userInput="$createFirstAttributeFirstOption.option[store_labels][0][label]$" selector="{{StorefrontProductInfoMainSection.productOptionSelect($createFirstAttribute.default_frontend_label$)}}" stepKey="selectFirstAttributeFirstOption"/>
282+
<waitForElementVisible selector="{{StorefrontProductInfoMainSection.productOptionSelect($createSecondAttribute.default_frontend_label$)}}" stepKey="waitForSecondSelect"/>
283+
<selectOption userInput="$createSecondAttributeSecondOption.option[store_labels][0][label]$" selector="{{StorefrontProductInfoMainSection.productOptionSelect($createSecondAttribute.default_frontend_label$)}}" stepKey="selectSecondAttributeSecondOption"/>
284+
</test>
181285
</tests>

app/code/Magento/ConfigurableProduct/view/frontend/web/js/configurable.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,10 @@ define([
443443
}
444444

445445
for (i = 0; i < options.length; i++) {
446+
if (prevConfig && typeof allowedProductsByOption[i] === 'undefined') {
447+
continue; //jscs:ignore disallowKeywords
448+
}
449+
446450
allowedProducts = prevConfig ? allowedProductsByOption[i] : options[i].products.slice(0);
447451
optionPriceDiff = 0;
448452

0 commit comments

Comments
 (0)