Skip to content

Commit 139a265

Browse files
committed
MC-6436: Configuring Instant Purchase functionality
1 parent cb73be4 commit 139a265

14 files changed

+451
-0
lines changed

app/code/Magento/Braintree/Test/Mftf/Data/BraintreeData.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@
138138
<data key="year">20</data>
139139
<data key="cvv">113</data>
140140
</entity>
141+
<entity name="StoredPaymentMethods">
142+
<data key="cardNumberEnding">5100</data>
143+
<data key="cardExpire">12/2020</data>
144+
</entity>
141145

142146
<entity name="BraintreeConfigurationData" type="data">
143147
<data key="title">Credit Card (Braintree)</data>
Lines changed: 17 additions & 0 deletions
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="AssertStorefrontElementInvisibleActionGroup">
11+
<arguments>
12+
<argument name="selector" type="string"/>
13+
<argument name="userInput" type="string"/>
14+
</arguments>
15+
<dontSee selector="{{selector}}" userInput="{{userInput}}" stepKey="dontSeeElement"/>
16+
</actionGroup>
17+
</actionGroups>
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
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="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="ConfiguringInstantPurchaseFunctionalityTest">
12+
<annotations>
13+
<features value="One Page Checkout"/>
14+
<stories value="Configuring instant purchase"/>
15+
<title value="Configuring instant purchase functionality test"/>
16+
<description value="Configuring instant purchase"/>
17+
<severity value="CRITICAL"/>
18+
<testCaseId value="MC-6436"/>
19+
<group value="checkout"/>
20+
</annotations>
21+
<before>
22+
<!-- Configure Braintree Vault-enabled payment method -->
23+
<createData entity="BraintreeConfig" stepKey="braintreeConfigurationData"/>
24+
<createData entity="CustomBraintreeConfigurationData" stepKey="enableBraintree"/>
25+
26+
<!-- Create customer -->
27+
<createData entity="Simple_US_Customer" stepKey="createCustomer"/>
28+
29+
<!-- Create product -->
30+
<createData entity="SimpleProduct2" stepKey="createProduct"/>
31+
32+
<!-- Login as admin -->
33+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
34+
35+
<!-- Create store views -->
36+
<actionGroup ref="AdminCreateStoreViewActionGroup" stepKey="createFirstStoreView">
37+
<argument name="customStore" value="storeViewData1"/>
38+
</actionGroup>
39+
<actionGroup ref="AdminCreateStoreViewActionGroup" stepKey="createSecondStoreView">
40+
<argument name="customStore" value="storeViewData2"/>
41+
</actionGroup>
42+
</before>
43+
<after>
44+
<!-- Set configs to default -->
45+
<createData entity="DefaultBraintreeConfig" stepKey="defaultBraintreeConfig"/>
46+
<createData entity="RollBackCustomBraintreeConfigurationData" stepKey="rollBackCustomBraintreeConfigurationData"/>
47+
48+
<!-- Delete product -->
49+
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
50+
51+
<!-- Delete customer -->
52+
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
53+
54+
<!-- Delete store views -->
55+
<actionGroup ref="AdminDeleteStoreViewActionGroup" stepKey="deleteFirstStoreView">
56+
<argument name="customStore" value="storeViewData1"/>
57+
</actionGroup>
58+
<actionGroup ref="AdminDeleteStoreViewActionGroup" stepKey="deleteSecondStoreView">
59+
<argument name="customStore" value="storeViewData2"/>
60+
</actionGroup>
61+
62+
<!-- Admin logout -->
63+
<actionGroup ref="logout" stepKey="adminLogout"/>
64+
</after>
65+
66+
<!-- Login to Frontend -->
67+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCustomer">
68+
<argument name="Customer" value="$$createCustomer$$"/>
69+
</actionGroup>
70+
71+
<!-- Add product to cart -->
72+
<actionGroup ref="AddSimpleProductToCart" stepKey="addProductToCart">
73+
<argument name="product" value="$$createProduct$$"/>
74+
</actionGroup>
75+
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="goToCheckoutFromMinicart"/>
76+
77+
<!-- Customer placed order with payment method save -->
78+
<waitForElement selector="{{CheckoutShippingMethodsSection.next}}" stepKey="waitForNextButton"/>
79+
<click selector="{{CheckoutShippingMethodsSection.next}}" stepKey="clickNext"/>
80+
<waitForElement selector="{{CheckoutPaymentSection.paymentSectionTitle}}" stepKey="waitForPaymentSectionLoaded"/>
81+
82+
<!-- Fill Braintree cart data -->
83+
<click selector="{{BraintreeConfigurationPaymentSection.creditCart}}" stepKey="selectBraintreePaymentMethod"/>
84+
<waitForPageLoad stepKey="waitForBraintreeFormLoad"/>
85+
<scrollTo selector="{{BraintreeConfigurationPaymentSection.creditCart}}" stepKey="scrollToCreditCardSection"/>
86+
<actionGroup ref="StorefrontFillCartDataActionGroup" stepKey="fillCartData"/>
87+
<waitForPageLoad stepKey="waitForFillCartData"/>
88+
89+
<!-- Place order -->
90+
<click selector="{{BraintreeConfigurationPaymentSection.paymentMethodContainer}}{{CheckoutPaymentSection.placeOrder}}" stepKey="checkoutPlaceOrder"/>
91+
<waitForPageLoad stepKey="waitForPageLoad"/>
92+
<see selector="{{CheckoutSuccessMainSection.successTitle}}" userInput="Thank you for your purchase!" stepKey="waitForLoadSuccessPage"/>
93+
94+
<!-- Go to Configuration > Sales -->
95+
<actionGroup ref="AdminOpenInstantPurchaseConfigPageActionGroup" stepKey="openInstantPurchaseConfigPage"/>
96+
97+
<!-- Enable Instant Purchase -->
98+
<actionGroup ref="AdminChangeInstantPurchaseStatusActionGroup" stepKey="enableInstantPurchase"/>
99+
100+
<!-- Switch to specific store view -->
101+
<actionGroup ref="AdminSwitchStoreViewActionGroup" stepKey="switchToSpecificStoreView">
102+
<argument name="storeView" value="storeViewData1.name"/>
103+
</actionGroup>
104+
105+
<!-- Change button text on a single store view -->
106+
<actionGroup ref="AdminChangeInstantPurchaseButtonTextActionGroup" stepKey="changeInstantPurchaseButtonText">
107+
<argument name="buttonText" value="Quick Buy"/>
108+
</actionGroup>
109+
110+
<!-- Verify changes on the front-end by opening a simple product as a logged in customer with saved card and address on given store view:
111+
1. Go to Storefront page -->
112+
<actionGroup ref="StorefrontOpenHomePageActionGroup" stepKey="openStorefrontPage"/>
113+
114+
<!-- 2. Switch store view -->
115+
<actionGroup ref="StorefrontSwitchStoreViewActionGroup" stepKey="SwitchStoreView">
116+
<argument name="storeView" value="storeViewData1"/>
117+
</actionGroup>
118+
119+
<!-- 3. Assert customer is logged with saved card with address -->
120+
<actionGroup ref="OpenStorefrontCustomerStoredPaymentMethodsPageActionGroup" stepKey="openStorefrontCustomerStoredPaymentMethodsPage"/>
121+
<actionGroup ref="AssertStorefrontCustomerSavedCardActionGroup" stepKey="assertCustomerPaymentMethod"/>
122+
<actionGroup ref="StorefrontCustomerGoToSidebarMenu" stepKey="goToAddressBook">
123+
<argument name="menu" value="Address Book"/>
124+
</actionGroup>
125+
<see selector="{{CheckoutOrderSummarySection.shippingAddress}}" userInput="{{US_Address_TX.street[0]}} {{US_Address_TX.city}}, {{US_Address_TX.state}}, {{US_Address_TX.postcode}}" stepKey="checkShippingAddress"/>
126+
127+
<!-- Open product page -->
128+
<actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="openProductPage">
129+
<argument name="productUrl" value="$$createProduct.custom_attributes[url_key]$$"/>
130+
</actionGroup>
131+
132+
<!-- Quick Buy button shows up. Clicking it opens review popup -->
133+
<actionGroup ref="AssertStorefrontElementVisibleActionGroup" stepKey="seeQuickBuyButton">
134+
<argument name="selector" value="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}"/>
135+
<argument name="userInput" value="Quick Buy"/>
136+
</actionGroup>
137+
<click selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="clickQuickBuyButton"/>
138+
<waitForElementVisible selector="{{StorefrontInstantPurchasePopupSection.modalTitle}}" stepKey="waitForPopUpTitleVisible"/>
139+
<see selector="{{StorefrontInstantPurchasePopupSection.modalTitle}}" userInput="Instant Purchase Confirmation" stepKey="seeReviewPopUp"/>
140+
<click selector="{{StorefrontInstantPurchasePopupSection.cancel}}" stepKey="closeModalPopup"/>
141+
<waitForPageLoad stepKey="waitForClosing"/>
142+
143+
<!-- Verify changes on the front-end by opening a simple product as a logged in customer with saved card and address on a store view for which description was not changed
144+
1. New customer session should be started to verify changes -->
145+
<actionGroup ref="StorefrontSignOutActionGroup" stepKey="customerLogout"/>
146+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginCustomer">
147+
<argument name="Customer" value="$$createCustomer$$"/>
148+
</actionGroup>
149+
150+
<!-- 2. Switch store view which description was not changed -->
151+
<actionGroup ref="StorefrontSwitchStoreViewActionGroup" stepKey="SwitchToSecondStoreView">
152+
<argument name="storeView" value="storeViewData2"/>
153+
</actionGroup>
154+
155+
<!-- 3. Assert customer is logged with saved card and address -->
156+
<actionGroup ref="OpenStorefrontCustomerStoredPaymentMethodsPageActionGroup" stepKey="openStorefrontCustomerPaymentMethodsPage"/>
157+
<actionGroup ref="AssertStorefrontCustomerSavedCardActionGroup" stepKey="assertPaymentMethod"/>
158+
<actionGroup ref="StorefrontCustomerGoToSidebarMenu" stepKey="openAddressBook">
159+
<argument name="menu" value="Address Book"/>
160+
</actionGroup>
161+
<see selector="{{CheckoutOrderSummarySection.shippingAddress}}" userInput="{{US_Address_TX.street[0]}} {{US_Address_TX.city}}, {{US_Address_TX.state}}, {{US_Address_TX.postcode}}" stepKey="seeShippingAddress"/>
162+
163+
<!-- Open product page -->
164+
<actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="openCreatedProductPage">
165+
<argument name="productUrl" value="$$createProduct.custom_attributes[url_key]$$"/>
166+
</actionGroup>
167+
168+
<!-- Instant Purchase button shows up. Clicking it opens review popup. -->
169+
<actionGroup ref="AssertStorefrontElementVisibleActionGroup" stepKey="seeInstantPurchaseButton">
170+
<argument name="selector" value="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}"/>
171+
<argument name="userInput" value="Instant Purchase"/>
172+
</actionGroup>
173+
<click selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="clickInstantPurchaseButton"/>
174+
<waitForElementVisible selector="{{StorefrontInstantPurchasePopupSection.modalTitle}}" stepKey="waitForPopUpVisible"/>
175+
<see selector="{{StorefrontInstantPurchasePopupSection.modalTitle}}" userInput="Instant Purchase Confirmation" stepKey="seeReviewPopUpTitle"/>
176+
<click selector="{{StorefrontInstantPurchasePopupSection.cancel}}" stepKey="closeModalPopUp"/>
177+
<waitForPageLoad stepKey="waitForModalClosing"/>
178+
179+
<actionGroup ref="StorefrontSignOutActionGroup" stepKey="createdCustomerLogout"/>
180+
181+
<!-- Return to configuration and disable Instant Purchase in a specific store view -->
182+
<actionGroup ref="AdminOpenInstantPurchaseConfigPageActionGroup" stepKey="openInstantPurchasePage"/>
183+
<scrollToTopOfPage stepKey="scrollToTop"/>
184+
<actionGroup ref="AdminSwitchStoreViewActionGroup" stepKey="switchToFirstSpecificStoreView">
185+
<argument name="storeView" value="storeViewData1.name"/>
186+
</actionGroup>
187+
<actionGroup ref="AdminChangeInstantPurchaseStatusActionGroup" stepKey="disableInstantPurchase">
188+
<argument name="status" value="0"/>
189+
</actionGroup>
190+
191+
<!-- Verify changes on the front-end by opening a simple product as a logged in customer with saved card and address in the specific store view
192+
1. New customer session should be started to verify changes -->
193+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="loginAsCreatedCustomer">
194+
<argument name="Customer" value="$$createCustomer$$"/>
195+
</actionGroup>
196+
197+
<!-- 2. Switch store view -->
198+
<actionGroup ref="StorefrontSwitchStoreViewActionGroup" stepKey="switchStoreView">
199+
<argument name="storeView" value="storeViewData1"/>
200+
</actionGroup>
201+
202+
<!-- 3. Assert customer is logged with saved card and address -->
203+
<actionGroup ref="OpenStorefrontCustomerStoredPaymentMethodsPageActionGroup" stepKey="openCustomerPaymentMethodsPage"/>
204+
<actionGroup ref="AssertStorefrontCustomerSavedCardActionGroup" stepKey="assertCartPaymentMethod"/>
205+
<actionGroup ref="StorefrontCustomerGoToSidebarMenu" stepKey="goToAddressBookPage">
206+
<argument name="menu" value="Address Book"/>
207+
</actionGroup>
208+
<see selector="{{CheckoutOrderSummarySection.shippingAddress}}" userInput="{{US_Address_TX.street[0]}} {{US_Address_TX.city}}, {{US_Address_TX.state}}, {{US_Address_TX.postcode}}" stepKey="assertCustomerShippingAddress"/>
209+
210+
<!-- Open product page -->
211+
<actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="openProductIndexPage">
212+
<argument name="productUrl" value="$$createProduct.custom_attributes[url_key]$$"/>
213+
</actionGroup>
214+
215+
<!-- Quick Buy button is not visible -->
216+
<actionGroup ref="AssertStorefrontElementInvisibleActionGroup" stepKey="dontSeeQuickBuyButton">
217+
<argument name="selector" value="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}"/>
218+
<argument name="userInput" value="Quick Buy"/>
219+
</actionGroup>
220+
221+
<!-- Verify changes on the front-end by opening a simple product as a logged in customer with saved card and address in the other store view
222+
1. New customer session should be started to verify changes -->
223+
<actionGroup ref="StorefrontSignOutActionGroup" stepKey="logoutCustomer"/>
224+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="customerLoginToStorefront">
225+
<argument name="Customer" value="$$createCustomer$$"/>
226+
</actionGroup>
227+
228+
<!-- 2. Switch store view -->
229+
<actionGroup ref="StorefrontSwitchStoreViewActionGroup" stepKey="switchToSecondStoreView">
230+
<argument name="storeView" value="storeViewData2"/>
231+
</actionGroup>
232+
233+
<!-- 3. Assert customer is logged with saved card and address -->
234+
<actionGroup ref="OpenStorefrontCustomerStoredPaymentMethodsPageActionGroup" stepKey="goToStorefrontCustomerPaymentMethodsPage"/>
235+
<actionGroup ref="AssertStorefrontCustomerSavedCardActionGroup" stepKey="assertCardPaymentMethod"/>
236+
<actionGroup ref="StorefrontCustomerGoToSidebarMenu" stepKey="openAddressBookPage">
237+
<argument name="menu" value="Address Book"/>
238+
</actionGroup>
239+
<see selector="{{CheckoutOrderSummarySection.shippingAddress}}" userInput="{{US_Address_TX.street[0]}} {{US_Address_TX.city}}, {{US_Address_TX.state}}, {{US_Address_TX.postcode}}" stepKey="seeCustomerShippingAddress"/>
240+
241+
<!-- Open product page -->
242+
<actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="goToProductPage">
243+
<argument name="productUrl" value="$$createProduct.custom_attributes[url_key]$$"/>
244+
</actionGroup>
245+
246+
<!-- Instant Purchase button is still visible -->
247+
<actionGroup ref="AssertStorefrontElementVisibleActionGroup" stepKey="seeInstantPurchaseBtn">
248+
<argument name="selector" value="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}"/>
249+
<argument name="userInput" value="Instant Purchase"/>
250+
</actionGroup>
251+
</test>
252+
</tests>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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="AssertStorefrontCustomerSavedCardActionGroup">
12+
<arguments>
13+
<argument name="card" type="entity" defaultValue="StoredPaymentMethods"/>
14+
</arguments>
15+
<see selector="{{StorefrontCustomerStoredPaymentMethodsSection.cardNumber}}" userInput="{{card.cardNumberEnding}}" stepKey="verifyCardNumber"/>
16+
<see selector="{{StorefrontCustomerStoredPaymentMethodsSection.expirationDate}}" userInput="{{card.cardExpire}}" stepKey="verifyCardExpire"/>
17+
</actionGroup>
18+
</actionGroups>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="OpenStorefrontCustomerStoredPaymentMethodsPageActionGroup">
11+
<amOnPage url="{{StorefrontCustomerStoredPaymentMethodsPage.url}}" stepKey="goToCustomerStoredPaymentMethodsPage"/>
12+
<waitForPageLoad stepKey="waitForCustomerStoredPaymentMethodsPageLoad"/>
13+
</actionGroup>
14+
</actionGroups>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
11+
<page name="StorefrontCustomerStoredPaymentMethodsPage" url="/vault/cards/listaction/" area="storefront" module="Magento_Customer">
12+
<section name="StorefrontCustomerStoredPaymentMethodsSection"/>
13+
</page>
14+
</pages>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
11+
<section name="StorefrontCustomerStoredPaymentMethodsSection">
12+
<element name="cardNumber" type="text" selector="td.card-number"/>
13+
<element name="expirationDate" type="text" selector="td.card-expire"/>
14+
</section>
15+
</sections>

0 commit comments

Comments
 (0)