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
+ <tests xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
10
+ xsi : noNamespaceSchemaLocation =" ../../../../../../../dev/tests/acceptance/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd" >
11
+ <test name =" StorefrontConfigurableProductChildSearchTest" >
12
+ <annotations >
13
+ <features value =" ConfigurableProduct" />
14
+ <stories value =" View configurable product details in storefront" />
15
+ <title value =" Guest customer should be able to search configurable product by attributes of child products" />
16
+ <description value =" Guest customer should be able to search configurable product by attributes of child products" />
17
+ <severity value =" MAJOR" />
18
+ <testCaseId value =" MC-249" />
19
+ <group value =" ConfigurableProduct" />
20
+ </annotations >
21
+ <before >
22
+ <!-- TODO: This should be converted to an actionGroup once MQE-993 is fixed. -->
23
+ <!-- Create the category -->
24
+ <createData entity =" ApiCategory" stepKey =" createCategory" />
25
+
26
+ <!-- Create the configurable product and add it to the category -->
27
+ <createData entity =" ApiConfigurableProduct" stepKey =" createConfigProduct" >
28
+ <requiredEntity createDataKey =" createCategory" />
29
+ </createData >
30
+
31
+ <!-- Create an attribute with two options to be used in the first child product -->
32
+ <createData entity =" productAttributeWithTwoOptions" stepKey =" createConfigProductAttribute" />
33
+ <createData entity =" productAttributeOption1" stepKey =" createConfigProductAttributeOption1" >
34
+ <requiredEntity createDataKey =" createConfigProductAttribute" />
35
+ </createData >
36
+ <createData entity =" productAttributeOption2" stepKey =" createConfigProductAttributeOption2" >
37
+ <requiredEntity createDataKey =" createConfigProductAttribute" />
38
+ </createData >
39
+
40
+ <!-- Create an attribute with two options to be used in the second child product -->
41
+ <createData entity =" productAttributeMultiselectTwoOptions" stepKey =" createConfigProductAttributeMultiSelect" />
42
+ <createData entity =" productAttributeOption3" stepKey =" createConfigProductAttributeOption1Multiselect" >
43
+ <requiredEntity createDataKey =" createConfigProductAttributeMultiSelect" />
44
+ </createData >
45
+ <createData entity =" productAttributeOption4" stepKey =" createConfigProductAttributeOption2Multiselect" >
46
+ <requiredEntity createDataKey =" createConfigProductAttributeMultiSelect" />
47
+ </createData >
48
+
49
+ <!-- Add the attribute we just created to default attribute set -->
50
+ <createData entity =" AddToDefaultSet" stepKey =" createConfigAddToAttributeSet" >
51
+ <requiredEntity createDataKey =" createConfigProductAttribute" />
52
+ </createData >
53
+
54
+ <!-- Add the second attribute we just created to default attribute set -->
55
+ <createData entity =" AddToDefaultSet" stepKey =" createConfigAddToAttributeSet2" >
56
+ <requiredEntity createDataKey =" createConfigProductAttributeMultiSelect" />
57
+ </createData >
58
+
59
+ <!-- Get the first option of the attribute we created -->
60
+ <getData entity =" ProductAttributeOptionGetter" index =" 1" stepKey =" getConfigAttributeOption1" >
61
+ <requiredEntity createDataKey =" createConfigProductAttribute" />
62
+ </getData >
63
+
64
+ <!-- Get the first option of the second attribute we created -->
65
+ <getData entity =" ProductAttributeOptionGetter" index =" 1" stepKey =" getConfigAttributeOption2" >
66
+ <requiredEntity createDataKey =" createConfigProductAttributeMultiSelect" />
67
+ </getData >
68
+
69
+ <!-- Create a simple product and give it the attribute with the first option -->
70
+ <createData entity =" ApiSimpleOneHidden" stepKey =" createConfigChildProduct1" >
71
+ <requiredEntity createDataKey =" createConfigProductAttribute" />
72
+ <requiredEntity createDataKey =" getConfigAttributeOption1" />
73
+ </createData >
74
+ <updateData entity =" ApiSimpleProductUpdateDescription" stepKey =" updateSimpleProduct1" createDataKey =" createConfigChildProduct1" />
75
+
76
+ <!-- Create a simple product and give it the attribute with the second option -->
77
+ <createData entity =" ApiSimpleTwoHidden" stepKey =" createConfigChildProduct2" >
78
+ <requiredEntity createDataKey =" createConfigProductAttributeMultiSelect" />
79
+ <requiredEntity createDataKey =" getConfigAttributeOption2" />
80
+ </createData >
81
+
82
+ <!-- Create the configurable product -->
83
+ <createData entity =" ConfigurableProductTwoOptions" stepKey =" createConfigProductOption" >
84
+ <requiredEntity createDataKey =" createConfigProduct" />
85
+ <requiredEntity createDataKey =" createConfigProductAttribute" />
86
+ <requiredEntity createDataKey =" getConfigAttributeOption1" />
87
+ <requiredEntity createDataKey =" getConfigAttributeOption2" />
88
+ </createData >
89
+
90
+ <!-- Add the first simple product to the configurable product -->
91
+ <createData entity =" ConfigurableProductAddChild" stepKey =" createConfigProductAddChild1" >
92
+ <requiredEntity createDataKey =" createConfigProduct" />
93
+ <requiredEntity createDataKey =" createConfigChildProduct1" />
94
+ </createData >
95
+
96
+ <!-- Add the second simple product to the configurable product -->
97
+ <createData entity =" ConfigurableProductAddChild" stepKey =" createConfigProductAddChild2" >
98
+ <requiredEntity createDataKey =" createConfigProduct" />
99
+ <requiredEntity createDataKey =" createConfigChildProduct2" />
100
+ </createData >
101
+
102
+ <!-- Create an attribute with two options to be used in the first child product (in the UI) -->
103
+ <createData entity =" productAttributeWithTwoOptions" stepKey =" createConfigProductAttributeSelect" />
104
+ <createData entity =" productAttributeOption5" stepKey =" createConfigProductAttributeSelectOption1" >
105
+ <requiredEntity createDataKey =" createConfigProductAttributeSelect" />
106
+ </createData >
107
+ <createData entity =" productAttributeOption6" stepKey =" createConfigProductAttributeSelectOption2" >
108
+ <requiredEntity createDataKey =" createConfigProductAttributeSelect" />
109
+ </createData >
110
+
111
+ <!-- Add the attribute we just created to default attribute set -->
112
+ <createData entity =" AddToDefaultSet" stepKey =" createConfigAddToAttributeSet3" >
113
+ <requiredEntity createDataKey =" createConfigProductAttributeSelect" />
114
+ </createData >
115
+
116
+ <actionGroup ref =" LoginAsAdmin" stepKey =" login" />
117
+
118
+ <!-- Go to the product page for the first product -->
119
+ <amOnPage stepKey =" goToProductGrid" url =" {{ProductCatalogPage.url}}" />
120
+ <waitForPageLoad stepKey =" waitForProductGridLoad" />
121
+ <actionGroup stepKey =" searchForSimpleProduct" ref =" filterProductGridBySku2" >
122
+ <argument name =" sku" value =" $$createConfigChildProduct1.sku$$" />
123
+ </actionGroup >
124
+ <actionGroup stepKey =" openProductEditPage" ref =" openProducForEditByClickingRowXColumnYInProductGrid" />
125
+
126
+ <!-- Edit the attribute for the first simple product -->
127
+ <selectOption stepKey =" editSelectAttribute" selector =" {{ModifyAttributes.nthExistingAttribute($$createConfigProductAttributeSelect.default_frontend_label$$)}}" userInput =" $$createConfigProductAttributeSelectOption1.option[store_labels][0][label]$$" />
128
+ <scrollToTopOfPage stepKey =" scrollToTop" />
129
+ <click selector =" {{AdminProductFormActionSection.saveButton}}" stepKey =" saveProduct" />
130
+ <seeElement selector =" {{AdminProductMessagesSection.successMessage}}" stepKey =" assertSaveMessageSuccess" />
131
+ </before >
132
+
133
+ <after >
134
+ <amOnPage url =" admin/admin/auth/logout/" stepKey =" logout" />
135
+ <deleteData createDataKey =" createConfigProduct" stepKey =" deleteConfigProduct" />
136
+ <deleteData createDataKey =" createConfigChildProduct1" stepKey =" deleteConfigChildProduct1" />
137
+ <deleteData createDataKey =" createConfigChildProduct2" stepKey =" deleteConfigChildProduct2" />
138
+ <deleteData createDataKey =" createConfigProductAttribute" stepKey =" deleteConfigProductAttribute" />
139
+ <deleteData createDataKey =" createConfigProductAttributeMultiSelect" stepKey =" deleteConfigProductAttributeMultiSelect" />
140
+ <deleteData createDataKey =" createConfigProductAttributeSelect" stepKey =" deleteConfigProductAttributeSelect" />
141
+ <deleteData createDataKey =" createCategory" stepKey =" deleteApiCategory" />
142
+ </after >
143
+
144
+ <!-- Quick search the storefront for the first attribute option -->
145
+ <amOnPage stepKey =" goToStoreFront" url =" {{StorefrontHomePage.url}}" />
146
+ <waitForPageLoad stepKey =" waitForStorefront" />
147
+ <fillField stepKey =" searchStorefront1" selector =" {{StorefrontQuickSearchSection.searchPhrase}}" userInput =" $$createConfigProductAttributeSelectOption1.option[store_labels][0][label]$$" />
148
+ <click stepKey =" clickSearch1" selector =" {{StorefrontQuickSearchSection.searchButton}}" />
149
+ <seeElement stepKey =" seeProduct1" selector =" {{StorefrontCategoryProductSection.ProductTitleByName('$$createConfigProduct.name$$')}}" />
150
+
151
+ <!-- Quick search the storefront for the second attribute option -->
152
+ <fillField stepKey =" searchStorefront2" selector =" {{StorefrontQuickSearchSection.searchPhrase}}" userInput =" $$createConfigProductAttributeOption1Multiselect.option[store_labels][0][label]$$" />
153
+ <click stepKey =" clickSearch2" selector =" {{StorefrontQuickSearchSection.searchButton}}" />
154
+ <seeElement stepKey =" seeProduct2" selector =" {{StorefrontCategoryProductSection.ProductTitleByName('$$createConfigProduct.name$$')}}" />
155
+
156
+ <!-- Quick search the storefront for the first product description -->
157
+ <fillField stepKey =" searchStorefront3" selector =" {{StorefrontQuickSearchSection.searchPhrase}}" userInput =" '$$createConfigChildProduct1.custom_attributes[short_description]$$'" />
158
+ <click stepKey =" clickSearch3" selector =" {{StorefrontQuickSearchSection.searchButton}}" />
159
+ <seeElement stepKey =" seeProduct3" selector =" {{StorefrontCategoryProductSection.ProductTitleByName('$$createConfigProduct.name$$')}}" />
160
+ </test >
161
+ </tests >
0 commit comments