diff --git a/dev/tests/functional/composer.json b/dev/tests/functional/composer.json
index cef145167860c8ebad9695d870b6cc73580e47f3..e4a9bd10fa65832e7fdc4ae01f10578056b55a47 100644
--- a/dev/tests/functional/composer.json
+++ b/dev/tests/functional/composer.json
@@ -1,6 +1,6 @@
 {
     "require": {
-        "magento/mtf": "1.0.0-rc48",
+        "magento/mtf": "1.0.0-rc49",
         "php": "~5.6.5|7.0.2|~7.0.6",
         "phpunit/phpunit": "~4.8.0|~5.5.0",
         "phpunit/phpunit-selenium": ">=1.2"
diff --git a/dev/tests/functional/lib/Magento/Mtf/App/State/State1.php b/dev/tests/functional/lib/Magento/Mtf/App/State/State1.php
index 8005f4bff16f7e2315de3b9fcd4fe4ac28b7044a..fbcf0c7c12b9210c5c926679c06562afa439b3da 100644
--- a/dev/tests/functional/lib/Magento/Mtf/App/State/State1.php
+++ b/dev/tests/functional/lib/Magento/Mtf/App/State/State1.php
@@ -25,7 +25,7 @@ class State1 extends AbstractState
      *
      * @var string
      */
-    protected $config ='admin_session_lifetime_1_hour, wysiwyg_disabled, admin_account_sharing_enable';
+    protected $config ='admin_session_lifetime_1_hour, wysiwyg_disabled, admin_account_sharing_enable, log_to_file';
 
     /**
      * @construct
diff --git a/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml
index d4cf5dab742aa37684e8b5ee884bd6164c88426f..d629bcba9e174251a1bc1e4c8fff6cc664911598 100644
--- a/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml
@@ -22,10 +22,6 @@
             <data name="creditCard/dataset" xsi:type="string">visa_authorizenet</data>
             <data name="configData" xsi:type="string">authorizenet</data>
             <data name="status" xsi:type="string">Processing</data>
-            <data name="transactionDetails" xsi:type="array">
-                <item name="isClosed" xsi:type="string">No</item>
-                <item name="transactionType" xsi:type="string">Authorization</item>
-            </data>
             <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
             <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
             <constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml b/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml
index fcf6e2ac0c4d0ece60aa742dfcb438456a0d9bd5..9274985a74edfa1ccfb7709ee979486733e8fe1b 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Repository/ConfigData.xml
@@ -150,6 +150,15 @@
             </field>
         </dataset>
 
+        <dataset name="log_to_file">
+            <field name="dev/debug/debug_logging" xsi:type="array">
+                <item name="scope" xsi:type="string">default</item>
+                <item name="scope_id" xsi:type="number">0</item>
+                <item name="label" xsi:type="string">Yes</item>
+                <item name="value" xsi:type="number">1</item>
+            </field>
+        </dataset>
+
         <dataset name="enable_https_frontend_admin">
             <field name="web/secure/use_in_frontend" xsi:type="array">
                 <item name="scope" xsi:type="string">default</item>
@@ -164,6 +173,22 @@
                 <item name="value" xsi:type="number">1</item>
             </field>
         </dataset>
+
+        <dataset name="enable_https_frontend_admin_rollback">
+            <field name="web/secure/use_in_frontend" xsi:type="array">
+                <item name="scope" xsi:type="string">default</item>
+                <item name="scope_id" xsi:type="number">0</item>
+                <item name="label" xsi:type="string">No</item>
+                <item name="value" xsi:type="number">0</item>
+            </field>
+            <field name="web/secure/use_in_adminhtml" xsi:type="array">
+                <item name="scope" xsi:type="string">default</item>
+                <item name="scope_id" xsi:type="number">0</item>
+                <item name="label" xsi:type="string">No</item>
+                <item name="value" xsi:type="number">0</item>
+            </field>
+        </dataset>
+
         <dataset name="enable_hsts">
             <field name="web/secure/enable_hsts" xsi:type="array">
                 <item name="scope" xsi:type="string">default</item>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml
index 1e9c539c8c0d379d6e5b69929e9270b21a8cc593..920047e7037e135115424a192b9c9cb3267982d5 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutTest.xml
@@ -23,6 +23,7 @@
             <data name="payment/method" xsi:type="string">braintree</data>
             <data name="creditCardClass" xsi:type="string">credit_card_braintree</data>
             <data name="creditCard/dataset" xsi:type="string">visa_braintree_3dsecure</data>
+            <data name="isVaultEnabled" xsi:type="boolean">false</data>
             <data name="configData" xsi:type="string">braintree, braintree_3d_secure_not_triggered_due_threshold</data>
             <data name="status" xsi:type="string">Processing</data>
             <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
@@ -46,6 +47,7 @@
             <data name="payment/method" xsi:type="string">braintree</data>
             <data name="creditCardClass" xsi:type="string">credit_card_braintree</data>
             <data name="creditCard/dataset" xsi:type="string">visa_braintree_3dsecure</data>
+            <data name="isVaultEnabled" xsi:type="boolean">false</data>
             <data name="configData" xsi:type="string">braintree, braintree_3d_secure_uk</data>
             <data name="status" xsi:type="string">Processing</data>
             <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
@@ -69,6 +71,7 @@
             <data name="payment/method" xsi:type="string">braintree</data>
             <data name="creditCardClass" xsi:type="string">credit_card_braintree</data>
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
+            <data name="isVaultEnabled" xsi:type="boolean">false</data>
             <data name="configData" xsi:type="string">braintree</data>
             <data name="status" xsi:type="string">Processing</data>
             <data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S0</data>
@@ -96,6 +99,7 @@
             <data name="payment/method" xsi:type="string">braintree</data>
             <data name="creditCardClass" xsi:type="string">credit_card_braintree</data>
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
+            <data name="isVaultEnabled" xsi:type="boolean">false</data>
             <data name="configData" xsi:type="string">braintree, braintree_sale</data>
             <data name="status" xsi:type="string">Processing</data>
             <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml
index 495f455c43a72f4d61029a07a8633fc09744c2f0..12aa92d35064d457cef4a544daace01314723d99 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml
@@ -106,8 +106,8 @@
         <step name="selectPaymentMethod" module="Magento_Checkout" next="fillBillingInformation" />
         <step name="fillBillingInformation" module="Magento_Checkout" next="placeOrderWithPaypal" />
         <step name="placeOrderWithPaypal" module="Magento_Braintree" next="createInvoice" />
-        <step name="createInvoice" module="Magento_Sales" next="createBraintreeCreditMemo" />
-        <step name="createBraintreeCreditMemo" module="Magento_Braintree" />
+        <step name="createInvoice" module="Magento_Sales" next="createOnlineCreditMemo" />
+        <step name="createOnlineCreditMemo" module="Magento_Sales" />
     </scenario>
     <scenario name="SaveUseDeleteVaultForPaypalBraintreeTest" firstStep="setupConfiguration">
         <step name="setupConfiguration" module="Magento_Config" next="createProducts" />
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Payment/Method.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Payment/Method.php
index 55351dbe5fd5eb5105843dfba1311d4d1cb2c029..64afdf5486068736758ac1311fe96fb748e19d46 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Payment/Method.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Payment/Method.php
@@ -35,13 +35,6 @@ class Method extends Block
      */
     protected $billingAddressSelector = '.payment-method-billing-address';
 
-    /**
-     * Save credit card check box.
-     *
-     * @var string
-     */
-    protected $vaultCheckbox = '#%s_enable_vault';
-
     /**
      * PayPal load spinner.
      *
@@ -137,17 +130,4 @@ class Method extends Block
             ['element' => $element]
         );
     }
-
-    /**
-     * Save credit card.
-     *
-     * @param string $paymentMethod
-     * @param string $creditCardSave
-     * @return void
-     */
-    public function saveCreditCard($paymentMethod, $creditCardSave)
-    {
-        $saveCard = sprintf($this->vaultCheckbox, $paymentMethod);
-        $this->_rootElement->find($saveCard, Locator::SELECTOR_CSS, 'checkbox')->setValue($creditCardSave);
-    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml
index 6dc1b3b0c67edc232caa1932116908af3745ad94..2f20c20f6e87f2f0df2f8e4991d4d3d5a0b26970 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml
@@ -5,10 +5,16 @@
  * See COPYING.txt for license details.
  */
  -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
-  <type name="Magento\Checkout\Test\Constraint\AssertCartIsEmpty">
-    <arguments>
-      <argument name="severity" xsi:type="string">middle</argument>
-    </arguments>
-  </type>
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
+    <type name="Magento\Checkout\Test\Constraint\AssertCartIsEmpty">
+        <arguments>
+            <argument name="severity" xsi:type="string">middle</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Config/Test/TestStep/SetupConfigurationStep.php b/dev/tests/functional/tests/app/Magento/Config/Test/TestStep/SetupConfigurationStep.php
index a69117609450912fa1af6e2acdb9a9234c7f01b5..2441f175feef040ef83e6a35a84048957f6675aa 100644
--- a/dev/tests/functional/tests/app/Magento/Config/Test/TestStep/SetupConfigurationStep.php
+++ b/dev/tests/functional/tests/app/Magento/Config/Test/TestStep/SetupConfigurationStep.php
@@ -8,6 +8,7 @@ namespace Magento\Config\Test\TestStep;
 
 use Magento\Mtf\Fixture\FixtureFactory;
 use Magento\Mtf\TestStep\TestStepInterface;
+use Magento\Mtf\Util\Command\Cli\Cache;
 use Magento\PageCache\Test\Page\Adminhtml\AdminCache;
 
 /**
@@ -50,12 +51,20 @@ class SetupConfigurationStep implements TestStepInterface
      */
     protected $flushCache;
 
+    /**
+     * Cli command to do operations with cache.
+     *
+     * @var Cache
+     */
+    private $cache;
+
     /**
      * Preparing step properties.
      *
      * @constructor
      * @param FixtureFactory $fixtureFactory
      * @param AdminCache $adminCache
+     * @param Cache $cache
      * @param string $configData
      * @param bool $rollback
      * @param bool $flushCache
@@ -63,6 +72,7 @@ class SetupConfigurationStep implements TestStepInterface
     public function __construct(
         FixtureFactory $fixtureFactory,
         AdminCache $adminCache,
+        Cache $cache,
         $configData = null,
         $rollback = false,
         $flushCache = false
@@ -72,6 +82,7 @@ class SetupConfigurationStep implements TestStepInterface
         $this->configData = $configData;
         $this->rollback = $rollback;
         $this->flushCache = $flushCache;
+        $this->cache = $cache;
     }
 
     /**
@@ -95,13 +106,11 @@ class SetupConfigurationStep implements TestStepInterface
                 $config->persist();
                 $result[] = $config;
             }
+            if ($this->flushCache) {
+                $this->cache->flush();
+            }
         }
-        
-        if ($this->flushCache) {
-            $this->adminCache->open();
-            $this->adminCache->getActionsBlock()->flushMagentoCache();
-            $this->adminCache->getMessagesBlock()->waitSuccessMessage();
-        }
+
 
         return ['config' => $result];
     }
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/OnePageCheckoutTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f6ac4ac4f0a3c4591c12de7215600010c5fb857c
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/OnePageCheckoutTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="Guest Checkout with PayPal Payflow Pro credit card">
+        <variation name="OnePageCheckoutPayflowProVariation1" summary="Guest Checkout with PayPal Payflow Pro credit card" ticketId="MAGETWO-60583">
+            <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
+            <data name="customer/dataset" xsi:type="string">default</data>
+            <data name="shippingAddress/dataset" xsi:type="string">US_address_1</data>
+            <data name="taxRule" xsi:type="string">us_ca_ny_rule</data>
+            <data name="checkoutMethod" xsi:type="string">guest</data>
+            <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
+            <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
+            <data name="payment/method" xsi:type="string">payflowpro</data>
+            <data name="prices" xsi:type="array">
+                <item name="grandTotal" xsi:type="string">15.83</item>
+            </data>
+            <data name="creditCardClass" xsi:type="string">credit_card</data>
+            <data name="creditCard/dataset" xsi:type="string">visa_default</data>
+            <data name="isVaultEnabled" xsi:type="boolean">false</data>
+            <data name="configData" xsi:type="string">payflowpro</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S1</data>
+            <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php
index 398553b2abd3c3da0691a9c26890ce2c5ef19c80..beb4d2219a68b17bc7507c1648a69764f0efe256 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Actions.php
@@ -178,10 +178,7 @@ class Actions extends Block
     public function cancel()
     {
         $this->_rootElement->find($this->cancel)->click();
-        $element = $this->browser->find($this->confirmModal);
-        /** @var \Magento\Ui\Test\Block\Adminhtml\Modal $modal */
-        $modal = $this->blockFactory->create(\Magento\Ui\Test\Block\Adminhtml\Modal::class, ['element' => $element]);
-        $modal->acceptAlert();
+        $this->acceptAlert();
     }
 
     /**
@@ -202,6 +199,7 @@ class Actions extends Block
     public function void()
     {
         $this->_rootElement->find($this->void)->click();
+        $this->acceptAlert();
     }
 
     /**
@@ -266,27 +264,36 @@ class Actions extends Block
     }
 
     /**
-     * Accept order
+     * Accept order.
+     *
      * @return void
      */
     public function accept()
     {
         $acceptPayment = '#accept_payment';
         $this->_rootElement->find($acceptPayment)->click();
-        $element = $this->browser->find($this->confirmModal);
-        /** @var Modal $modal */
-        $modal = $this->blockFactory->create(Modal::class, ['element' => $element]);
-        $modal->acceptAlert();
+        $this->acceptAlert();
     }
 
     /**
-     * Deny order
+     * Deny order.
+     *
      * @return void
      */
     public function deny()
     {
         $denyPayment = '#deny_payment';
         $this->_rootElement->find($denyPayment)->click();
+        $this->acceptAlert();
+    }
+
+    /**
+     * Accept alert.
+     *
+     * @return void
+     */
+    private function acceptAlert()
+    {
         $element = $this->browser->find($this->confirmModal);
         /** @var Modal $modal */
         $modal = $this->blockFactory->create(Modal::class, ['element' => $element]);
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php
index 740f8f03fe6394a18ceed667a0ba695262229cf2..8ae8bbb31584ef6ab7859b1c08ac62eb09f52016 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/History.php
@@ -56,6 +56,13 @@ class History extends Block
      */
     protected $refundedAmount = '//div[@class="note-list-comment"][contains(text(), "We refunded")]';
 
+    /**
+     * Voided Amount.
+     *
+     * @var string
+     */
+    protected $voidedAmount = '//div[@class="note-list-comment"][contains(text(), "Voided authorization")]';
+
     /**
      * Note list locator.
      *
@@ -117,6 +124,17 @@ class History extends Block
         return $result;
     }
 
+    /**
+     * Get the voided amount from the comments history.
+     *
+     * @return string
+     */
+    public function getVoidedAmount()
+    {
+        $this->waitCommentsHistory();
+        return $this->_rootElement->find($this->voidedAmount, Locator::SELECTOR_XPATH)->getText();
+    }
+
     /**
      * Gets the status which presented in comment
      *
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Transactions.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Transactions.php
index 80309405fcd05e9206e5732c1f6c3e4eb973c620..64e449c805b2807844c88bfa36a821b20adcfd04 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Transactions.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/View/Tab/Transactions.php
@@ -8,7 +8,7 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order\View\Tab;
 
 use Magento\Backend\Test\Block\Widget\Tab;
 use Magento\Mtf\Client\Locator;
-use Magento\Sales\Test\Block\Adminhtml\Order\View\Tab\Shipments\Grid;
+use Magento\Sales\Test\Block\Adminhtml\Order\View\Tab\Transactions\Grid;
 
 /**
  * Transactions tab.
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertOrderSuccessVoidedMessage.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertOrderSuccessVoidedMessage.php
new file mode 100644
index 0000000000000000000000000000000000000000..05a4934015611996694b5a506edc39c8994c545c
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertOrderSuccessVoidedMessage.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Sales\Test\Constraint;
+
+use Magento\Sales\Test\Page\Adminhtml\OrderStatusIndex;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert that success message about order void is present.
+ */
+class AssertOrderSuccessVoidedMessage extends AbstractConstraint
+{
+    /* tags */
+    const SEVERITY = 'low';
+    /* end tags */
+
+    /**
+     * Message about successful void.
+     */
+    const SUCCESS_MESSAGE = 'The payment has been voided.';
+
+    /**
+     * Assert that success message is displayed after order is voided.
+     *
+     * @param OrderStatusIndex $orderStatusIndexPage
+     * @return void
+     */
+    public function processAssert(OrderStatusIndex $orderStatusIndexPage)
+    {
+        $actualMessage = $orderStatusIndexPage->getMessagesBlock()->getSuccessMessage();
+        \PHPUnit_Framework_Assert::assertEquals(
+            self::SUCCESS_MESSAGE,
+            $actualMessage,
+            'Wrong success message is displayed.'
+            . "\nExpected: " . self::SUCCESS_MESSAGE
+            . "\nActual: " . $actualMessage
+        );
+    }
+
+    /**
+     * Text of voided order message assert.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Order successful void message is present.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertTransactionStatus.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertTransactionStatus.php
new file mode 100644
index 0000000000000000000000000000000000000000..fb975ae4bd1c6bfdc8f5ce3fea9f094f1e4e45e4
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertTransactionStatus.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Sales\Test\Constraint;
+
+use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
+use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert that transactions status is closed on order page in Admin.
+ */
+class AssertTransactionStatus extends AbstractConstraint
+{
+    /**
+     * Assert that transactions status is closed on order page in Admin.
+     *
+     * @param OrderIndex $salesOrder
+     * @param SalesOrderView $salesOrderView
+     * @param array $transactions
+     * @param string $orderId
+     * @return void
+     */
+    public function processAssert(
+        OrderIndex $salesOrder,
+        SalesOrderView $salesOrderView,
+        array $transactions,
+        $orderId
+    ) {
+        $salesOrder->open();
+        $salesOrder->getSalesOrderGrid()->searchAndOpen(['id' => $orderId]);
+        $salesOrderView->getOrderForm()->openTab('transactions');
+        $actualTransactions = $salesOrderView->getOrderForm()->getTab('transactions')->getGridBlock()->getIds();
+
+        foreach ($transactions as $transaction) {
+            foreach ($actualTransactions as $actualTransaction) {
+                if ($actualTransaction['transactionType'] === $transaction['transactionType']) {
+                    \PHPUnit_Framework_Assert::assertEquals(
+                        $transaction['statusIsClosed'],
+                        $actualTransaction['statusIsClosed'],
+                        'The ' . $transaction['transactionType'] . ' transaction status is not closed.'
+                    );
+                    break;
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Transactions status is closed.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertVoidInCommentsHistory.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertVoidInCommentsHistory.php
new file mode 100644
index 0000000000000000000000000000000000000000..bc3e90ee7f776c74fa8b55fb95be6ac19d49ffca
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertVoidInCommentsHistory.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Sales\Test\Constraint;
+
+use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
+use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert that comment about voided amount exists in Comments History section on order page in Admin.
+ */
+class AssertVoidInCommentsHistory extends AbstractConstraint
+{
+    /**
+     * Message about voided amount in order.
+     */
+    const VOIDED_AMOUNT = 'Voided authorization. Amount: $';
+
+    /**
+     * Assert that comment about voided amount exist in Comments History section on order page in Admin.
+     *
+     * @param SalesOrderView $salesOrderView
+     * @param OrderIndex $salesOrder
+     * @param string $orderId
+     * @param array $prices
+     * @return void
+     */
+    public function processAssert(
+        SalesOrderView $salesOrderView,
+        OrderIndex $salesOrder,
+        $orderId,
+        array $prices
+    ) {
+        $salesOrder->open();
+        $salesOrder->getSalesOrderGrid()->searchAndOpen(['id' => $orderId]);
+
+        \PHPUnit_Framework_Assert::assertContains(
+            self::VOIDED_AMOUNT . $prices['grandTotal'],
+            $salesOrderView->getOrderHistoryBlock()->getVoidedAmount(),
+            'Incorrect voided amount value for the order #' . $orderId
+        );
+    }
+
+    /**
+     * Returns string representation of successful assertion.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return "Message about voided amount is available in Comments History section.";
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOnlineInvoiceEntityTest.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOnlineInvoiceEntityTest.php
index c3b00b4b7f7942176300450faf9a0b42c956942b..393085f7d7a87c9fb491259bbd55ecbb6a9330e5 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOnlineInvoiceEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOnlineInvoiceEntityTest.php
@@ -40,6 +40,7 @@ class CreateOnlineInvoiceEntityTest extends Scenario
     /* tags */
     const MVP = 'yes';
     const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/VoidAuthorizationTest.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/VoidAuthorizationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..fecf2eed85160415ac6fbb81b6c5261d7d451168
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/VoidAuthorizationTest.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Sales\Test\TestCase;
+
+use Magento\Mtf\TestCase\Scenario;
+
+/**
+ * Preconditions:
+ * 1. Configure shipping method.
+ * 2. Configure payment method.
+ * 3. Create products.
+ *
+ * Steps:
+ * 1. Go to Storefront.
+ * 2. Add products to the cart.
+ * 3. Click the 'Proceed to Checkout' button.
+ * 4. Select checkout method according to dataset.
+ * 5. Fill billing information and select the 'Ship to this address' option.
+ * 6. Select shipping method.
+ * 7. Select payment method.
+ * 8. Place order.
+ * 9. Open created order.
+ * 10. Click 'Void' button.
+ * 11. Perform assertions.
+ *
+ * @group Order_Management
+ * @ZephyrId MAGETWO-39444
+ */
+class VoidAuthorizationTest extends Scenario
+{
+    /* tags */
+    const MVP = 'yes';
+    const TEST_TYPE = '3rd_party_test';
+    const SEVERITY = 'S0';
+    /* end tags */
+
+    /**
+     * Void order authorization.
+     *
+     * @return void
+     */
+    public function test()
+    {
+        $this->executeScenario();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/CreateBraintreeCreditMemoStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php
similarity index 93%
rename from dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/CreateBraintreeCreditMemoStep.php
rename to dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php
index 085fc142a33736e1aec9fb2cc1a0771e37ffd34e..84491c1992e5d682c59a1848516fcf084ce42507 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/CreateBraintreeCreditMemoStep.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/CreateOnlineCreditMemoStep.php
@@ -4,9 +4,8 @@
  * See COPYING.txt for license details.
  */
 
-namespace Magento\Braintree\Test\TestStep;
+namespace Magento\Sales\Test\TestStep;
 
-use Magento\Mtf\ObjectManager;
 use Magento\Mtf\TestStep\TestStepInterface;
 use Magento\Sales\Test\Fixture\OrderInjectable;
 use Magento\Sales\Test\Page\Adminhtml\OrderCreditMemoNew;
@@ -15,9 +14,9 @@ use Magento\Sales\Test\Page\Adminhtml\OrderInvoiceView;
 use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
 
 /**
- * Create credit memo for order placed via Braintree credit card payment method.
+ * Create credit memo for order placed using online payment methods.
  */
-class CreateBraintreeCreditMemoStep implements TestStepInterface
+class CreateOnlineCreditMemoStep implements TestStepInterface
 {
     /**
      * Orders Page.
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
index fa37c94be3cdda2b7814a2dab3d11b0a4272dc04..0a82770fab38bbe574b77b0bb4e08eadbdc01a3f 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/SubmitOrderStep.php
@@ -23,21 +23,42 @@ class SubmitOrderStep implements TestStepInterface
      *
      * @var OrderCreateIndex
      */
-    protected $orderCreateIndex;
+    private $orderCreateIndex;
 
     /**
      * Sales order view.
      *
      * @var SalesOrderView
      */
-    protected $salesOrderView;
+    private $salesOrderView;
 
     /**
      * Factory for fixtures.
      *
      * @var FixtureFactory
      */
-    protected $fixtureFactory;
+    private $fixtureFactory;
+
+    /**
+     * Customer fixture.
+     *
+     * @var Customer
+     */
+    private $customer;
+
+    /**
+     * Billing Address fixture.
+     *
+     * @var Address
+     */
+    private $billingAddress;
+
+    /**
+     * Products fixtures.
+     *
+     * @var array|\Magento\Mtf\Fixture\FixtureInterface[]
+     */
+    private $products;
 
     /**
      * @constructor
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/VoidAuthorizationStep.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/VoidAuthorizationStep.php
new file mode 100644
index 0000000000000000000000000000000000000000..6897233c7242cf3a2289a93111912c6021a99f2d
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestStep/VoidAuthorizationStep.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Sales\Test\TestStep;
+
+use Magento\Sales\Test\Fixture\OrderInjectable;
+use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
+use Magento\Mtf\TestStep\TestStepInterface;
+use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
+
+/**
+ * Void authorization for created order.
+ */
+class VoidAuthorizationStep implements TestStepInterface
+{
+    /**
+     * Sales order index page.
+     *
+     * @var OrderIndex
+     */
+    protected $orderIndex;
+
+    /**
+     * Order instance.
+     *
+     * @var OrderInjectable
+     */
+    protected $order;
+
+    /**
+     * Order view page.
+     *
+     * @var SalesOrderView
+     */
+    private $salesOrderView;
+
+    /**
+     * @param OrderInjectable $order
+     * @param OrderIndex $orderIndex
+     * @param SalesOrderView $salesOrderView
+     */
+    public function __construct(OrderInjectable $order, OrderIndex $orderIndex, SalesOrderView $salesOrderView)
+    {
+        $this->orderIndex = $orderIndex;
+        $this->order = $order;
+        $this->salesOrderView = $salesOrderView;
+    }
+
+    /**
+     * Void authorization.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        $this->orderIndex->open();
+        $this->orderIndex->getSalesOrderGrid()->searchAndOpen(['id' => $this->order->getId()]);
+        $this->salesOrderView->getPageActions()->void();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/etc/di.xml
index ea687be19d3c34b0eeb5093690e54243731543ff..f42c97e1a6614a927da685f9cd5e1f8c84ff0c32 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/etc/di.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/etc/di.xml
@@ -8,32 +8,82 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <type name="Magento\Sales\Test\Constraint\AssertOrderStatusInGrid">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S0</argument>
         </arguments>
     </type>
     <type name="Magento\Sales\Test\Constraint\AssertOrderStatusDuplicateStatus">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S0</argument>
         </arguments>
     </type>
     <type name="Magento\Sales\Test\Constraint\AssertOrderCancelSuccessMessage">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S0</argument>
         </arguments>
     </type>
     <type name="Magento\Sales\Test\Constraint\AssertOrderMassOnHoldSuccessMessage">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S0</argument>
         </arguments>
     </type>
     <type name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
         </arguments>
     </type>
     <type name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory">
         <arguments>
-            <argument name="severity" xsi:type="string">high</argument>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertVoidInCommentsHistory">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertRefundSuccessCreateMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertOrderSuccessVoidedMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertRefundInCreditMemoTab">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertRefundInCommentsHistory">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertInvoiceSuccessCreateMessage">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertInvoiceItems">
+        <arguments>
+            <argument name="severity" xsi:type="string">S1</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertTransactionStatus">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect">
+        <arguments>
+            <argument name="severity" xsi:type="string">S0</argument>
         </arguments>
     </type>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml
index eebdf2128dc70e8dc90a0867040e1e3682462768..030b0f4f32df0eacd76c99cbe55537df1c734cf5 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/etc/testcase.xml
@@ -35,6 +35,22 @@
         <step name="selectPaymentMethodForOrder" module="Magento_Sales" next="submitOrder" />
         <step name="submitOrder" module="Magento_Sales" />
     </scenario>
+    <scenario name="VoidAuthorizationTest" firstStep="setupConfiguration">
+        <step name="setupConfiguration" module="Magento_Config" next="createProducts" />
+        <step name="createProducts" module="Magento_Catalog" next="createTaxRule" />
+        <step name="createTaxRule" module="Magento_Tax" next="addProductsToTheCart" />
+        <step name="addProductsToTheCart" module="Magento_Checkout" next="estimateShippingAndTax" />
+        <step name="estimateShippingAndTax" module="Magento_Checkout" next="clickProceedToCheckout" />
+        <step name="clickProceedToCheckout" module="Magento_Checkout" next="createCustomer" />
+        <step name="createCustomer" module="Magento_Customer" next="selectCheckoutMethod" />
+        <step name="selectCheckoutMethod" module="Magento_Checkout" next="fillShippingAddress" />
+        <step name="fillShippingAddress" module="Magento_Checkout" next="fillShippingMethod" />
+        <step name="fillShippingMethod" module="Magento_Checkout" next="selectPaymentMethod" />
+        <step name="selectPaymentMethod" module="Magento_Checkout" next="fillBillingInformation" />
+        <step name="fillBillingInformation" module="Magento_Checkout" next="placeOrder" />
+        <step name="placeOrder" module="Magento_Checkout" next="voidAuthorization" />
+        <step name="voidAuthorization" module="Magento_Sales" />
+    </scenario>
     <scenario name="PrintOrderFrontendGuestTest" firstStep="createProducts">
         <step name="createProducts" module="Magento_Catalog" next="createCustomer" />
         <step name="createCustomer" module="Magento_Customer" next="openSalesOrders" />
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/Block/Onepage/Payment/Method/Vault.php b/dev/tests/functional/tests/app/Magento/Vault/Test/Block/Onepage/Payment/Method/Vault.php
new file mode 100644
index 0000000000000000000000000000000000000000..c416381a0b2137ec0273a6e1b1b14ea93a80a2c1
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/Block/Onepage/Payment/Method/Vault.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Vault\Test\Block\Onepage\Payment\Method;
+
+use Magento\Mtf\Client\Locator;
+use Magento\Checkout\Test\Block\Onepage\Payment\Method;
+
+/**
+ * Checkout payment method vault block.
+ */
+class Vault extends Method
+{
+    /**
+     * Credit card selector.
+     *
+     * @var string
+     */
+    private $creditCardSelector = './/*[contains(@for, "_vault_item")]/span[text()="%s"]';
+
+    /**
+     * Save credit card check box.
+     *
+     * @var string
+     */
+    protected $vaultCheckbox = '#%s_enable_vault';
+
+    /**
+     * Save credit card.
+     *
+     * @param string $paymentMethod
+     * @param string $creditCardSave
+     * @return void
+     */
+    public function saveCreditCard($paymentMethod, $creditCardSave)
+    {
+        $saveCard = sprintf($this->vaultCheckbox, $paymentMethod);
+        $this->_rootElement->find($saveCard, Locator::SELECTOR_CSS, 'checkbox')->setValue($creditCardSave);
+    }
+
+    /**
+     * Check if Save credit card check box is visible.
+     *
+     * @param string $paymentMethod
+     * @return bool
+     */
+    public function isVaultVisible($paymentMethod)
+    {
+        $saveCard = sprintf($this->vaultCheckbox, $paymentMethod);
+        return $this->_rootElement->find($saveCard, Locator::SELECTOR_CSS, 'checkbox')->isVisible();
+    }
+
+    /**
+     * Verify if saved credit card is present as a payment option.
+     *
+     * @param string $creditCard
+     * @return bool
+     */
+    public function isSavedCreditCardPresent($creditCard)
+    {
+        $paymentLabelSelector = sprintf($this->creditCardSelector, $creditCard);
+        return $this->_rootElement->find($paymentLabelSelector, Locator::SELECTOR_XPATH)->isVisible();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/Block/VaultPayment.php b/dev/tests/functional/tests/app/Magento/Vault/Test/Block/VaultPayment.php
deleted file mode 100644
index 2afa11baee329097bb2c3847c64a73b853a9a226..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/Block/VaultPayment.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Vault\Test\Block;
-
-use Magento\Mtf\Block\Block;
-use Magento\Mtf\Client\ElementInterface;
-use Magento\Mtf\Client\Locator;
-use Magento\Mtf\Fixture\InjectableFixture;
-
-class VaultPayment extends Block
-{
-    /**
-     * Credit card selector.
-     */
-    private $creditCardSelector = './/*[contains(@for, "_vault_item")]/span[text()="%s"]';
-
-    /**
-     * Verify if saved credit card is present as a payment option.
-     *
-     * @param string $creditCard
-     * @return bool
-     */
-    public function isSavedCreditCardPresent($creditCard)
-    {
-        $paymentLabelSelector = sprintf($this->creditCardSelector, $creditCard);
-        return $this->browser->find($paymentLabelSelector, Locator::SELECTOR_XPATH)->isVisible();
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/Constraint/AssertSaveCreditCardOptionNotPresent.php b/dev/tests/functional/tests/app/Magento/Vault/Test/Constraint/AssertSaveCreditCardOptionNotPresent.php
new file mode 100644
index 0000000000000000000000000000000000000000..dbe14c977c2d4988d017b50422e4c10bf5f4aec5
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/Constraint/AssertSaveCreditCardOptionNotPresent.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Vault\Test\Constraint;
+
+use Magento\Checkout\Test\Page\CheckoutOnepage;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert that 'Save for later use' checkbox is not present in credit card form.
+ */
+class AssertSaveCreditCardOptionNotPresent extends AbstractConstraint
+{
+    /**
+     * Assert that 'Save for later use' checkbox is not present in credit card form.
+     *
+     * @param CheckoutOnepage $checkoutOnepage
+     * @param string $payment
+     * @return void
+     */
+    public function processAssert(CheckoutOnepage $checkoutOnepage, $payment)
+    {
+        \PHPUnit_Framework_Assert::assertFalse(
+            $checkoutOnepage->getVaultPaymentBlock()->isVaultVisible($payment),
+            'Save for later use checkbox is present.'
+        );
+    }
+
+    /**
+     * Returns string representation of successful assertion.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Save for later use checkbox is not present in credit card form.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/Page/CheckoutOnepage.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/Page/CheckoutOnepage.xml
index 9568a88096186d25a17916de4d24ceb2fe9a5612..fd1412e15649f6db9302e5bc23ea4474334ea384 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/Page/CheckoutOnepage.xml
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/Page/CheckoutOnepage.xml
@@ -7,6 +7,6 @@
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/pages.xsd">
     <page name="CheckoutOnepage" mca="checkout" module="Magento_Checkout">
-        <block name="vaultPaymentBlock" class="Magento\Vault\Test\Block\VaultPayment" locator="#checkout-step-payment" strategy="css selector" />
+        <block name="vaultPaymentBlock" class="Magento\Vault\Test\Block\Onepage\Payment\Method\Vault" locator="#checkout-step-payment" strategy="css selector" />
     </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/CheckSaveCreditCardOptionStep.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/CheckSaveCreditCardOptionStep.php
new file mode 100644
index 0000000000000000000000000000000000000000..b0f33872103f27ffe00e2b1323574fa0fdc6b88a
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/CheckSaveCreditCardOptionStep.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Vault\Test\TestStep;
+
+use Magento\Checkout\Test\Page\CheckoutOnepage;
+use Magento\Mtf\TestStep\TestStepInterface;
+use Magento\Vault\Test\Constraint\AssertSaveCreditCardOptionNotPresent;
+
+/**
+ * Check if customer cannot save credit card for later use if vault is disabled.
+ */
+class CheckSaveCreditCardOptionStep implements TestStepInterface
+{
+    /**
+     * Onepage checkout page.
+     *
+     * @var CheckoutOnepage
+     */
+    private $checkoutOnepage;
+
+    /**
+     * Assert that 'Save for later use' checkbox is not present in credit card form.
+     *
+     * @var AssertSaveCreditCardOptionNotPresent
+     */
+    private $assertSaveCreditCardOptionNotPresent;
+
+    /**
+     * Payment method.
+     *
+     * @var array
+     */
+    private $payment;
+
+    /**
+     * If vault is enabled for payment method.
+     *
+     * @var null|bool
+     */
+    private $isVaultEnabled;
+
+    /**
+     * @param CheckoutOnepage $checkoutOnepage
+     * @param AssertSaveCreditCardOptionNotPresent $assertSaveCreditCardOptionNotPresent
+     * @param array $payment
+     * @param null|bool $isVaultEnabled
+     */
+    public function __construct(
+        CheckoutOnepage $checkoutOnepage,
+        AssertSaveCreditCardOptionNotPresent $assertSaveCreditCardOptionNotPresent,
+        array $payment,
+        $isVaultEnabled = null
+    ) {
+        $this->checkoutOnepage = $checkoutOnepage;
+        $this->assertSaveCreditCardOptionNotPresent = $assertSaveCreditCardOptionNotPresent;
+        $this->payment = $payment;
+        $this->isVaultEnabled = $isVaultEnabled;
+    }
+
+    /**
+     * Run step that verifies if 'Save for later use' checkbox is not present in credit card form.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        if ($this->isVaultEnabled === false) {
+            $this->assertSaveCreditCardOptionNotPresent->processAssert(
+                $this->checkoutOnepage,
+                $this->payment['method']
+            );
+        }
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/SaveCreditCardStep.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/SaveCreditCardStep.php
index 0f06f5f636bdc14dcdb1c3b300c2fd4c6f5186eb..63fe8c2401336eef268f89f226e1ec484a54ffd9 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/SaveCreditCardStep.php
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/SaveCreditCardStep.php
@@ -57,7 +57,7 @@ class SaveCreditCardStep implements TestStepInterface
      */
     public function run()
     {
-        $this->checkoutOnepage->getPaymentBlock()->getSelectedPaymentMethodBlock()->saveCreditCard(
+        $this->checkoutOnepage->getVaultPaymentBlock()->saveCreditCard(
             $this->payment['method'],
             $this->creditCardSave
         );
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/etc/testcase.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/etc/testcase.xml
index cd34b9664820892b4275c93e7b7e43afaaf2f1e4..6289a8392ee7544777959e8afffe9fd999388713 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/etc/testcase.xml
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/etc/testcase.xml
@@ -64,4 +64,7 @@
         <step name="useVaultPaymentToken" module="Magento_Vault" next="submitOrder" />
         <step name="submitOrder" module="Magento_Sales" />
     </scenario>
+    <scenario name="OnePageCheckoutTest">
+        <step name="checkSaveCreditCardOption" module="Magento_Vault" prev="selectPaymentMethod" next="placeOrder" />
+    </scenario>
 </config>