Skip to content

Commit a102e6f

Browse files
committed
MC-24238: [MFTF Test] Using Instant Purchase
1 parent ac3eb00 commit a102e6f

File tree

7 files changed

+243
-4
lines changed

7 files changed

+243
-4
lines changed

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@
5353
<data key="value">sandbox</data>
5454
</entity>
5555
<entity name="MerchantId" type="merchant_id">
56-
<data key="value">MERCH_ID</data>
56+
<data key="value">{{_CREDS.magento/braintree_enabled_fraud_merchant_id}}</data>
5757
</entity>
5858
<entity name="PublicKey" type="public_key">
59-
<data key="value">PUBLIC_KEY</data>
59+
<data key="value">{{_CREDS.magento/braintree_enabled_fraud_public_key}}</data>
6060
</entity>
6161
<entity name="PrivateKey" type="private_key">
62-
<data key="value">PRIVATE_KEY</data>
62+
<data key="value">{{_CREDS.magento/braintree_enabled_fraud_private_key}}</data>
6363
</entity>
6464

6565
<!-- default configuration used to restore Magento config -->
@@ -141,6 +141,16 @@
141141
<data key="cardNumberEnding">5100</data>
142142
<data key="cardExpire">12/2020</data>
143143
</entity>
144+
<entity name="VisaDefaultCard" type="data">
145+
<data key="cardNumber">4111111111111111</data>
146+
<data key="month">01</data>
147+
<data key="year">30</data>
148+
<data key="cvv">123</data>
149+
</entity>
150+
<entity name="VisaDefaultCardInfo">
151+
<data key="cardNumberEnding">1111</data>
152+
<data key="cardExpire">01/2030</data>
153+
</entity>
144154

145155
<entity name="BraintreeConfigurationData" type="data">
146156
<data key="title">Credit Card (Braintree)</data>
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="AssertStorefrontInstantPurchaseConfirmationDataActionGroup">
11+
<annotations>
12+
<description>Click on "Instant Purchase" button and assert shipping and billing information</description>
13+
</annotations>
14+
<arguments>
15+
<argument name="shippingStreet" type="string" defaultValue="{{US_Address_TX.street[0]}}"/>
16+
<argument name="billingStreet" type="string" defaultValue="{{US_Address_TX_Default_Billing.street[0]}}"/>
17+
<argument name="cardEnding" type="string" defaultValue="{{StoredPaymentMethods.cardNumberEnding}}"/>
18+
</arguments>
19+
<click selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="clickInstantPurchaseButton"/>
20+
<waitForElementVisible selector="{{ModalConfirmationSection.OkButton}}" stepKey="waitForButtonAppears"/>
21+
<seeElement selector="{{StorefrontInstantPurchasePopupSection.shippingAddress(shippingStreet)}}" stepKey="assertShippingAddress"/>
22+
<seeElement selector="{{StorefrontInstantPurchasePopupSection.billingAddress(billingStreet)}}" stepKey="assertBillingAddress"/>
23+
<seeElement selector="{{StorefrontInstantPurchasePopupSection.paymentMethod(cardEnding)}}" stepKey="assertCardEnding"/>
24+
</actionGroup>
25+
</actionGroups>

app/code/Magento/InstantPurchase/Test/Mftf/Section/StorefrontInstantPurchasePopupSection.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,8 @@
1111
<section name="StorefrontInstantPurchasePopupSection">
1212
<element name="modalTitle" type="text" selector=".modal-popup .modal-title"/>
1313
<element name="cancel" type="button" selector=".modal-popup.confirm button.action-dismiss"/>
14+
<element name="shippingAddress" type="text" selector="//aside[contains(@class, 'modal-popup')]//strong[contains(text(),'Shipping Address:')]/following-sibling::p[contains(text(),'{{Data}}')][1]" parameterized="true"/>
15+
<element name="billingAddress" type="text" selector="//aside[contains(@class, 'modal-popup')]//strong[contains(text(),'Billing Address:')]/following-sibling::p[contains(text(),'{{Data}}')]" parameterized="true"/>
16+
<element name="paymentMethod" type="text" selector="//aside[contains(@class, 'modal-popup')]//strong[contains(text(),'Payment Method:')]/following-sibling::p[contains(text(),'{{Data}}')]" parameterized="true"/>
1417
</section>
1518
</sections>
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
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" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="StorefrontInstantPurchaseFunctionalityTest">
11+
<annotations>
12+
<features value="InstantPurchase"/>
13+
<stories value="Using Instant Purchase"/>
14+
<title value="Checks that Instant Purchase functionality works fine"/>
15+
<description value="Checks that customer with different billing and shipping addresses work with Instant Purchase functionality fine"/>
16+
<useCaseId value="MAGETWO-90898"/>
17+
<testCaseId value="MC-25924"/>
18+
<severity value="CRITICAL"/>
19+
<group value="instant_purchase"/>
20+
<group value="vault"/>
21+
<group value="braintree"/>
22+
</annotations>
23+
<before>
24+
<magentoCLI command="downloadable:domains:add" arguments="example.com static.magento.com" stepKey="addDownloadableDomain"/>
25+
<!-- Configure Braintree payment method -->
26+
<createData entity="BraintreeConfig" stepKey="configureBraintreePayment"/>
27+
<!-- Enable Braintree with Vault -->
28+
<createData entity="CustomBraintreeConfigurationData" stepKey="enableBraintreeAndVault"/>
29+
<createData entity="Simple_US_Customer_Multiple_Addresses" stepKey="createCustomer"/>
30+
<!-- Create all product variations -->
31+
<createData entity="SimpleProduct2" stepKey="createSimpleProduct"/>
32+
<createData entity="VirtualProduct" stepKey="createVirtualProduct"/>
33+
<actionGroup ref="AdminCreateApiConfigurableProductActionGroup" stepKey="createConfigurableProduct"/>
34+
<!-- Create Bundle Product -->
35+
<createData entity="ApiFixedBundleProduct" stepKey="createBundleProduct"/>
36+
<createData entity="DropDownBundleOption" stepKey="createBundleOption">
37+
<requiredEntity createDataKey="createBundleProduct"/>
38+
</createData>
39+
<createData entity="ApiBundleLink" stepKey="createBundleLink">
40+
<requiredEntity createDataKey="createBundleProduct"/>
41+
<requiredEntity createDataKey="createBundleOption"/>
42+
<requiredEntity createDataKey="createSimpleProduct"/>
43+
</createData>
44+
<!-- Create Downloadable Product -->
45+
<createData entity="ApiDownloadableProduct" stepKey="createDownloadableProduct"/>
46+
<createData entity="downloadableLink1" stepKey="addDownloadableLink">
47+
<requiredEntity createDataKey="createDownloadableProduct"/>
48+
</createData>
49+
<!-- Create Grouped Product -->
50+
<createData entity="ApiGroupedProduct" stepKey="createGroupedProduct"/>
51+
<createData entity="OneSimpleProductLink" stepKey="createLinkForGroupedProduct">
52+
<requiredEntity createDataKey="createGroupedProduct"/>
53+
<requiredEntity createDataKey="createSimpleProduct"/>
54+
</createData>
55+
<!-- Log in as a customer -->
56+
<actionGroup ref="LoginToStorefrontActionGroup" stepKey="customerLoginToStorefront">
57+
<argument name="Customer" value="$createCustomer$"/>
58+
</actionGroup>
59+
<!-- Customer placed order from storefront with payment method -->
60+
<actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addProductToCart">
61+
<argument name="product" value="$createSimpleProduct$"/>
62+
</actionGroup>
63+
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="goToCheckoutFromMinicart"/>
64+
<actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="setShippingMethodFlatRate"/>
65+
<actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentStep"/>
66+
<!-- Fill Braintree card data -->
67+
<click selector="{{BraintreeConfigurationPaymentSection.creditCart}}" stepKey="selectBraintreePaymentMethod"/>
68+
<waitForPageLoad stepKey="waitForBraintreeFormLoad"/>
69+
<scrollTo selector="{{BraintreeConfigurationPaymentSection.creditCart}}" stepKey="scrollToCreditCardSection"/>
70+
<actionGroup ref="StorefrontFillCartDataActionGroup" stepKey="fillCardData">
71+
<argument name="cartData" value="PaymentAndShippingInfo"/>
72+
</actionGroup>
73+
<waitForPageLoad stepKey="waitForFillCardData"/>
74+
<checkOption selector="{{StorefrontOnePageCheckoutPaymentSection.saveForLaterUse}}" stepKey="checkSaveForLaterUse"/>
75+
<actionGroup ref="CheckoutPlaceOrderActionGroup" stepKey="clickOnPlaceOrder">
76+
<argument name="orderNumberMessage" value="CONST.successCheckoutOrderNumberMessage"/>
77+
<argument name="emailYouMessage" value="CONST.successCheckoutEmailYouMessage"/>
78+
</actionGroup>
79+
</before>
80+
<after>
81+
<actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="logoutCustomer"/>
82+
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
83+
<!-- Set configs to default -->
84+
<createData entity="DefaultBraintreeConfig" stepKey="defaultBraintreeConfig"/>
85+
<createData entity="RollBackCustomBraintreeConfigurationData" stepKey="rollBackCustomBraintreeConfigurationData"/>
86+
<!-- Remove created products/attributes -->
87+
<deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/>
88+
<deleteData createDataKey="createVirtualProduct" stepKey="deleteVirtualProduct"/>
89+
<deleteData createDataKey="createBundleProduct" stepKey="deleteBundleProduct"/>
90+
<deleteData createDataKey="createGroupedProduct" stepKey="deleteGroupedProduct"/>
91+
<!-- Remove Downloadable Product -->
92+
<magentoCLI command="downloadable:domains:remove static.magento.com" stepKey="removeDownloadableDomain"/>
93+
<deleteData createDataKey="createDownloadableProduct" stepKey="deleteDownloadableProduct"/>
94+
<!-- Remove Configurable Product -->
95+
<deleteData createDataKey="createConfigProductCreateConfigurableProduct" stepKey="deleteConfigProduct"/>
96+
<deleteData createDataKey="createConfigProductAttributeCreateConfigurableProduct" stepKey="deleteConfigProductAttribute"/>
97+
<deleteData createDataKey="createConfigChildProduct1CreateConfigurableProduct" stepKey="deleteConfigChildProduct1"/>
98+
<deleteData createDataKey="createConfigChildProduct2CreateConfigurableProduct" stepKey="deleteConfigChildProduct2"/>
99+
<!-- Reindex invalidated indices after product attribute has been created/deleted -->
100+
<actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="reindexInvalidatedIndices"/>
101+
</after>
102+
<!-- 1. Browse all product page and verify that the "Instant Purchase" button appears -->
103+
<!-- Virtual product -->
104+
<amOnPage url="{{StorefrontProductPage.url($createVirtualProduct.custom_attributes[url_key]$)}}" stepKey="openVirtualProductPage"/>
105+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForButtonOnVirtualProductPage"/>
106+
<!-- Downloadable Product -->
107+
<amOnPage url="{{StorefrontProductPage.url($createDownloadableProduct.custom_attributes[url_key]$)}}" stepKey="openDownloadableProductPage"/>
108+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForButtonOnDownloadableProductPage"/>
109+
<!-- Bundle Product -->
110+
<amOnPage url="{{StorefrontProductPage.url($createBundleProduct.custom_attributes[url_key]$)}}" stepKey="openBundleProductPage"/>
111+
<waitForElementVisible selector="{{StorefrontBundleProductActionSection.customizeAndAddToCartButton}}" stepKey="waitForCustomizeAndAddToCartButton"/>
112+
<click selector="{{StorefrontBundleProductActionSection.customizeAndAddToCartButton}}" stepKey="clickCustomizeAndAddToCart"/>
113+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForButtonOnBundleProductPage"/>
114+
<!-- Grouped product -->
115+
<amOnPage url="{{StorefrontProductPage.url($createGroupedProduct.custom_attributes[url_key]$)}}" stepKey="openGroupedProductPage"/>
116+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForButtonOnGroupedProductPage"/>
117+
<!-- Configurable Product -->
118+
<amOnPage url="{{StorefrontProductPage.url($createConfigProductCreateConfigurableProduct.custom_attributes[url_key]$)}}" stepKey="openConfigurableProductPage"/>
119+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForButtonOnConfigurableProductPage"/>
120+
<!-- 2. Click on "Instant Purchase" and assert information -->
121+
<amOnPage url="{{StorefrontProductPage.url($createSimpleProduct.custom_attributes[url_key]$)}}" stepKey="openSimpleProductPage"/>
122+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForInstantPurchaseButton"/>
123+
<actionGroup ref="AssertStorefrontInstantPurchaseConfirmationDataActionGroup" stepKey="assertInstantPurchasePopupData">
124+
<argument name="shippingStreet" value="{{US_Address_NY.street[0]}}"/>
125+
<argument name="billingStreet" value="{{US_Address_NY.street[0]}}"/>
126+
<argument name="cardEnding" value="{{StoredPaymentMethods.cardNumberEnding}}"/>
127+
</actionGroup>
128+
<!-- 3. Confirm Instant Purchase -->
129+
<click selector="{{ModalConfirmationSection.OkButton}}" stepKey="placeOrderAgain"/>
130+
<waitForElementVisible selector="{{StorefrontMessagesSection.success}}" stepKey="waitForSuccessMessage"/>
131+
<see userInput="Your order number is:" selector="{{StorefrontMessagesSection.success}}" stepKey="seePlaceOrderSuccessMessage"/>
132+
<!-- 4. Customer changes his default address -->
133+
<amOnPage url="{{StorefrontCustomerAddressesPage.url}}" stepKey="goToAddressPage"/>
134+
<click selector="{{StorefrontCustomerAddressesSection.editAdditionalAddress('1')}}" stepKey="clickOnEditAdditionalAddressButton"/>
135+
<checkOption selector="{{StorefrontCustomerAddressFormSection.useAsDefaultBillingAddressCheckBox}}" stepKey="checkUseAsDefaultBillingAddressCheckbox"/>
136+
<actionGroup ref="AdminSaveCustomerAddressActionGroup" stepKey="saveAddress"/>
137+
<!-- 5.1 Customer places a new order from the storefront with new payment credentials -->
138+
<actionGroup ref="AddSimpleProductToCartActionGroup" stepKey="addProductToCartAgain">
139+
<argument name="product" value="$createSimpleProduct$"/>
140+
</actionGroup>
141+
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="goToCheckoutFromMinicartAgain"/>
142+
<actionGroup ref="StorefrontSetShippingMethodActionGroup" stepKey="setShippingMethodFlatRateAgain"/>
143+
<click selector="{{CheckoutShippingMethodsSection.shipHereButton}}" stepKey="changeShippingAddress"/>
144+
<actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToCheckoutPaymentStepAgain"/>
145+
<!-- Fill Braintree card data -->
146+
<click selector="{{BraintreeConfigurationPaymentSection.creditCart}}" stepKey="selectBraintreePaymentMethodAgain"/>
147+
<waitForPageLoad stepKey="waitForBraintreeFormLoadAgain"/>
148+
<scrollTo selector="{{BraintreeConfigurationPaymentSection.creditCart}}" stepKey="scrollToCreditCardSectionAgain"/>
149+
<actionGroup ref="StorefrontFillCartDataActionGroup" stepKey="fillCardDataAgain">
150+
<argument name="cartData" value="VisaDefaultCard"/>
151+
</actionGroup>
152+
<waitForPageLoad stepKey="waitForFillCardDataAgain"/>
153+
<!-- 5.2 Customer save this payment method -->
154+
<checkOption selector="{{StorefrontOnePageCheckoutPaymentSection.saveForLaterUse}}" stepKey="checkSaveForLaterUseAgain"/>
155+
<actionGroup ref="CheckoutPlaceOrderActionGroup" stepKey="clickOnPlaceOrderAgain">
156+
<argument name="orderNumberMessage" value="CONST.successCheckoutOrderNumberMessage"/>
157+
<argument name="emailYouMessage" value="CONST.successCheckoutEmailYouMessage"/>
158+
</actionGroup>
159+
<!-- 6. Customer opens simple product page -->
160+
<amOnPage url="{{StorefrontProductPage.url($createSimpleProduct.custom_attributes[url_key]$)}}" stepKey="openSimpleProductPageAgain"/>
161+
<waitForElementVisible selector="{{StorefrontInstantPurchaseSection.instantPurchaseButton}}" stepKey="waitForInstantPurchaseButtonAgain"/>
162+
<!-- 7. Click on "Instant Purchase" and verify that information are different from previous -->
163+
<actionGroup ref="AssertStorefrontInstantPurchaseConfirmationDataActionGroup" stepKey="assertInstantPurchasePopupDataAgain">
164+
<argument name="shippingStreet" value="{{US_Address_NY.street[0]}}"/>
165+
<argument name="billingStreet" value="{{UK_Not_Default_Address.street[0]}}"/>
166+
<argument name="cardEnding" value="{{VisaDefaultCardInfo.cardNumberEnding}}"/>
167+
</actionGroup>
168+
<!-- 8. Confirm Instant Purchase -->
169+
<click selector="{{ModalConfirmationSection.OkButton}}" stepKey="placeOrderFinalTime"/>
170+
<waitForElementVisible selector="{{StorefrontMessagesSection.success}}" stepKey="waitForSuccessMessageAgain"/>
171+
<see userInput="Your order number is:" selector="{{StorefrontMessagesSection.success}}" stepKey="seePlaceOrderSuccessMessageAgain"/>
172+
</test>
173+
</tests>

app/code/Magento/Ui/Test/Mftf/Section/ModalConfirmationSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
<section name="ModalConfirmationSection">
1212
<element name="modalContent" type="text" selector="aside.confirm div.modal-content"/>
1313
<element name="CancelButton" type="button" selector="//footer[@class='modal-footer']/button[contains(@class, 'action-dismiss')]"/>
14-
<element name="OkButton" type="button" selector="//footer[@class='modal-footer']/button[contains(@class, 'action-accept')]"/>
14+
<element name="OkButton" type="button" selector="//footer[@class='modal-footer']/button[contains(@class, 'action-accept')]" timeout="30"/>
1515
</section>
1616
</sections>
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="CheckoutPage" url="/checkout" area="storefront" module="Magento_Checkout">
12+
<section name="StorefrontOnePageCheckoutPaymentSection"/>
13+
</page>
14+
</pages>
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+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
11+
<section name="StorefrontOnePageCheckoutPaymentSection">
12+
<element name="saveForLaterUse" type="checkbox" selector="fieldset.payment > div.choice > input[name='vault[is_enabled]']"/>
13+
</section>
14+
</sections>

0 commit comments

Comments
 (0)