diff --git a/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php b/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php
index df98969c262cea0b631504f57abd1353c4ab26d3..dfbaf3a62420ae7bd225f9d0df9e27f73f530910 100644
--- a/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php
+++ b/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php
@@ -689,7 +689,7 @@ class Toolbar extends \Magento\Framework\View\Element\Template
             'limit' => ToolbarModel::LIMIT_PARAM_NAME,
             'modeDefault' => $defaultMode,
             'directionDefault' => $this->_direction ?: ProductList::DEFAULT_SORT_DIRECTION,
-            'orderDefault' => $this->_productListHelper->getDefaultSortField(),
+            'orderDefault' => $this->getOrderField(),
             'limitDefault' => $this->_productListHelper->getDefaultLimitPerPageValue($defaultMode),
             'url' => $this->getPagerUrl(),
         ];
diff --git a/app/code/Magento/Catalog/Model/Category.php b/app/code/Magento/Catalog/Model/Category.php
index 571e4646f46a3d575eab73799a5be7c9dc3bd065..2002722684431cd63b392a7fb7480c30ff3188c3 100644
--- a/app/code/Magento/Catalog/Model/Category.php
+++ b/app/code/Magento/Catalog/Model/Category.php
@@ -943,8 +943,11 @@ class Category extends \Magento\Catalog\Model\AbstractModel implements
      */
     public function getProductCount()
     {
-        $count = $this->_getResource()->getProductCount($this);
-        $this->setData(self::KEY_PRODUCT_COUNT, $count);
+        if (!$this->hasData(self::KEY_PRODUCT_COUNT)) {
+            $count = $this->_getResource()->getProductCount($this);
+            $this->setData(self::KEY_PRODUCT_COUNT, $count);
+        }
+
         return $this->getData(self::KEY_PRODUCT_COUNT);
     }
 
diff --git a/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php b/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php
index c7ddb14a7649de19dadd57c25e4f4111e1992585..78fe3042b5f71661f2c77b5bed52d598f2e50586 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php
@@ -8,9 +8,14 @@
 
 namespace Magento\Catalog\Model\Indexer\Category\Product;
 
-use Magento\Framework\DB\Query\Generator as QueryGenerator;
+use Magento\Catalog\Api\Data\ProductInterface;
+use Magento\Catalog\Model\Product;
+use Magento\Framework\App\ObjectManager;
 use Magento\Framework\App\ResourceConnection;
+use Magento\Framework\DB\Query\Generator as QueryGenerator;
+use Magento\Framework\DB\Select;
 use Magento\Framework\EntityManager\MetadataPool;
+use Magento\Store\Model\Store;
 
 /**
  * Class AbstractAction
@@ -45,21 +50,21 @@ abstract class AbstractAction
     /**
      * Cached non anchor categories select by store id
      *
-     * @var \Magento\Framework\DB\Select[]
+     * @var Select[]
      */
     protected $nonAnchorSelects = [];
 
     /**
      * Cached anchor categories select by store id
      *
-     * @var \Magento\Framework\DB\Select[]
+     * @var Select[]
      */
     protected $anchorSelects = [];
 
     /**
      * Cached all product select by store id
      *
-     * @var \Magento\Framework\DB\Select[]
+     * @var Select[]
      */
     protected $productsSelects = [];
 
@@ -119,19 +124,21 @@ abstract class AbstractAction
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Catalog\Model\Config $config
      * @param QueryGenerator $queryGenerator
+     * @param MetadataPool|null $metadataPool
      */
     public function __construct(
         \Magento\Framework\App\ResourceConnection $resource,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Catalog\Model\Config $config,
-        QueryGenerator $queryGenerator = null
+        QueryGenerator $queryGenerator = null,
+        MetadataPool $metadataPool = null
     ) {
         $this->resource = $resource;
         $this->connection = $resource->getConnection();
         $this->storeManager = $storeManager;
         $this->config = $config;
-        $this->queryGenerator = $queryGenerator ?: \Magento\Framework\App\ObjectManager::getInstance()
-            ->get(QueryGenerator::class);
+        $this->queryGenerator = $queryGenerator ?: ObjectManager::getInstance()->get(QueryGenerator::class);
+        $this->metadataPool = $metadataPool ?: ObjectManager::getInstance()->get(MetadataPool::class);
     }
 
     /**
@@ -188,9 +195,9 @@ abstract class AbstractAction
      */
     protected function getMainTmpTable()
     {
-        return $this->useTempTable ? $this->getTable(
-            self::MAIN_INDEX_TABLE . self::TEMPORARY_TABLE_SUFFIX
-        ) : $this->getMainTable();
+        return $this->useTempTable
+            ? $this->getTable(self::MAIN_INDEX_TABLE . self::TEMPORARY_TABLE_SUFFIX)
+            : $this->getMainTable();
     }
 
     /**
@@ -218,24 +225,25 @@ abstract class AbstractAction
     /**
      * Retrieve select for reindex products of non anchor categories
      *
-     * @param \Magento\Store\Model\Store $store
-     * @return \Magento\Framework\DB\Select
+     * @param Store $store
+     * @return Select
+     * @throws \Exception when metadata not found for ProductInterface
      */
-    protected function getNonAnchorCategoriesSelect(\Magento\Store\Model\Store $store)
+    protected function getNonAnchorCategoriesSelect(Store $store)
     {
         if (!isset($this->nonAnchorSelects[$store->getId()])) {
             $statusAttributeId = $this->config->getAttribute(
-                \Magento\Catalog\Model\Product::ENTITY,
+                Product::ENTITY,
                 'status'
             )->getId();
             $visibilityAttributeId = $this->config->getAttribute(
-                \Magento\Catalog\Model\Product::ENTITY,
+                Product::ENTITY,
                 'visibility'
             )->getId();
 
             $rootPath = $this->getPathFromCategoryId($store->getRootCategoryId());
 
-            $metadata = $this->getMetadataPool()->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class);
+            $metadata = $this->metadataPool->getMetadata(ProductInterface::class);
             $linkField = $metadata->getLinkField();
             $select = $this->connection->select()->from(
                 ['cc' => $this->getTable('catalog_category_entity')],
@@ -304,12 +312,65 @@ abstract class AbstractAction
                 ]
             );
 
+            $this->addFilteringByChildProductsToSelect($select, $store);
+
             $this->nonAnchorSelects[$store->getId()] = $select;
         }
 
         return $this->nonAnchorSelects[$store->getId()];
     }
 
+    /**
+     * Add filtering by child products to select
+     *
+     * It's used for correct handling of composite products.
+     * This method makes assumption that select already joins `catalog_product_entity` as `cpe`.
+     *
+     * @param Select $select
+     * @param Store $store
+     * @return void
+     * @throws \Exception when metadata not found for ProductInterface
+     */
+    private function addFilteringByChildProductsToSelect(Select $select, Store $store)
+    {
+        $metadata = $this->metadataPool->getMetadata(ProductInterface::class);
+        $linkField = $metadata->getLinkField();
+
+        $statusAttributeId = $this->config->getAttribute(Product::ENTITY, 'status')->getId();
+
+        $select->joinLeft(
+            ['relation' => $this->getTable('catalog_product_relation')],
+            'cpe.' . $linkField . ' = relation.parent_id',
+            []
+        )->joinLeft(
+            ['relation_product_entity' => $this->getTable('catalog_product_entity')],
+            'relation.child_id = relation_product_entity.entity_id',
+            []
+        )->joinLeft(
+            ['child_cpsd' => $this->getTable('catalog_product_entity_int')],
+            'child_cpsd.' . $linkField . ' = '. 'relation_product_entity.' . $linkField
+            . ' AND child_cpsd.store_id = 0'
+            . ' AND child_cpsd.attribute_id = ' . $statusAttributeId,
+            []
+        )->joinLeft(
+            ['child_cpss' => $this->getTable('catalog_product_entity_int')],
+            'child_cpss.' . $linkField . ' = '. 'relation_product_entity.' . $linkField . ''
+            . ' AND child_cpss.attribute_id = child_cpsd.attribute_id'
+            . ' AND child_cpss.store_id = ' . $store->getId(),
+            []
+        )->where(
+            'relation.child_id IS NULL OR '
+            . $this->connection->getIfNullSql('child_cpss.value', 'child_cpsd.value') . ' = ?',
+            \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED
+        )->group(
+            [
+                'cc.entity_id',
+                'ccp.product_id',
+                'visibility'
+            ]
+        );
+    }
+
     /**
      * Check whether select ranging is needed
      *
@@ -323,16 +384,13 @@ abstract class AbstractAction
     /**
      * Return selects cut by min and max
      *
-     * @param \Magento\Framework\DB\Select $select
+     * @param Select $select
      * @param string $field
      * @param int $range
-     * @return \Magento\Framework\DB\Select[]
+     * @return Select[]
      */
-    protected function prepareSelectsByRange(
-        \Magento\Framework\DB\Select $select,
-        $field,
-        $range = self::RANGE_CATEGORY_STEP
-    ) {
+    protected function prepareSelectsByRange(Select $select, $field, $range = self::RANGE_CATEGORY_STEP)
+    {
         if ($this->isRangingNeeded()) {
             $iterator = $this->queryGenerator->generate(
                 $field,
@@ -353,10 +411,10 @@ abstract class AbstractAction
     /**
      * Reindex products of non anchor categories
      *
-     * @param \Magento\Store\Model\Store $store
+     * @param Store $store
      * @return void
      */
-    protected function reindexNonAnchorCategories(\Magento\Store\Model\Store $store)
+    protected function reindexNonAnchorCategories(Store $store)
     {
         $selects = $this->prepareSelectsByRange($this->getNonAnchorCategoriesSelect($store), 'entity_id');
         foreach ($selects as $select) {
@@ -374,10 +432,10 @@ abstract class AbstractAction
     /**
      * Check if anchor select isset
      *
-     * @param \Magento\Store\Model\Store $store
+     * @param Store $store
      * @return bool
      */
-    protected function hasAnchorSelect(\Magento\Store\Model\Store $store)
+    protected function hasAnchorSelect(Store $store)
     {
         return isset($this->anchorSelects[$store->getId()]);
     }
@@ -385,19 +443,20 @@ abstract class AbstractAction
     /**
      * Create anchor select
      *
-     * @param \Magento\Store\Model\Store $store
-     * @return \Magento\Framework\DB\Select
+     * @param Store $store
+     * @return Select
+     * @throws \Exception when metadata not found for ProductInterface or CategoryInterface
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
-    protected function createAnchorSelect(\Magento\Store\Model\Store $store)
+    protected function createAnchorSelect(Store $store)
     {
         $isAnchorAttributeId = $this->config->getAttribute(
             \Magento\Catalog\Model\Category::ENTITY,
             'is_anchor'
         )->getId();
-        $statusAttributeId = $this->config->getAttribute(\Magento\Catalog\Model\Product::ENTITY, 'status')->getId();
+        $statusAttributeId = $this->config->getAttribute(Product::ENTITY, 'status')->getId();
         $visibilityAttributeId = $this->config->getAttribute(
-            \Magento\Catalog\Model\Product::ENTITY,
+            Product::ENTITY,
             'visibility'
         )->getId();
         $rootCatIds = explode('/', $this->getPathFromCategoryId($store->getRootCategoryId()));
@@ -405,12 +464,12 @@ abstract class AbstractAction
 
         $temporaryTreeTable = $this->makeTempCategoryTreeIndex();
 
-        $productMetadata = $this->getMetadataPool()->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class);
-        $categoryMetadata = $this->getMetadataPool()->getMetadata(\Magento\Catalog\Api\Data\CategoryInterface::class);
+        $productMetadata = $this->metadataPool->getMetadata(ProductInterface::class);
+        $categoryMetadata = $this->metadataPool->getMetadata(\Magento\Catalog\Api\Data\CategoryInterface::class);
         $productLinkField = $productMetadata->getLinkField();
         $categoryLinkField = $categoryMetadata->getLinkField();
 
-        return $this->connection->select()->from(
+        $select = $this->connection->select()->from(
             ['cc' => $this->getTable('catalog_category_entity')],
             []
         )->joinInner(
@@ -492,6 +551,10 @@ abstract class AbstractAction
                 'visibility' => new \Zend_Db_Expr($this->connection->getIfNullSql('cpvs.value', 'cpvd.value')),
             ]
         );
+
+        $this->addFilteringByChildProductsToSelect($select, $store);
+
+        return $select;
     }
 
     /**
@@ -586,10 +649,10 @@ abstract class AbstractAction
     /**
      * Retrieve select for reindex products of non anchor categories
      *
-     * @param \Magento\Store\Model\Store $store
-     * @return \Magento\Framework\DB\Select
+     * @param Store $store
+     * @return Select
      */
-    protected function getAnchorCategoriesSelect(\Magento\Store\Model\Store $store)
+    protected function getAnchorCategoriesSelect(Store $store)
     {
         if (!$this->hasAnchorSelect($store)) {
             $this->anchorSelects[$store->getId()] = $this->createAnchorSelect($store);
@@ -600,10 +663,10 @@ abstract class AbstractAction
     /**
      * Reindex products of anchor categories
      *
-     * @param \Magento\Store\Model\Store $store
+     * @param Store $store
      * @return void
      */
-    protected function reindexAnchorCategories(\Magento\Store\Model\Store $store)
+    protected function reindexAnchorCategories(Store $store)
     {
         $selects = $this->prepareSelectsByRange($this->getAnchorCategoriesSelect($store), 'entity_id');
 
@@ -622,22 +685,23 @@ abstract class AbstractAction
     /**
      * Get select for all products
      *
-     * @param \Magento\Store\Model\Store $store
-     * @return \Magento\Framework\DB\Select
+     * @param Store $store
+     * @return Select
+     * @throws \Exception when metadata not found for ProductInterface
      */
-    protected function getAllProducts(\Magento\Store\Model\Store $store)
+    protected function getAllProducts(Store $store)
     {
         if (!isset($this->productsSelects[$store->getId()])) {
             $statusAttributeId = $this->config->getAttribute(
-                \Magento\Catalog\Model\Product::ENTITY,
+                Product::ENTITY,
                 'status'
             )->getId();
             $visibilityAttributeId = $this->config->getAttribute(
-                \Magento\Catalog\Model\Product::ENTITY,
+                Product::ENTITY,
                 'visibility'
             )->getId();
 
-            $metadata = $this->getMetadataPool()->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class);
+            $metadata = $this->metadataPool->getMetadata(ProductInterface::class);
             $linkField = $metadata->getLinkField();
 
             $select = $this->connection->select()->from(
@@ -726,10 +790,10 @@ abstract class AbstractAction
     /**
      * Reindex all products to root category
      *
-     * @param \Magento\Store\Model\Store $store
+     * @param Store $store
      * @return void
      */
-    protected function reindexRootCategory(\Magento\Store\Model\Store $store)
+    protected function reindexRootCategory(Store $store)
     {
         if ($this->isIndexRootCategoryNeeded()) {
             $selects = $this->prepareSelectsByRange(
@@ -750,16 +814,4 @@ abstract class AbstractAction
             }
         }
     }
-
-    /**
-     * @return \Magento\Framework\EntityManager\MetadataPool
-     */
-    private function getMetadataPool()
-    {
-        if (null === $this->metadataPool) {
-            $this->metadataPool = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(\Magento\Framework\EntityManager\MetadataPool::class);
-        }
-        return $this->metadataPool;
-    }
 }
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Category/Action/Rows.php b/app/code/Magento/Catalog/Model/Indexer/Product/Category/Action/Rows.php
index 1b988534328e9971ecc38dec36d294a780a9b79d..99b087691ab09aa0b4b42a655d1efcc3890dfa1b 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Category/Action/Rows.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Category/Action/Rows.php
@@ -6,9 +6,19 @@
 namespace Magento\Catalog\Model\Indexer\Product\Category\Action;
 
 use Magento\Catalog\Model\Category;
+use Magento\Catalog\Model\Config;
 use Magento\Catalog\Model\Product;
+use Magento\Framework\App\ObjectManager;
+use Magento\Framework\App\ResourceConnection;
+use Magento\Framework\DB\Query\Generator as QueryGenerator;
+use Magento\Framework\EntityManager\MetadataPool;
+use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
 use Magento\Framework\Indexer\CacheContext;
+use Magento\Store\Model\StoreManagerInterface;
 
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
 class Rows extends \Magento\Catalog\Model\Indexer\Category\Product\AbstractAction
 {
     /**
@@ -19,32 +29,102 @@ class Rows extends \Magento\Catalog\Model\Indexer\Category\Product\AbstractActio
     protected $limitationByProducts;
 
     /**
-     * @var \Magento\Framework\Indexer\CacheContext
+     * @var CacheContext
      */
     private $cacheContext;
 
+    /**
+     * @var EventManagerInterface|null
+     */
+    private $eventManager;
+
+    /**
+     * @param ResourceConnection $resource
+     * @param StoreManagerInterface $storeManager
+     * @param Config $config
+     * @param QueryGenerator|null $queryGenerator
+     * @param MetadataPool|null $metadataPool
+     * @param CacheContext|null $cacheContext
+     * @param EventManagerInterface|null $eventManager
+     */
+    public function __construct(
+        ResourceConnection $resource,
+        StoreManagerInterface $storeManager,
+        Config $config,
+        QueryGenerator $queryGenerator = null,
+        MetadataPool $metadataPool = null,
+        CacheContext $cacheContext = null,
+        EventManagerInterface $eventManager = null
+    ) {
+        parent::__construct($resource, $storeManager, $config, $queryGenerator, $metadataPool);
+        $this->cacheContext = $cacheContext ?: ObjectManager::getInstance()->get(CacheContext::class);
+        $this->eventManager = $eventManager ?: ObjectManager::getInstance()->get(EventManagerInterface::class);
+    }
+
     /**
      * Refresh entities index
      *
      * @param int[] $entityIds
      * @param bool $useTempTable
      * @return $this
+     * @throws \Exception if metadataPool doesn't contain metadata for ProductInterface
+     * @throws \DomainException
      */
     public function execute(array $entityIds = [], $useTempTable = false)
     {
-        $this->limitationByProducts = $entityIds;
+        $idsToBeReIndexed = $this->getProductIdsWithParents($entityIds);
+
+        $this->limitationByProducts = $idsToBeReIndexed;
         $this->useTempTable = $useTempTable;
 
+        $affectedCategories = $this->getCategoryIdsFromIndex($idsToBeReIndexed);
+
         $this->removeEntries();
 
         $this->reindex();
 
-        $this->registerProducts($entityIds);
-        $this->registerCategories($entityIds);
+        $affectedCategories = array_merge($affectedCategories, $this->getCategoryIdsFromIndex($idsToBeReIndexed));
+
+        $this->registerProducts($idsToBeReIndexed);
+        $this->registerCategories($affectedCategories);
+        $this->eventManager->dispatch('clean_cache_by_tags', ['object' => $this->cacheContext]);
 
         return $this;
     }
 
+    /**
+     * Get IDs of parent products by their child IDs.
+     *
+     * Returns identifiers of parent product from the catalog_product_relation.
+     * Please note that returned ids don't contain ids of passed child products.
+     *
+     * @param int[] $childProductIds
+     * @return int[]
+     * @throws \Exception if metadataPool doesn't contain metadata for ProductInterface
+     * @throws \DomainException
+     */
+    private function getProductIdsWithParents(array $childProductIds)
+    {
+        /** @var \Magento\Framework\EntityManager\EntityMetadataInterface $metadata */
+        $metadata = $this->metadataPool->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class);
+        $fieldForParent = $metadata->getLinkField();
+
+        $select = $this->connection
+            ->select()
+            ->from(['relation' => $this->getTable('catalog_product_relation')], [])
+            ->distinct(true)
+            ->where('child_id IN (?)', $childProductIds)
+            ->join(
+                ['cpe' => $this->getTable('catalog_product_entity')],
+                'relation.parent_id = cpe.' . $fieldForParent,
+                ['cpe.entity_id']
+            );
+
+        $parentProductIds = $this->connection->fetchCol($select);
+
+        return array_unique(array_merge($childProductIds, $parentProductIds));
+    }
+
     /**
      * Register affected products
      *
@@ -53,26 +133,19 @@ class Rows extends \Magento\Catalog\Model\Indexer\Category\Product\AbstractActio
      */
     private function registerProducts($entityIds)
     {
-        $this->getCacheContext()->registerEntities(Product::CACHE_TAG, $entityIds);
+        $this->cacheContext->registerEntities(Product::CACHE_TAG, $entityIds);
     }
 
     /**
      * Register categories assigned to products
      *
-     * @param array $entityIds
+     * @param array $categoryIds
      * @return void
      */
-    private function registerCategories($entityIds)
+    private function registerCategories(array $categoryIds)
     {
-        $categories = $this->connection->fetchCol(
-            $this->connection->select()
-                ->from($this->getMainTable(), ['category_id'])
-                ->where('product_id IN (?)', $entityIds)
-                ->distinct()
-        );
-
-        if ($categories) {
-            $this->getCacheContext()->registerEntities(Category::CACHE_TAG, $categories);
+        if ($categoryIds) {
+            $this->cacheContext->registerEntities(Category::CACHE_TAG, $categoryIds);
         }
     }
 
@@ -98,7 +171,7 @@ class Rows extends \Magento\Catalog\Model\Indexer\Category\Product\AbstractActio
     protected function getNonAnchorCategoriesSelect(\Magento\Store\Model\Store $store)
     {
         $select = parent::getNonAnchorCategoriesSelect($store);
-        return $select->where('ccp.product_id IN (?)', $this->limitationByProducts);
+        return $select->where('ccp.product_id IN (?) OR relation.child_id IN (?)', $this->limitationByProducts);
     }
 
     /**
@@ -136,16 +209,25 @@ class Rows extends \Magento\Catalog\Model\Indexer\Category\Product\AbstractActio
     }
 
     /**
-     * Get cache context
+     * Returns a list of category ids which are assigned to product ids in the index
      *
      * @return \Magento\Framework\Indexer\CacheContext
-     * @deprecated 101.0.0
      */
-    private function getCacheContext()
+    private function getCategoryIdsFromIndex(array $productIds)
     {
-        if ($this->cacheContext === null) {
-            $this->cacheContext = \Magento\Framework\App\ObjectManager::getInstance()->get(CacheContext::class);
+        $categoryIds = $this->connection->fetchCol(
+            $this->connection->select()
+                ->from($this->getMainTable(), ['category_id'])
+                ->where('product_id IN (?)', $productIds)
+                ->distinct()
+        );
+        $parentCategories = $categoryIds;
+        foreach ($categoryIds as $categoryId) {
+            $parentIds = explode('/', $this->getPathFromCategoryId($categoryId));
+            $parentCategories = array_merge($parentCategories, $parentIds);
         }
-        return $this->cacheContext;
+        $categoryIds = array_unique($parentCategories);
+
+        return $categoryIds;
     }
 }
diff --git a/app/code/Magento/Catalog/i18n/en_US.csv b/app/code/Magento/Catalog/i18n/en_US.csv
index de9f5e1975870fe039dc605efbef24ec480d0ca4..a316bac5d35848fe73a608706cfd7f437599bc7a 100644
--- a/app/code/Magento/Catalog/i18n/en_US.csv
+++ b/app/code/Magento/Catalog/i18n/en_US.csv
@@ -615,7 +615,7 @@ Submit,Submit
 "We don't recognize or support this file extension type.","We don't recognize or support this file extension type."
 "Configure Product","Configure Product"
 OK,OK
-"This value does not follow the specified format (for example, 200X300).","This value does not follow the specified format (for example, 200X300)."
+"This value does not follow the specified format (for example, 200x300).","This value does not follow the specified format (for example, 200x300)."
 "Select type of option.","Select type of option."
 "Please add rows to option.","Please add rows to option."
 "Please select items.","Please select items."
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/component/image-size-field.js b/app/code/Magento/Catalog/view/adminhtml/web/component/image-size-field.js
index 3ebd4bdf9c804450d9b4baabffcbfe7aa9b1b9b0..11a1a65cbab4785cca4a3adfd93486d66527a2d4 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/component/image-size-field.js
+++ b/app/code/Magento/Catalog/view/adminhtml/web/component/image-size-field.js
@@ -26,7 +26,7 @@ define([
 
             return !!(m &&  m[1] > 0 && m[2] > 0);
         },
-        $.mage.__('This value does not follow the specified format (for example, 200X300).')
+        $.mage.__('This value does not follow the specified format (for example, 200x300).')
     );
 
     return Abstract.extend({
diff --git a/app/code/Magento/Catalog/view/frontend/templates/navigation/left.phtml b/app/code/Magento/Catalog/view/frontend/templates/navigation/left.phtml
index fa70e1513557847339cf125e5d7f24a1b78a0e6f..01820361744e0aebc18ab15cf4545275e2c87804 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/navigation/left.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/navigation/left.phtml
@@ -28,6 +28,7 @@
                 <dt><?= /* @escapeNotVerified */ __('Category') ?></dt>
                 <dd>
                     <ol class="items">
+                        <?php /** @var \Magento\Catalog\Model\Category $_category */ ?>
                         <?php foreach ($_categories as $_category): ?>
                             <?php if ($_category->getIsActive()): ?>
                                 <li class="item">
diff --git a/app/code/Magento/CatalogInventory/Helper/Stock.php b/app/code/Magento/CatalogInventory/Helper/Stock.php
index 410e35096ee58c7ea1835ec48421f6999166ebf2..99a83753e43793f98ee2ba9cfbf465e3d845a2de 100644
--- a/app/code/Magento/CatalogInventory/Helper/Stock.php
+++ b/app/code/Magento/CatalogInventory/Helper/Stock.php
@@ -156,7 +156,7 @@ class Stock
             $resource = $this->getStockStatusResource();
             $resource->addStockDataToCollection(
                 $collection,
-                !$isShowOutOfStock || $collection->getFlag('require_stock_items')
+                !$isShowOutOfStock
             );
             $collection->setFlag($stockFlag, true);
         }
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php
index 9009a40c19dff3fc65772032b6480d92012d07a8..1aa3dba07fc78d8f8ec4cebea2969cc057fdb11b 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php
@@ -123,11 +123,12 @@ class Fulltext implements \Magento\Framework\Indexer\ActionInterface, \Magento\F
         $saveHandler = $this->indexerHandlerFactory->create([
             'data' => $this->data
         ]);
+
         foreach ($storeIds as $storeId) {
             $dimension = $this->dimensionFactory->create(['name' => 'scope', 'value' => $storeId]);
             $productIds = array_unique(array_merge($ids, $this->fulltextResource->getRelationsByChild($ids)));
             $saveHandler->deleteIndex([$dimension], new \ArrayObject($productIds));
-            $saveHandler->saveIndex([$dimension], $this->fullAction->rebuildStoreIndex($storeId, $ids));
+            $saveHandler->saveIndex([$dimension], $this->fullAction->rebuildStoreIndex($storeId, $productIds));
         }
     }
 
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php
index 07ff47610f3306b95f57f0287f948cf1988a41cc..98fb2528593e7fd917aee4d5ea4664ccafd1b9d7 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php
@@ -377,9 +377,9 @@ class DataProvider
     public function getProductChildIds($productId, $typeId)
     {
         $typeInstance = $this->getProductTypeInstance($typeId);
-        $relation = $typeInstance->isComposite(
-            $this->getProductEmulator($typeId)
-        ) ? $typeInstance->getRelationInfo() : false;
+        $relation = $typeInstance->isComposite($this->getProductEmulator($typeId))
+            ? $typeInstance->getRelationInfo()
+            : false;
 
         if ($relation && $relation->getTable() && $relation->getParentFieldName() && $relation->getChildFieldName()) {
             $select = $this->connection->select()->from(
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php
index 639c0e8ca66f0a044880fda98ae0e3d642f8c8c8..5abcd5e7592e1a64ca8747469a6d7e43fa123ab3 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\CatalogSearch\Model\Indexer\Fulltext\Action;
 
+use Magento\Catalog\Api\Data\ProductInterface;
 use Magento\CatalogSearch\Model\Indexer\Fulltext;
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\App\ResourceConnection;
@@ -297,27 +298,32 @@ class Full
     /**
      * Get parents IDs of product IDs to be re-indexed
      *
+     * @deprecated as it not used in the class anymore and duplicates another API method
+     * @see \Magento\CatalogSearch\Model\ResourceModel\Fulltext::getRelationsByChild()
+     *
      * @param int[] $entityIds
      * @return int[]
+     * @throws \Exception
      */
     protected function getProductIdsFromParents(array $entityIds)
     {
-        /** @var \Magento\Framework\EntityManager\EntityMetadataInterface $metadata */
-        $metadata = $this->metadataPool->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class);
-        $fieldForParent = $metadata->getLinkField();
+        $connection = $this->connection;
+        $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField();
 
-        $select = $this->connection
+        $select = $connection
             ->select()
-            ->from(['relation' => $this->getTable('catalog_product_relation')], [])
+            ->from(
+                ['relation' => $this->getTable('catalog_product_relation')],
+                []
+            )
             ->distinct(true)
             ->where('child_id IN (?)', $entityIds)
-            ->where('parent_id NOT IN (?)', $entityIds)
             ->join(
                 ['cpe' => $this->getTable('catalog_product_entity')],
-                'relation.parent_id = cpe.' . $fieldForParent,
+                'relation.parent_id = cpe.' . $linkField,
                 ['cpe.entity_id']
             );
-        return $this->connection->fetchCol($select);
+        return $connection->fetchCol($select);
     }
 
     /**
@@ -335,7 +341,7 @@ class Full
     public function rebuildStoreIndex($storeId, $productIds = null)
     {
         if ($productIds !== null) {
-            $productIds = array_unique(array_merge($productIds, $this->getProductIdsFromParents($productIds)));
+            $productIds = array_unique($productIds);
         }
 
         // prepare searchable attributes
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php
index 15349e91c3fe9b9d1690d8b2eecf91c176def860..e9737d0aa059983d0b3daa1384800288e06e35ac 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php
@@ -82,17 +82,20 @@ class Fulltext extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
     {
         $connection = $this->getConnection();
         $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField();
-        $select = $connection->select()->from(
-            ['relation' => $this->getTable('catalog_product_relation')],
-            []
-        )->join(
-            ['cpe' => $this->getTable('catalog_product_entity')],
-            'cpe.' . $linkField . ' = relation.parent_id',
-            ['cpe.entity_id']
-        )->where(
-            'relation.child_id IN (?)',
-            $childIds
-        )->distinct(true);
+        $select = $connection
+            ->select()
+            ->from(
+                ['relation' => $this->getTable('catalog_product_relation')],
+                []
+            )->distinct(true)
+            ->join(
+                ['cpe' => $this->getTable('catalog_product_entity')],
+                'cpe.' . $linkField . ' = relation.parent_id',
+                ['cpe.entity_id']
+            )->where(
+                'relation.child_id IN (?)',
+                $childIds
+            );
 
         return $connection->fetchCol($select);
     }
diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/step-navigator.js b/app/code/Magento/Checkout/view/frontend/web/js/model/step-navigator.js
index bfcd0d02585bb77a801716b1d6bc3b6c2087660f..2341748bc4e4a0b11be35cfff6a37ae7103a8752 100644
--- a/app/code/Magento/Checkout/view/frontend/web/js/model/step-navigator.js
+++ b/app/code/Magento/Checkout/view/frontend/web/js/model/step-navigator.js
@@ -66,7 +66,7 @@ define([
          * @param {*} sortOrder
          */
         registerStep: function (code, alias, title, isVisible, navigate, sortOrder) {
-            var hash;
+            var hash, active;
 
             if ($.inArray(code, this.validCodes) !== -1) {
                 throw new DOMException('Step code [' + code + '] already registered in step navigator');
@@ -87,6 +87,12 @@ define([
                 navigate: navigate,
                 sortOrder: sortOrder
             });
+            active = this.getActiveItemIndex();
+            steps.each(function (elem, index) {
+                if (active !== index) {
+                    elem.isVisible(false);
+                }
+            });
             this.stepCodes.push(code);
             hash = window.location.hash.replace('#', '');
 
@@ -111,10 +117,14 @@ define([
         getActiveItemIndex: function () {
             var activeIndex = 0;
 
-            steps.sort(this.sortItems).forEach(function (element, index) {
+            steps.sort(this.sortItems).some(function (element, index) {
                 if (element.isVisible()) {
                     activeIndex = index;
+
+                    return true;
                 }
+
+                return false;
             });
 
             return activeIndex;
diff --git a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
index e6345af40f37ad9a87c97e5bcfbd7226867ea7c9..fbaa4e60c29cc93da23bca1c9e303daac5ad025f 100644
--- a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
@@ -3,6 +3,7 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\ConfigurableProduct\Model\Product\Type;
 
 use Magento\Catalog\Api\Data\ProductAttributeInterface;
@@ -682,7 +683,7 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
                 ->setProductId($product->getData($metadata->getLinkField()))
                 ->save();
         }
-        /** @var $configurableAttributesCollection \Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Attribute\Collection  */
+        /** @var $configurableAttributesCollection \Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Attribute\Collection */
         $configurableAttributesCollection = $this->_attributeCollectionFactory->create();
         $configurableAttributesCollection->setProductFilter($product);
         $configurableAttributesCollection->addFieldToFilter(
@@ -1397,7 +1398,16 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
             ->addFilterByRequiredOptions()
             ->setStoreId($product->getStoreId());
 
-        $requiredAttributes = ['name', 'price', 'weight', 'image', 'thumbnail', 'status', 'media_gallery'];
+        $requiredAttributes = [
+            'name',
+            'price',
+            'weight',
+            'image',
+            'thumbnail',
+            'status',
+            'visibility',
+            'media_gallery'
+        ];
         foreach ($requiredAttributes as $attributeCode) {
             $collection->addAttributeToSelect($attributeCode);
         }
diff --git a/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php b/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php
index 6ffdede34d04c77174a29fbe90b6c9a00deb478d..ea136dd037bafea26be7ce14f39f89deb1960572 100644
--- a/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php
+++ b/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php
@@ -197,11 +197,6 @@ class ConfigurableTest extends \PHPUnit\Framework\TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->productFactory = $this->getMockBuilder(\Magento\Catalog\Api\Data\ProductInterfaceFactory::class)
-            ->setMethods(['create'])
-            ->disableOriginalConstructor()
-            ->getMock();
-
         $this->salableProcessor = $this->createMock(SalableProcessor::class);
 
         $this->model = $this->objectHelper->getObject(
diff --git a/app/code/Magento/Customer/Model/AccountManagement.php b/app/code/Magento/Customer/Model/AccountManagement.php
index ba646549f6919a5f933831cdb33b05930988a2d8..894dd5931a63c6be9e8590cc422aa2d0de92b666 100644
--- a/app/code/Magento/Customer/Model/AccountManagement.php
+++ b/app/code/Magento/Customer/Model/AccountManagement.php
@@ -817,6 +817,8 @@ class AccountManagement implements AccountManagementInterface
         } catch (MailException $e) {
             // If we are not able to send a new account email, this should be ignored
             $this->logger->critical($e);
+        } catch (\UnexpectedValueException $e) {
+            $this->logger->error($e);
         }
     }
 
diff --git a/app/code/Magento/Customer/Model/AttributeChecker.php b/app/code/Magento/Customer/Model/AttributeChecker.php
index 6cc27697ccff7cc5baf0cc8141e9001b2b2f908d..dcdd47691386efbd19186fb7930d4d7db0922e9f 100644
--- a/app/code/Magento/Customer/Model/AttributeChecker.php
+++ b/app/code/Magento/Customer/Model/AttributeChecker.php
@@ -8,7 +8,6 @@ namespace Magento\Customer\Model;
 use Magento\Customer\Api\AddressMetadataInterface;
 use Magento\Customer\Api\AddressMetadataManagementInterface;
 use Magento\Customer\Model\Metadata\AttributeResolver;
-use Magento\Framework\App\Helper\Context;
 
 /**
  * Customer attribute checker.
diff --git a/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php b/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php
index 2a6b9fe6fd4ea44edfed07f85aaaf36d69357eca..676e9c98a2008eebe06aca66f14602573f88c036 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/AccountManagementTest.php
@@ -1721,4 +1721,102 @@ class AccountManagementTest extends \PHPUnit\Framework\TestCase
 
         return $dateTime;
     }
+
+    public function testCreateAccountUnexpectedValueException()
+    {
+        $websiteId = 1;
+        $storeId = null;
+        $defaultStoreId = 1;
+        $customerId = 1;
+        $customerEmail = 'email@email.com';
+        $newLinkToken = '2jh43j5h2345jh23lh452h345hfuzasd96ofu';
+        $exception = new \UnexpectedValueException('Template file was not found');
+
+        $datetime = $this->prepareDateTimeFactory();
+
+        $address = $this->createMock(\Magento\Customer\Api\Data\AddressInterface::class);
+        $address->expects($this->once())
+            ->method('setCustomerId')
+            ->with($customerId);
+        $store = $this->createMock(\Magento\Store\Model\Store::class);
+        $store->expects($this->once())
+            ->method('getId')
+            ->willReturn($defaultStoreId);
+        $website = $this->createMock(\Magento\Store\Model\Website::class);
+        $website->expects($this->atLeastOnce())
+            ->method('getStoreIds')
+            ->willReturn([1, 2, 3]);
+        $website->expects($this->once())
+            ->method('getDefaultStore')
+            ->willReturn($store);
+        $customer = $this->createMock(\Magento\Customer\Api\Data\CustomerInterface::class);
+        $customer->expects($this->atLeastOnce())
+            ->method('getId')
+            ->willReturn($customerId);
+        $customer->expects($this->atLeastOnce())
+            ->method('getEmail')
+            ->willReturn($customerEmail);
+        $customer->expects($this->atLeastOnce())
+            ->method('getWebsiteId')
+            ->willReturn($websiteId);
+        $customer->expects($this->atLeastOnce())
+            ->method('getStoreId')
+            ->willReturn($storeId);
+        $customer->expects($this->once())
+            ->method('setStoreId')
+            ->with($defaultStoreId);
+        $customer->expects($this->once())
+            ->method('getAddresses')
+            ->willReturn([$address]);
+        $customer->expects($this->once())
+            ->method('setAddresses')
+            ->with(null);
+        $this->customerRepository->expects($this->once())
+            ->method('get')
+            ->with($customerEmail)
+            ->willReturn($customer);
+        $this->share->expects($this->once())
+            ->method('isWebsiteScope')
+            ->willReturn(true);
+        $this->storeManager->expects($this->atLeastOnce())
+            ->method('getWebsite')
+            ->with($websiteId)
+            ->willReturn($website);
+        $this->customerRepository->expects($this->atLeastOnce())
+            ->method('save')
+            ->willReturn($customer);
+        $this->addressRepository->expects($this->atLeastOnce())
+            ->method('save')
+            ->with($address);
+        $this->customerRepository->expects($this->once())
+            ->method('getById')
+            ->with($customerId)
+            ->willReturn($customer);
+        $this->random->expects($this->once())
+            ->method('getUniqueHash')
+            ->willReturn($newLinkToken);
+        $customerSecure = $this->createPartialMock(
+            \Magento\Customer\Model\Data\CustomerSecure::class,
+            ['setRpToken', 'setRpTokenCreatedAt', 'getPasswordHash']
+        );
+        $customerSecure->expects($this->any())
+            ->method('setRpToken')
+            ->with($newLinkToken);
+        $customerSecure->expects($this->any())
+            ->method('setRpTokenCreatedAt')
+            ->with($datetime)
+            ->willReturnSelf();
+        $customerSecure->expects($this->any())
+            ->method('getPasswordHash')
+            ->willReturn(null);
+        $this->customerRegistry->expects($this->atLeastOnce())
+            ->method('retrieveSecureData')
+            ->willReturn($customerSecure);
+        $this->emailNotificationMock->expects($this->once())
+            ->method('newAccount')
+            ->willThrowException($exception);
+        $this->logger->expects($this->once())->method('error')->with($exception);
+
+        $this->accountManagement->createAccount($customer);
+    }
 }
diff --git a/app/code/Magento/Email/Model/Template/Config.php b/app/code/Magento/Email/Model/Template/Config.php
index bdd9054e7969b9f73b99244f5883499c7246eeaa..8a7e7172a8e6ec6e07b031e97a8cb5a1225ceb19 100644
--- a/app/code/Magento/Email/Model/Template/Config.php
+++ b/app/code/Magento/Email/Model/Template/Config.php
@@ -205,8 +205,9 @@ class Config implements \Magento\Framework\Mail\Template\ConfigInterface
         $designParams['module'] = $module;
 
         $file = $this->_getInfo($templateId, 'file');
+        $filename = $this->getFilename($file, $designParams, $module);
 
-        return $this->viewFileSystem->getEmailTemplateFileName($file, $designParams, $module);
+        return $filename;
     }
 
     /**
@@ -230,4 +231,24 @@ class Config implements \Magento\Framework\Mail\Template\ConfigInterface
         }
         return $data[$templateId][$fieldName];
     }
+
+    /**
+     * @param string $file
+     * @param array $designParams
+     * @param string $module
+     *
+     * @return string
+     *
+     * @throws \UnexpectedValueException
+     */
+    private function getFilename($file, array $designParams, $module)
+    {
+        $filename = $this->viewFileSystem->getEmailTemplateFileName($file, $designParams, $module);
+
+        if ($filename === false) {
+            throw new \UnexpectedValueException("Template file '{$file}' is not found.");
+        }
+
+        return $filename;
+    }
 }
diff --git a/app/code/Magento/Email/Test/Unit/Model/Template/ConfigTest.php b/app/code/Magento/Email/Test/Unit/Model/Template/ConfigTest.php
index 47c3ac1e7e45075a7d8ab6c9ca33fb13193dd355..6a565ca08eb9b4909e18c695d701d01197ee3615 100644
--- a/app/code/Magento/Email/Test/Unit/Model/Template/ConfigTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/Template/ConfigTest.php
@@ -272,6 +272,19 @@ class ConfigTest extends \PHPUnit\Framework\TestCase
         $this->assertEquals('_files/Fixture/ModuleOne/view/frontend/email/one.html', $actualResult);
     }
 
+    /**
+     * @expectedException \UnexpectedValueException
+     * @expectedExceptionMessage Template file 'one.html' is not found
+     */
+    public function testGetTemplateFilenameWrongFileName()
+    {
+        $this->viewFileSystem->expects($this->once())->method('getEmailTemplateFileName')
+            ->with('one.html', $this->designParams, 'Fixture_ModuleOne')
+            ->willReturn(false);
+
+        $this->model->getTemplateFilename('template_one', $this->designParams);
+    }
+
     /**
      * @param string $getterMethod
      * @param $argument
diff --git a/app/code/Magento/NewRelicReporting/Console/Command/DeployMarker.php b/app/code/Magento/NewRelicReporting/Console/Command/DeployMarker.php
new file mode 100644
index 0000000000000000000000000000000000000000..795028cffd18d0ac82f7aeec91959b03dfef0364
--- /dev/null
+++ b/app/code/Magento/NewRelicReporting/Console/Command/DeployMarker.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\NewRelicReporting\Console\Command;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Input\InputArgument;
+use Magento\NewRelicReporting\Model\Apm\DeploymentsFactory;
+use Magento\NewRelicReporting\Model\ServiceShellUser;
+
+class DeployMarker extends Command
+{
+    /**
+     * @var DeploymentsFactory
+     */
+    private $deploymentsFactory;
+
+    /**
+     * @var ServiceShellUser
+     */
+    private $serviceShellUser;
+
+    /**
+     * Initialize dependencies.
+     *
+     * @param DeploymentsFactory $deploymentsFactory
+     * @param ServiceShellUser $serviceShellUser
+     * @param null $name
+     */
+    public function __construct(
+        DeploymentsFactory $deploymentsFactory,
+        ServiceShellUser $serviceShellUser,
+        $name = null
+    ) {
+        $this->deploymentsFactory = $deploymentsFactory;
+        $this->serviceShellUser = $serviceShellUser;
+        parent::__construct($name);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $this->setName("newrelic:create:deploy-marker");
+        $this->setDescription("Check the deploy queue for entries and create an appropriate deploy marker.")
+             ->addArgument(
+                 'message',
+                 InputArgument::REQUIRED,
+                 'Deploy Message?'
+             )
+             ->addArgument(
+                 'changelog',
+                 InputArgument::REQUIRED,
+                 'Change Log?'
+             )
+             ->addArgument(
+                 'user',
+                 InputArgument::OPTIONAL,
+                 'Deployment User'
+             );
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $this->deploymentsFactory->create()->setDeployment(
+            $input->getArgument('message'),
+            $input->getArgument('changelog'),
+            $this->serviceShellUser->get($input->getArgument('user'))
+        );
+        $output->writeln('<info>NewRelic deployment information sent</info>');
+    }
+}
diff --git a/app/code/Magento/NewRelicReporting/Model/Cron/ReportNewRelicCron.php b/app/code/Magento/NewRelicReporting/Model/Cron/ReportNewRelicCron.php
index a4a7d30b44f5bdf6c8198e4106b208d347d3c1f7..6b2bd50dc456b2523cf773b5fbc407b97055de7e 100644
--- a/app/code/Magento/NewRelicReporting/Model/Cron/ReportNewRelicCron.php
+++ b/app/code/Magento/NewRelicReporting/Model/Cron/ReportNewRelicCron.php
@@ -175,7 +175,6 @@ class ReportNewRelicCron
     public function report()
     {
         if ($this->config->isNewRelicEnabled()) {
-            $this->reportModules();
             $this->reportCounts();
         }
 
diff --git a/app/code/Magento/NewRelicReporting/Model/ServiceShellUser.php b/app/code/Magento/NewRelicReporting/Model/ServiceShellUser.php
new file mode 100644
index 0000000000000000000000000000000000000000..c038be4fb2a760993034d3b0da5bb4a6b960764b
--- /dev/null
+++ b/app/code/Magento/NewRelicReporting/Model/ServiceShellUser.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\NewRelicReporting\Model;
+
+class ServiceShellUser
+{
+    /**
+     * Default user name;
+     */
+    const DEFAULT_USER = 'cron';
+
+    /**
+     * Get use name.
+     *
+     * @param bool $userFromArgument
+     * @return string
+     */
+    public function get($userFromArgument = false)
+    {
+        if ($userFromArgument) {
+            return $userFromArgument;
+        }
+
+        $user = `echo \$USER`;
+        if ($user) {
+            return $user;
+        }
+
+        return self::DEFAULT_USER;
+    }
+}
diff --git a/app/code/Magento/NewRelicReporting/Test/Unit/Model/Cron/ReportNewRelicCronTest.php b/app/code/Magento/NewRelicReporting/Test/Unit/Model/Cron/ReportNewRelicCronTest.php
index 70fdcd0b6191cd5881a54f8a8f9e983a5771a386..400bcefa9828b060c79c16541b150b999869393a 100644
--- a/app/code/Magento/NewRelicReporting/Test/Unit/Model/Cron/ReportNewRelicCronTest.php
+++ b/app/code/Magento/NewRelicReporting/Test/Unit/Model/Cron/ReportNewRelicCronTest.php
@@ -144,24 +144,10 @@ class ReportNewRelicCronTest extends \PHPUnit\Framework\TestCase
      */
     public function testReportNewRelicCron()
     {
-        $testModuleData = [
-            'changes' => [
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'enabled'],
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'disabled'],
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'installed'],
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'uninstalled'],
-            ],
-            'enabled' => 1,
-            'disabled' => 1,
-            'installed' => 1,
-        ];
 
         $this->config->expects($this->once())
             ->method('isNewRelicEnabled')
             ->willReturn(true);
-        $this->collect->expects($this->once())
-            ->method('getModuleData')
-            ->willReturn($testModuleData);
         $this->counter->expects($this->once())
             ->method('getAllProductsCount');
         $this->counter->expects($this->once())
@@ -198,24 +184,10 @@ class ReportNewRelicCronTest extends \PHPUnit\Framework\TestCase
      */
     public function testReportNewRelicCronRequestFailed()
     {
-        $testModuleData = [
-            'changes' => [
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'enabled'],
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'disabled'],
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'installed'],
-                ['name' => 'name', 'setup_version' => '2.0.0', 'type' => 'uninstalled'],
-            ],
-            'enabled' => 1,
-            'disabled' => 1,
-            'installed' => 1,
-        ];
 
         $this->config->expects($this->once())
             ->method('isNewRelicEnabled')
             ->willReturn(true);
-        $this->collect->expects($this->once())
-            ->method('getModuleData')
-            ->willReturn($testModuleData);
         $this->counter->expects($this->once())
             ->method('getAllProductsCount');
         $this->counter->expects($this->once())
diff --git a/app/code/Magento/NewRelicReporting/etc/di.xml b/app/code/Magento/NewRelicReporting/etc/di.xml
index cba92f91cd4bbddb9a5de0201e7ba3c4d71ccf5a..2dccc45c1129b7aaca71f7b6f63f29feeb95f9ca 100644
--- a/app/code/Magento/NewRelicReporting/etc/di.xml
+++ b/app/code/Magento/NewRelicReporting/etc/di.xml
@@ -30,4 +30,11 @@
     <type name="Magento\Framework\App\Http">
         <plugin name="framework-http-newrelic" type="Magento\NewRelicReporting\Plugin\HttpPlugin"/>
     </type>
+    <type name="Magento\Framework\Console\CommandListInterface">
+        <arguments>
+            <argument name="commands" xsi:type="array">
+                <item name="newrelicreporting_deploy_marker" xsi:type="object">Magento\NewRelicReporting\Console\Command\DeployMarker</item>
+            </argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/ProductVideo/view/frontend/web/js/fotorama-add-video-events.js b/app/code/Magento/ProductVideo/view/frontend/web/js/fotorama-add-video-events.js
index c0036b71ac86ac7550b0faaa6d59f0382141cb2e..3104fdc6190dc6bf80de2e132d703246d2923fb5 100644
--- a/app/code/Magento/ProductVideo/view/frontend/web/js/fotorama-add-video-events.js
+++ b/app/code/Magento/ProductVideo/view/frontend/web/js/fotorama-add-video-events.js
@@ -207,7 +207,7 @@ define([
                 if (options.dataMergeStrategy === 'prepend') {
                     this.options.videoData = [].concat(
                         this.options.optionsVideoData[options.selectedOption],
-                        this.options.videoData
+                        this.defaultVideoData
                     );
                 } else {
                     this.options.videoData = this.options.optionsVideoData[options.selectedOption];
diff --git a/app/code/Magento/Sitemap/Model/Sitemap.php b/app/code/Magento/Sitemap/Model/Sitemap.php
index f6a5f029eafca2818897c81d75535596598c241d..cad8023bd2794d7f17cab7a82fd3005e3fb16edd 100644
--- a/app/code/Magento/Sitemap/Model/Sitemap.php
+++ b/app/code/Magento/Sitemap/Model/Sitemap.php
@@ -273,6 +273,7 @@ class Sitemap extends \Magento\Framework\Model\AbstractModel implements \Magento
         /** @var $helper \Magento\Sitemap\Helper\Data */
         $helper = $this->_sitemapData;
         $storeId = $this->getStoreId();
+        $this->_storeManager->setCurrentStore($storeId);
 
         $this->addSitemapItem(new DataObject(
             [
diff --git a/app/code/Magento/Sitemap/Test/Unit/Model/SitemapTest.php b/app/code/Magento/Sitemap/Test/Unit/Model/SitemapTest.php
index 83210c5789776a845607c5343e12e85bb31d6d5d..4f55653fad311fef40352cc65b4cb9a94b38f8fc 100644
--- a/app/code/Magento/Sitemap/Test/Unit/Model/SitemapTest.php
+++ b/app/code/Magento/Sitemap/Test/Unit/Model/SitemapTest.php
@@ -253,6 +253,8 @@ class SitemapTest extends \PHPUnit\Framework\TestCase
             $expectedWrites,
             null
         );
+        $this->storeManagerMock->expects($this->once())->method('setCurrentStore')->with(1);
+
         $model->generateXml();
 
         $this->assertCount(count($expectedFile), $actualData, 'Number of generated files is incorrect');
@@ -360,6 +362,8 @@ class SitemapTest extends \PHPUnit\Framework\TestCase
             $expectedWrites,
             $robotsInfo
         );
+        $this->storeManagerMock->expects($this->once())->method('setCurrentStore')->with(1);
+
         $model->generateXml();
     }
 
diff --git a/app/code/Magento/Store/App/Request/PathInfoProcessor.php b/app/code/Magento/Store/App/Request/PathInfoProcessor.php
index a38ea6d1272e8ab0b4f37dfa179afdebc6bad669..3fa78dc94aa35b34d954161ada04b1660cf3617d 100644
--- a/app/code/Magento/Store/App/Request/PathInfoProcessor.php
+++ b/app/code/Magento/Store/App/Request/PathInfoProcessor.php
@@ -44,7 +44,7 @@ class PathInfoProcessor implements \Magento\Framework\App\Request\PathInfoProces
 
         if ($store->isUseStoreInUrl()) {
             if (!$request->isDirectAccessFrontendName($storeCode) && $storeCode != Store::ADMIN_CODE) {
-                $this->storeManager->setCurrentStore($storeCode);
+                $this->storeManager->setCurrentStore($store->getCode());
                 $pathInfo = '/' . (isset($pathParts[1]) ? $pathParts[1] : '');
                 return $pathInfo;
             } elseif (!empty($storeCode)) {
diff --git a/app/code/Magento/Store/Test/Unit/App/Request/PathInfoProcessorTest.php b/app/code/Magento/Store/Test/Unit/App/Request/PathInfoProcessorTest.php
index f2bd401cea3fbcbad932ebffe33635d05d9ba1a9..7d2fb540149671be1e8236eb3615925489f43ed1 100644
--- a/app/code/Magento/Store/Test/Unit/App/Request/PathInfoProcessorTest.php
+++ b/app/code/Magento/Store/Test/Unit/App/Request/PathInfoProcessorTest.php
@@ -47,6 +47,7 @@ class PathInfoProcessorTest extends \PHPUnit\Framework\TestCase
         )->with(
             'storeCode'
         )->willReturn($store);
+        $store->expects($this->once())->method('getCode')->will($this->returnValue('storeCode'));
         $store->expects($this->once())->method('isUseStoreInUrl')->will($this->returnValue(true));
         $this->_requestMock->expects(
             $this->once()
diff --git a/app/code/Magento/Wishlist/Controller/Index/Update.php b/app/code/Magento/Wishlist/Controller/Index/Update.php
index a79e4aa95ffc59a0f92a0f2d017953caf21d4312..cc3f222c83065cf0bc3e222d5fda2d3bc1026c74 100644
--- a/app/code/Magento/Wishlist/Controller/Index/Update.php
+++ b/app/code/Magento/Wishlist/Controller/Index/Update.php
@@ -83,8 +83,6 @@ class Update extends \Magento\Wishlist\Controller\AbstractIndex
                 )->defaultCommentString()
                 ) {
                     $description = '';
-                } elseif (!strlen($description)) {
-                    $description = $item->getDescription();
                 }
 
                 $qty = null;
diff --git a/dev/tests/acceptance/.env.example b/dev/tests/acceptance/.env.example
index 500d54c3881ef7ae77d622d940e9166999ce8666..7aec49b47bbc7598e567e5a0bfeec46a4f67b940 100644
--- a/dev/tests/acceptance/.env.example
+++ b/dev/tests/acceptance/.env.example
@@ -1,22 +1,55 @@
 #Copyright © Magento, Inc. All rights reserved.
 #See COPYING.txt for license details.
 
+#*** Start of example .env ***#
+#
+# MAGENTO_BASE_URL=http://127.0.0.1:32772/
+#
+# MAGENTO_BACKEND_NAME=admin
+# MAGENTO_ADMIN_USERNAME=admin
+# MAGENTO_ADMIN_PASSWORD=123123q
+#
+# SELENIUM_HOST=127.0.0.1
+# SELENIUM_PORT=4444
+# SELENIUM_PROTOCOL=http
+# SELENIUM_PATH=/wd/hub
+#
+# MAGENTO_RESTAPI_SERVER_HOST=127.0.0.1
+# MAGENTO_RESTAPI_SERVER_PORT=32769
+#
+# TESTS_BP=/Users/First_Last/GitHub/magento2ce/dev/tests/acceptance/tests/functional
+# FW_BP=/Users/First_Last/GitHub/magento2-functional-testing-framework
+# TESTS_MODULE_PATH=/Users/First_Last/GitHub/magento2ce/dev/tests/acceptance/tests/functional/Magento/FunctionalTest
+# MODULE_WHITELIST=Magento_NewModule
+#
+#*** End of example .env ***#
+
+
+#*** Start of .env ***#
+
+#*** Set the base URL for your Magento instance ***#
 MAGENTO_BASE_URL=
 
+#*** Set the Admin Username and Password for your Magento instance ***#
 MAGENTO_BACKEND_NAME=
 MAGENTO_ADMIN_USERNAME=
 MAGENTO_ADMIN_PASSWORD=
 
-#*** Uncomment and set host & port if your dev environment needs different value other than MAGENTO_BASE_URL for Rest Api Requests ***#
+#*** Selenium Server Protocol, Host, Port, and Path, with local defaults. Uncomment and change if not running Selenium locally.
+#SELENIUM_HOST=127.0.0.1
+#SELENIUM_PORT=4444
+#SELENIUM_PROTOCOL=http
+#SELENIUM_PATH=/wd/hub
+
+#*** Uncomment and set host & port if your dev environment needs different value other than MAGENTO_BASE_URL for Rest API Requests ***#
 #MAGENTO_RESTAPI_SERVER_HOST=
 #MAGENTO_RESTAPI_SERVER_PORT=
 
-DB_DSN=
-DB_USERNAME=
-DB_PASSWORD=
-
-#*** uncomment these properties to set up a dev environment with symlinked projects***#
+#*** Uncomment these properties to set up a dev environment with symlinked projects ***#
 #TESTS_BP=
 #FW_BP=
 #TESTS_MODULE_PATH=
-#MODULE_WHITELIST=
\ No newline at end of file
+#MODULE_WHITELIST=
+#MFTF_DEBUG=true
+
+#*** End of .env ***#
\ No newline at end of file
diff --git a/dev/tests/acceptance/README.md b/dev/tests/acceptance/README.md
new file mode 100755
index 0000000000000000000000000000000000000000..6350b9cabcdfa2d86e8cd627ca40a86fd12d0c24
--- /dev/null
+++ b/dev/tests/acceptance/README.md
@@ -0,0 +1,64 @@
+# Magento Functional Testing Framework
+
+----
+
+## System Requirements
+[Magento Functional Testing Framework system requirements](http://devdocs.magento.com/guides/v2.2/magento-functional-testing-framework/getting-started.html#prepare-environment)
+
+## Installation
+To install the Magento Functional Testing Framework, see [Getting Started](http://devdocs.magento.com/guides/v2.2/magento-functional-testing-framework/getting-started.html)
+
+## Contributing
+Contributions can take the form of new components or features, changes to existing features, tests, documentation (such as developer guides, user guides, examples, or specifications), bug fixes, optimizations, or just good suggestions.
+
+To learn about how to make a contribution, click [here][1].
+
+To open an issue, click [here][2].
+
+To suggest documentation improvements, click [here][3].
+
+[1]: <http://devdocs.magento.com/guides/v2.2/magento-functional-testing-framework/contribution-guidelines.html>
+[2]: <https://github.com/magento/magento2-functional-testing-framework/issues>
+[3]: <http://devdocs.magento.com>
+
+### Labels applied by the MFTF team
+
+Refer to the tables with descriptions of each label below. These labels are applied by the MFTF development team to community contributed issues and pull requests, to communicate status, impact, or which team is working on it.
+
+### Pull Request Status
+
+Label| Description
+---|---
+**accept**| The pull request has been accepted and will be merged into mainline code. 
+**reject**| The pull request has been rejected and will not be merged into mainline code. Possible reasons can include but are not limited to: issue has already been fixed in another code contribution, or there is an issue with the code contribution.
+**needsUpdate**| The Magento Team needs additional information from the reporter to properly prioritize and process the pull request.
+
+### Issue Resolution Status
+
+Label| Description
+---|---
+**acknowledged**| The Magento Team has validated the issue and an internal ticket has been created.
+**needsUpdate**| The Magento Team needs additional information from the reporter to properly prioritize and process the issue or pull request.
+**cannot reproduce**| The Magento Team has not confirmed that this issue contains the minimum required information to reproduce. 
+**non-issue**| The Magento Team has not recognised any issue according to provided information.
+
+### Domains Impacted
+
+Label| Description
+---|---
+**PROD**| Affects the Product team (mostly feature requests or business logic change).
+**DOC**| Affects Documentation domain.
+**TECH**| Affects Architect Group (mostly to make decisions around technology changes).
+
+### Type
+
+Label| Description
+---|---
+**bugfix**| The issue or pull request relates to bug fixing.
+**enhancement**| The issue or pull request that raises the MFTF to a higher degree (for example new features, optimization, refactoring, etc).
+
+## License
+
+Each Magento source file included in this distribution is licensed under APL 3.0
+
+Please see LICENSE_APL3.txt for the full text of the APL 3.0 license or contact license@magentocommerce.com for a copy.
diff --git a/dev/tests/acceptance/RoboFile.php b/dev/tests/acceptance/RoboFile.php
index c255e9f06539254f56ae56efd262b9238da0d079..8ae973ea81dc5d61918b13b4a93a325f2f2ff0e6 100644
--- a/dev/tests/acceptance/RoboFile.php
+++ b/dev/tests/acceptance/RoboFile.php
@@ -21,8 +21,8 @@ class RoboFile extends \Robo\Tasks
     function cloneFiles()
     {
         $this->_exec('cp -vn .env.example .env');
-        $this->_exec('cp -vn codeception.dist.yml codeception.yml');
-        $this->_exec('cp -vn tests/functional.suite.dist.yml tests/functional.suite.yml');
+        $this->_exec('cp -vf codeception.dist.yml codeception.yml');
+        $this->_exec('cp -vf tests'. DIRECTORY_SEPARATOR .'functional.suite.dist.yml tests'. DIRECTORY_SEPARATOR .'functional.suite.yml');
     }
 
     /**
@@ -34,7 +34,7 @@ class RoboFile extends \Robo\Tasks
     function buildProject()
     {
         $this->cloneFiles();
-        $this->_exec('./vendor/bin/codecept build');
+        $this->_exec('vendor'. DIRECTORY_SEPARATOR .'bin'. DIRECTORY_SEPARATOR .'codecept build');
     }
 
     /**
@@ -72,75 +72,45 @@ class RoboFile extends \Robo\Tasks
     }
 
     /**
-     * Run all Functional tests using the Chrome environment.
+     * Run all Functional tests.
      *
      * @return void
      */
-    function chrome()
+    function functional()
     {
-        $this->_exec('./vendor/bin/codecept run functional --env chrome --skip-group skip');
+        $this->_exec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run functional --skip-group skip');
     }
 
     /**
-     * Run all Functional tests using the FireFox environment.
-     *
-     * @return void
-     */
-    function firefox()
-    {
-        $this->_exec('./vendor/bin/codecept run functional --env firefox --skip-group skip');
-    }
-
-    /**
-     * Run all Functional tests using the PhantomJS environment.
-     *
-     * @return void
-     */
-    function phantomjs()
-    {
-        $this->_exec('./vendor/bin/codecept run functional --env phantomjs --skip-group skip');
-    }
-
-    /**
-     * Run all Functional tests using the Chrome Headless environment.
-     *
-     * @return void
-     */
-    function headless()
-    {
-        $this->_exec('./vendor/bin/codecept run functional --env headless --skip-group skip');
-    }
-
-    /**
-     * Run all Tests with the specified @group tag, excluding @group 'skip', using the Chrome environment.
+     * Run all Tests with the specified @group tag, excluding @group 'skip'.
      *
      * @param string $args
      * @return void
      */
     function group($args = '')
     {
-        $this->taskExec('./vendor/bin/codecept run functional --verbose --steps --env chrome --skip-group skip --group')->args($args)->run();
+        $this->taskExec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run functional --verbose --steps --skip-group skip --group')->args($args)->run();
     }
 
     /**
-     * Run all Functional tests located under the Directory Path provided using the Chrome environment.
+     * Run all Functional tests located under the Directory Path provided.
      *
      * @param string $args
      * @return void
      */
     function folder($args = '')
     {
-        $this->taskExec('./vendor/bin/codecept run functional --env chrome')->args($args)->run();
+        $this->taskExec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run functional')->args($args)->run();
     }
 
     /**
-     * Run all Tests marked with the @group tag 'example', using the Chrome environment.
+     * Run all Tests marked with the @group tag 'example'.
      *
      * @return void
      */
     function example()
     {
-        $this->_exec('./vendor/bin/codecept run --env chrome --group example --skip-group skip');
+        $this->_exec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run --group example --skip-group skip');
     }
 
     /**
@@ -150,7 +120,7 @@ class RoboFile extends \Robo\Tasks
      */
     function allure1Generate()
     {
-        return $this->_exec('allure generate tests/_output/allure-results/ -o tests/_output/allure-report/');
+        return $this->_exec('allure generate tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-results'. DIRECTORY_SEPARATOR .' -o tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .'');
     }
 
     /**
@@ -160,7 +130,7 @@ class RoboFile extends \Robo\Tasks
      */
     function allure2Generate()
     {
-        return $this->_exec('allure generate tests/_output/allure-results/ --output tests/_output/allure-report/ --clean');
+        return $this->_exec('allure generate tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-results'. DIRECTORY_SEPARATOR .' --output tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .' --clean');
     }
 
     /**
@@ -170,7 +140,7 @@ class RoboFile extends \Robo\Tasks
      */
     function allure1Open()
     {
-        $this->_exec('allure report open --report-dir tests/_output/allure-report/');
+        $this->_exec('allure report open --report-dir tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .'');
     }
 
     /**
@@ -180,7 +150,7 @@ class RoboFile extends \Robo\Tasks
      */
     function allure2Open()
     {
-        $this->_exec('allure open --port 0 tests/_output/allure-report/');
+        $this->_exec('allure open --port 0 tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .'');
     }
 
     /**
diff --git a/dev/tests/acceptance/composer.json b/dev/tests/acceptance/composer.json
new file mode 100755
index 0000000000000000000000000000000000000000..a380c325a5e281fdd1179debb9b015406adc515b
--- /dev/null
+++ b/dev/tests/acceptance/composer.json
@@ -0,0 +1,35 @@
+{
+    "name": "magento/magento2ce-functional-tests",
+    "description": "Magento 2 (Open Source) Functional Tests",
+    "type": "project",
+    "version": "1.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "repositories": [
+        {
+            "type": "git",
+            "url": "git@github.com:magento/magento2-functional-testing-framework.git"
+        }
+    ],
+    "require": {
+        "allure-framework/allure-codeception": "dev-master#af40af5ae2b717618a42fe3e137d75878508c75d",
+        "codeception/codeception": "~2.3.4",
+        "consolidation/robo": "^1.0.0",
+        "symfony/process": ">=2.7 <3.4",
+        "henrikbjorn/lurker": "^1.2",
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0",
+        "vlucas/phpdotenv": "~2.4"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\": "tests/functional/Magento"
+        }
+    },
+    "prefer-stable": true
+}
diff --git a/dev/tests/acceptance/tests/_bootstrap.php b/dev/tests/acceptance/tests/_bootstrap.php
index 80392c9f53fa504323a4ba70b25e05aa4dfcf9d2..4313999476197f1eece0d41ec2cc623defe707ba 100644
--- a/dev/tests/acceptance/tests/_bootstrap.php
+++ b/dev/tests/acceptance/tests/_bootstrap.php
@@ -22,3 +22,9 @@ if (file_exists(PROJECT_ROOT . '/.env')) {
     }
 }
 defined('FW_BP') || define('FW_BP', PROJECT_ROOT . $RELATIVE_FW_PATH);
+
+// add the debug flag here
+$debug_mode = $_ENV['MFTF_DEBUG'] ?? false;
+if (!(bool)$debug_mode && extension_loaded('xdebug')) {
+    xdebug_disable();
+}
diff --git a/dev/tests/acceptance/tests/_suite/sampleSuite.xml b/dev/tests/acceptance/tests/_suite/sampleSuite.xml
index f9b142d89c8a108349a2964e34146bbc20ca88c5..4172b526683d70b25725b6d3eea4db387e1d1a3a 100644
--- a/dev/tests/acceptance/tests/_suite/sampleSuite.xml
+++ b/dev/tests/acceptance/tests/_suite/sampleSuite.xml
@@ -9,14 +9,14 @@
 <suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Suite/etc/suiteSchema.xsd">
     <suite name="mySuite">
         <before>
-            <createData entity="_defaultCategory" mergeKey="createCategory"/>
-            <createData entity="_defaultProduct" mergeKey="createProduct">
+            <createData entity="_defaultCategory" stepKey="createCategory"/>
+            <createData entity="_defaultProduct" stepKey="createProduct">
                 <required-entity createDataKey="createCategory"/>
             </createData>
         </before>
         <after>
-            <deleteData mergeKey="deleteMyProduct" createDataKey="createProduct"/>
-            <deleteData mergeKey="deleteMyCategory" createDataKey="createCategory"/>
+            <deleteData stepKey="deleteMyProduct" createDataKey="createProduct"/>
+            <deleteData stepKey="deleteMyCategory" createDataKey="createCategory"/>
         </after>
         <include>
             <group name="example"/>
diff --git a/dev/tests/acceptance/tests/functional.suite.dist.yml b/dev/tests/acceptance/tests/functional.suite.dist.yml
index afba145ca9a0c9d4763ed2624f6038da2988fdea..f15d66d983a714920a0f0c0c647163e2a9d667c1 100644
--- a/dev/tests/acceptance/tests/functional.suite.dist.yml
+++ b/dev/tests/acceptance/tests/functional.suite.dist.yml
@@ -31,3 +31,11 @@ modules:
             username: "%MAGENTO_ADMIN_USERNAME%"
             password: "%MAGENTO_ADMIN_PASSWORD%"
             pageload_timeout: 30
+            host: %SELENIUM_HOST%
+            port: %SELENIUM_PORT%
+            protocol: %SELENIUM_PROTOCOL%
+            path: %SELENIUM_PATH%
+            capabilities:
+              chromeOptions:
+                args: ["--start-maximized", "--disable-extensions", "--enable-automation"]
+
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/README.md
index 4a84a064d1c7f6f440566d8b66751465c3173dec..c9275af071fa4e93ec6374dc01ab65b03198e9e4 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_AdminNotification** Module.
+The Functional Tests Module for **Magento_AdminNotification** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/composer.json
index 328161117f78ca6d726e732a229e4acff3b3175f..31ce654f6c78075b654a51f4b799eedb15c913a3 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification/composer.json
@@ -1,46 +1,35 @@
 {
-    "name": "magento/magento2-functional-test-admin-notification",
-    "description": "Magento 2 Acceptance Test Module Admin Notification",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "name": "magento/magento2-functional-test-module-admin-notification",
+    "description": "Magento 2 Functional Test Module Admin Notification",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
         "psr-4": {
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\AdminNotification\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/AdminNotification"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdminNotification"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/README.md
index 224e08d3e84c2bd33a2662d37d6041e57fba674b..2f01efe59522b317d4cc971a0a16f55433af025a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_AdvancedPricingImportExport** Module.
+The Functional Tests Module for **Magento_AdvancedPricingImportExport** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/composer.json
index 32562af20944b50f2588f3514da4f2c6276c649e..7cba5e091bc0ae850c789f9b9ab841540880ec39 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport/composer.json
@@ -1,55 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-advanced-pricing-import-export",
-    "description": "Magento 2 Acceptance Test Module Advanced Pricing Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-catalog-import-export": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Advanced Pricing Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\AdvancedPricingImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/AdvancedPricingImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Analytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Analytics/composer.json
index 21e343f4169279c9d93cb97fbb15b7153804a218..9245dc6e40766e0922bcff7f42d229d4fb73cc41 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Analytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Analytics/composer.json
@@ -1,45 +1,28 @@
 {
     "name": "magento/magento2-functional-test-module-analytics",
     "description": "Magento 2 Acceptance Test Module Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-integration": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-integration": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Analytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/README.md
index b540c210faf9285268c8e8320e5e9a44cec240c5..c21edf02d3bc2f0882a4d8f4ebc2584924c9e9d9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Authorization** Module.
+The Functional Tests Module for **Magento_Authorization** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/composer.json
index 6c0ac32008789a0e10a91066fd67186804a099b7..e69220b9ca44dc028c9d8112c0ce60ea27c016c9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-authorization",
-    "description": "Magento 2 Acceptance Test Module Authorization",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Authorization",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Authorization\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Authorization"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorization"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/README.md
index 86a31896a223d3b4484ee6baa959d4ddeee1957b..c3a550699f66178aa532a274aec84aaef92e0515 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Authorizenet** Module.
+The Functional Tests Module for **Magento_Authorizenet** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/composer.json
index 898a84016c6b12be74378d90f1164615e6194f84..9b67e3ea371541eeb6cbcbf41a5b22d094802d3c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet/composer.json
@@ -1,55 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-authorizenet",
-    "description": "Magento 2 Acceptance Test Module Authorizenet",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Authorizenet",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Authorizenet\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Authorizenet"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Authorizenet"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/Cest/AdminLoginCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/Cest/AdminLoginCest.xml
index a50d75c167c9c73409f57bb75fcc58799382fb58..fbce6aa6388ddbe99f9382449f74573ef442d1c6 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/Cest/AdminLoginCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/Cest/AdminLoginCest.xml
@@ -21,16 +21,12 @@
                 <testCaseId value="MAGETWO-71572"/>
                 <group value="example"/>
                 <group value="login"/>
-                <env value="chrome"/>
-                <env value="firefox"/>
-                <env value="phantomjs"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="amOnAdminLoginPage"/>
-            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" mergeKey="fillUsername"/>
-            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickOnSignIn"/>
-            <seeInCurrentUrl url="{{AdminLoginPage.url}}" mergeKey="seeAdminLoginUrl"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="amOnAdminLoginPage"/>
+            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" stepKey="fillUsername"/>
+            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickOnSignIn"/>
+            <seeInCurrentUrl url="{{AdminLoginPage.url}}" stepKey="seeAdminLoginUrl"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/README.md
index 4cbe742ea6baa0ab05f741d21cc2ac8a24fa59d0..0a7d14223c0b2afeb23fde5ebf67d21f8195f67b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Backend** Module.
+The Functional Tests Module for **Magento_Backend** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/composer.json
index 6aa559de5c3df2b99d56b5f82602521dbf176092..ffebc321c4dee1ac8ee62b67b6084f66c5f90c2e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend/composer.json
@@ -1,63 +1,47 @@
 {
     "name": "magento/magento2-functional-test-module-backend",
-    "description": "Magento 2 Acceptance Test Module Backend",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-developer": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-reports": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-user": "dev-master",
-        "magento/magento2-functional-test-module-security": "dev-master",
-        "magento/magento2-functional-test-module-backup": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-translation": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-require-js": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Backend",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backup": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-developer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-reports": "100.0.0-dev",
+        "magento/magento2-functional-test-module-require-js": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-security": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-translation": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-user": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Backend\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Backend"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backend"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/README.md
index 962fdffd88da5be7304c11ca25842fd693ed9141..dc2a3ab06f9d3792fc1f2e9e5208fb9380dbebfc 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Backup** Module.
+The Functional Tests Module for **Magento_Backup** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/composer.json
index 95dc878ef341ea5af1e4771f6022554983d3b9ca..d4f0c49d2b1a8362de3ed0173942d27c0abb8974 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup/composer.json
@@ -1,50 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-backup",
-    "description": "Magento 2 Acceptance Test Module Backup",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backup": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Backup",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cron": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Backup\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Backup"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Backup"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/README.md
index a4217e846b529c257b6d9473423df7bad58dffc5..b0b637c9d9621b0be61badb67097a4ca7647afa7 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Braintree** Module.
+The Functional Tests Module for **Magento_Braintree** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/composer.json
index c9eeab4fdb5d5c80c0e9224e95461fdbcbbd55cc..e66481c501f0675e6b6db0baa964476bc2fbd29a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree/composer.json
@@ -1,60 +1,44 @@
 {
     "name": "magento/magento2-functional-test-module-braintree",
-    "description": "Magento 2 Acceptance Test Module Braintree",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-vault": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-paypal": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Braintree",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-instant-purchase": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-paypal": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-vault": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Braintree\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Braintree"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Braintree"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/README.md
index 95794907f2cfd1431537cc215d0bffe33479b897..9579aec287f4cfb47689f151839cafa1de63c1e8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Bundle** Module.
+The Functional Tests Module for **Magento_Bundle** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/composer.json
index 649a2f29700d2ff1857ee368e8f00b5744a07047..cab7dce6a95e5944f15e34dbb431177220579eb7 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle/composer.json
@@ -1,63 +1,46 @@
 {
     "name": "magento/magento2-functional-test-module-bundle",
-    "description": "Magento 2 Acceptance Test Module Bundle",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-catalog-rule": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-gift-message": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Bundle",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-gift-message": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Bundle\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Bundle"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Bundle"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/README.md
index 83453308c0c5c0dba518811deec572b8eacfcb3b..dc155d12f30db01660ecebb97550fdb4238467cd 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_BundleImportExport** Module.
+The Functional Tests Module for **Magento_BundleImportExport** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/composer.json
index 2abf6a22a8edc54d294e40fcedcff75dfea13c41..9fd81822a18036c4a9cbb135129283e4d9243007 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-bundle-import-export",
-    "description": "Magento 2 Acceptance Test Module Bundle Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-catalog-import-export": "dev-master",
-        "magento/magento2-functional-test-module-bundle": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Bundle Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-bundle": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\BundleImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/BundleImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/BundleImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/README.md
index 34d8ae9c366667695388f34d1acbe54392a7201f..47571bdb7f212db6796a5fec3e746f84812d170b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CacheInvalidate** Module.
+The Functional Tests Module for **Magento_CacheInvalidate** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/composer.json
index 9ac9043f1b1d2ba828db6a65bfa73485e3893750..e8c58ac7a2d0a2ff8a69bd48321af1f0712ffbb9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-cache-invalidate",
-    "description": "Magento 2 Acceptance Test Module Cache Invalidate",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-page-cache": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Cache Invalidate",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CacheInvalidate\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CacheInvalidate"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CacheInvalidate"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/README.md
index 3eee7b92bd32d71d422724454465617059a9c8df..f0d35613be75d5dfed38148a5e10a461b36872b5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Captcha** Module.
+The Functional Tests Module for **Magento_Captcha** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/composer.json
index 60fff5eb2fecf6d0cf9e09b769dd255a70e574d4..5c3f0acfc8fcb966cc7fb6d224e0ca18604f25ed 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-captcha",
-    "description": "Magento 2 Acceptance Test Module Captcha",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Captcha",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Captcha\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Captcha"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Captcha"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateCategoryCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateCategoryCest.xml
index 550e668b0808f9f09cd975edce496fe1b495997a..1d12792785104f95494c7a1faf5ddd5e7bf0dbed 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateCategoryCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateCategoryCest.xml
@@ -14,7 +14,7 @@
             <stories value="Create a Category via the Admin"/>
         </annotations>
         <after>
-            <amOnPage url="admin/admin/auth/logout/" mergeKey="amOnLogoutPage"/>
+            <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/>
         </after>
         <test name="CreateCategoryViaAdmin">
             <annotations>
@@ -23,27 +23,21 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="MAGETWO-72102"/>
                 <group value="category"/>
-                <env value="chrome"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="amOnAdminLoginPage"/>
-            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" mergeKey="fillUsername"/>
-            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickOnSignIn"/>
-            <amOnPage url="{{AdminCategoryPage.url}}" mergeKey="navigateToCategoryPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <click selector="{{AdminCategorySidebarActionSection.AddSubcategoryButton}}" mergeKey="clickOnAddSubCategory"/>
-            <fillField selector="{{AdminCategoryBasicFieldSection.CategoryNameInput}}" userInput="{{SimpleSubCategory.name}}" mergeKey="enterCategoryName"/>
-            <click selector="{{AdminCategorySEOSection.SectionHeader}}" mergeKey="openSEO"/>
-            <fillField selector="{{AdminCategorySEOSection.UrlKeyInput}}" userInput="{{SimpleSubCategory.name_lwr}}" mergeKey="enterURLKey"/>
-            <click selector="{{AdminCategoryMainActionsSection.SaveButton}}" mergeKey="saveCategory"/>
-            <seeElement selector="{{AdminCategoryMessagesSection.SuccessMessage}}" mergeKey="assertSuccess"/>
+            <loginAsAdmin stepKey="loginAsAdmin"/>
+            <amOnPage url="{{AdminCategoryPage.url}}" stepKey="navigateToCategoryPage"/>
+            <waitForPageLoad time="30" stepKey="waitForPageLoad1"/>
+            <click selector="{{AdminCategorySidebarActionSection.AddSubcategoryButton}}" stepKey="clickOnAddSubCategory"/>
+            <fillField selector="{{AdminCategoryBasicFieldSection.CategoryNameInput}}" userInput="{{SimpleSubCategory.name}}" stepKey="enterCategoryName"/>
+            <click selector="{{AdminCategorySEOSection.SectionHeader}}" stepKey="openSEO"/>
+            <fillField selector="{{AdminCategorySEOSection.UrlKeyInput}}" userInput="{{SimpleSubCategory.name_lwr}}" stepKey="enterURLKey"/>
+            <click selector="{{AdminCategoryMainActionsSection.SaveButton}}" stepKey="saveCategory"/>
+            <seeElement selector="{{AdminCategoryMessagesSection.SuccessMessage}}" stepKey="assertSuccess"/>
 
             <!-- Literal URL below, need to refactor line + StorefrontCategoryPage when support for variable URL is implemented-->
-            <amOnPage url="/{{SimpleSubCategory.name_lwr}}.html" mergeKey="goToCategoryFrontPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad2"/>
-            <seeInTitle userInput="{{SimpleSubCategory.name}}" mergeKey="assertTitle"/>
-            <see selector="{{StorefrontCategoryMainSection.CategoryTitle}}" userInput="{{SimpleSubCategory.name_lwr}}" mergeKey="assertInfo1"/>
+            <amOnPage url="/{{SimpleSubCategory.name_lwr}}.html" stepKey="goToCategoryFrontPage"/>
+            <seeInTitle userInput="{{SimpleSubCategory.name}}" stepKey="assertTitle"/>
+            <see selector="{{StorefrontCategoryMainSection.CategoryTitle}}" userInput="{{SimpleSubCategory.name_lwr}}" stepKey="assertInfo1"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateSimpleProductCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateSimpleProductCest.xml
index f649580554eaa8703a9e77627eecfbb243172e9f..cbf0cdb4d902c4c031ed25aef8676e9257ac1357 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateSimpleProductCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/Cest/AdminCreateSimpleProductCest.xml
@@ -14,7 +14,7 @@
             <stories value="Create a Simple Product via Admin"/>
         </annotations>
         <before>
-            <createData entity="_defaultCategory" mergeKey="createPreReqCategory"/>
+            <createData entity="_defaultCategory" stepKey="createPreReqCategory"/>
         </before>
         <test name="CreateSimpleProductViaAdmin">
             <annotations>
@@ -23,48 +23,46 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="MAGETWO-23414"/>
                 <group value="product"/>
-                <env value="chrome"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="navigateToAdmin"/>
-            <fillField userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" selector="{{AdminLoginFormSection.username}}" mergeKey="fillUsername"/>
-            <fillField userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" selector="{{AdminLoginFormSection.password}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickLogin"/>
-            <amOnPage url="{{AdminProductIndexPage.url}}" mergeKey="navigateToProductIndex"/>
-            <click selector="{{AdminProductGridActionSection.addProductToggle}}" mergeKey="clickAddProductDropdown"/>
-            <click selector="{{AdminProductGridActionSection.addSimpleProduct}}" mergeKey="clickAddSimpleProduct"/>
-            <fillField userInput="{{_defaultProduct.name}}" selector="{{AdminProductFormSection.productName}}" mergeKey="fillName"/>
-            <fillField userInput="{{_defaultProduct.sku}}" selector="{{AdminProductFormSection.productSku}}" mergeKey="fillSKU"/>
-            <fillField userInput="{{_defaultProduct.price}}" selector="{{AdminProductFormSection.productPrice}}" mergeKey="fillPrice"/>
-            <fillField userInput="{{_defaultProduct.quantity}}" selector="{{AdminProductFormSection.productQuantity}}" mergeKey="fillQuantity"/>
-            <searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[$$createPreReqCategory.name$$]" mergeKey="searchAndSelectCategory"/>
-            <click selector="{{AdminProductSEOSection.sectionHeader}}" mergeKey="openSeoSection"/>
-            <fillField userInput="{{_defaultProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" mergeKey="fillUrlKey"/>
-            <click selector="{{AdminProductFormActionSection.saveButton}}" mergeKey="saveProduct"/>
-            <seeElement selector="{{AdminProductMessagesSection.successMessage}}" mergeKey="assertSaveMessageSuccess"/>
-            <seeInField userInput="{{_defaultProduct.name}}" selector="{{AdminProductFormSection.productName}}" mergeKey="assertFieldName"/>
-            <seeInField userInput="{{_defaultProduct.sku}}" selector="{{AdminProductFormSection.productSku}}" mergeKey="assertFieldSku"/>
-            <seeInField userInput="{{_defaultProduct.price}}" selector="{{AdminProductFormSection.productPrice}}" mergeKey="assertFieldPrice"/>
-            <click selector="{{AdminProductSEOSection.sectionHeader}}" mergeKey="openSeoSectionAssert"/>
-            <seeInField userInput="{{_defaultProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" mergeKey="assertFieldUrlKey"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="navigateToAdmin"/>
+            <fillField userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" selector="{{AdminLoginFormSection.username}}" stepKey="fillUsername"/>
+            <fillField userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" selector="{{AdminLoginFormSection.password}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
+            <amOnPage url="{{AdminProductIndexPage.url}}" stepKey="navigateToProductIndex"/>
+            <click selector="{{AdminProductGridActionSection.addProductToggle}}" stepKey="clickAddProductDropdown"/>
+            <click selector="{{AdminProductGridActionSection.addSimpleProduct}}" stepKey="clickAddSimpleProduct"/>
+            <fillField userInput="{{_defaultProduct.name}}" selector="{{AdminProductFormSection.productName}}" stepKey="fillName"/>
+            <fillField userInput="{{_defaultProduct.sku}}" selector="{{AdminProductFormSection.productSku}}" stepKey="fillSKU"/>
+            <fillField userInput="{{_defaultProduct.price}}" selector="{{AdminProductFormSection.productPrice}}" stepKey="fillPrice"/>
+            <fillField userInput="{{_defaultProduct.quantity}}" selector="{{AdminProductFormSection.productQuantity}}" stepKey="fillQuantity"/>
+            <searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[$$createPreReqCategory.name$$]" stepKey="searchAndSelectCategory"/>
+            <click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSeoSection"/>
+            <fillField userInput="{{_defaultProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="fillUrlKey"/>
+            <click selector="{{AdminProductFormActionSection.saveButton}}" stepKey="saveProduct"/>
+            <seeElement selector="{{AdminProductMessagesSection.successMessage}}" stepKey="assertSaveMessageSuccess"/>
+            <seeInField userInput="{{_defaultProduct.name}}" selector="{{AdminProductFormSection.productName}}" stepKey="assertFieldName"/>
+            <seeInField userInput="{{_defaultProduct.sku}}" selector="{{AdminProductFormSection.productSku}}" stepKey="assertFieldSku"/>
+            <seeInField userInput="{{_defaultProduct.price}}" selector="{{AdminProductFormSection.productPrice}}" stepKey="assertFieldPrice"/>
+            <click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSeoSectionAssert"/>
+            <seeInField userInput="{{_defaultProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="assertFieldUrlKey"/>
 
             <!-- Go to storefront category page, assert product visibility -->
-            <amOnPage url="{{StorefrontCategoryPage.url($$createPreReqCategory.name$$)}}" mergeKey="navigateToCategoryPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <see userInput="{{_defaultProduct.name}}" mergeKey="assertProductPresent"/>
-            <see userInput="{{_defaultProduct.price}}" mergeKey="assertProductPricePresent"/>
+            <amOnPage url="{{StorefrontCategoryPage.url($$createPreReqCategory.name$$)}}" stepKey="navigateToCategoryPage"/>
+            <waitForPageLoad stepKey="waitForPageLoad1"/>
+            <see userInput="{{_defaultProduct.name}}" stepKey="assertProductPresent"/>
+            <see userInput="{{_defaultProduct.price}}" stepKey="assertProductPricePresent"/>
 
             <!-- Go to storefront product page, assert product visibility -->
-            <amOnPage url="{{_defaultProduct.urlKey}}.html" mergeKey="navigateToProductPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad2"/>
-            <seeInTitle userInput="{{_defaultProduct.name}}" mergeKey="assertProductNameTitle"/>
-            <see userInput="{{_defaultProduct.name}}" selector="{{StorefrontProductInfoMainSection.productName}}" mergeKey="assertProductName"/>
-            <see userInput="{{_defaultProduct.price}}" selector="{{StorefrontProductInfoMainSection.productPrice}}" mergeKey="assertProductPrice"/>
-            <see userInput="{{_defaultProduct.sku}}" selector="{{StorefrontProductInfoMainSection.productSku}}" mergeKey="assertProductSku"/>
+            <amOnPage url="{{_defaultProduct.urlKey}}.html" stepKey="navigateToProductPage"/>
+            <waitForPageLoad stepKey="waitForPageLoad2"/>
+            <seeInTitle userInput="{{_defaultProduct.name}}" stepKey="assertProductNameTitle"/>
+            <see userInput="{{_defaultProduct.name}}" selector="{{StorefrontProductInfoMainSection.productName}}" stepKey="assertProductName"/>
+            <see userInput="{{_defaultProduct.price}}" selector="{{StorefrontProductInfoMainSection.productPrice}}" stepKey="assertProductPrice"/>
+            <see userInput="{{_defaultProduct.sku}}" selector="{{StorefrontProductInfoMainSection.productSku}}" stepKey="assertProductSku"/>
         </test>
         <after>
-            <deleteData createDataKey="createPreReqCategory" mergeKey="deletePreReqCategory"/>
-            <amOnPage url="admin/admin/auth/logout/" mergeKey="amOnLogoutPage"/>
+            <deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/>
+            <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/>
         </after>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/README.md
index 308f84b867aff7498603628b94b268ddea559dbe..41bb2b0d6042a4c40c5e845fb13623ffb79a94e6 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Catalog** Module.
+The Functional Tests Module for **Magento_Catalog** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/composer.json
index 53c1bafbe43ad09430a74091bc1fdeb81f83d558..a1dc628f04c2915778b871fb5d34c59e5d3ce82e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog/composer.json
@@ -1,71 +1,54 @@
 {
     "name": "magento/magento2-functional-test-module-catalog",
-    "description": "Magento 2 Acceptance Test Module Catalog",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-indexer": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-wishlist": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-msrp": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-catalog-rule": "dev-master",
-        "magento/magento2-functional-test-module-product-alert": "dev-master",
-        "magento/magento2-functional-test-module-url-rewrite": "dev-master",
-        "magento/magento2-functional-test-module-catalog-url-rewrite": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-cookie": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-url-rewrite": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-indexer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-msrp": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-product-alert": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-url-rewrite": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev",
+        "magento/magento2-functional-test-module-wishlist": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Catalog\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Catalog"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Catalog"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogAnalytics/composer.json
index 3b45c0b6b63c77b6be7208f70bc8bf529f6e9492..b742218731f849efc617745a3ab709d8b900f67e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogAnalytics/composer.json
@@ -1,42 +1,25 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-analytics",
     "description": "Magento 2 Acceptance Test Module Catalog Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogAnalytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogImportExport/composer.json
index 81ee5ddcfda7d32ca382ca864d32b2382cd92b86..3f1d805ca27579d767478c6f1a438311ce3bfa0f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogImportExport/composer.json
@@ -1,57 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-import-export",
-    "description": "Magento 2 Acceptance Test Module Catalog Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-url-rewrite": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-url-rewrite": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/README.md
index 03f581dfd23d8409d1108228b1f98bc7271f554e..512a5f319fed4f97239822979ba26070a6da2d9d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CatalogInventory** Module.
+The Functional Tests Module for **Magento_CatalogInventory** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/composer.json
index de845f8f5a88acbab8b660ef01efc58c4098f1bf..4060f8906efd7292464c22aaff91173764488fb5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory/composer.json
@@ -1,55 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-inventory",
-    "description": "Magento 2 Acceptance Test Module Catalog Inventory",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Inventory",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogInventory\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogInventory"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogInventory"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/README.md
index 0e318cd24b0699970140b356502afe23866c91c3..5c67ac5b0ba9cac9669c186ad5a75e3ad6a18e48 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CatalogRule** Module.
+The Functional Tests Module for **Magento_CatalogRule** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/composer.json
index 3952c494c78b3e919ff943c209709e72a41840ec..3d0fb94a4df09b0af31e05eb0ac1b960cd419bf6 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule/composer.json
@@ -1,55 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-rule",
-    "description": "Magento 2 Acceptance Test Module Catalog Rule",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-rule": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Rule",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogRule\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogRule"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRule"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/README.md
index 81b8ad8679961b28fa5ee45936e39e3ca18ce665..ed2796d211d2532a6430f9132e6887c1571eda7c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CatalogRuleConfigurable** Module.
+The Functional Tests Module for **Magento_CatalogRuleConfigurable** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/composer.json
index a20e6b7a3895dadfec2566743a80d673d70b8305..0bee96876c84db8b1a9edb56fb1a4cbd0c2d499f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-rule-configurable",
-    "description": "Magento 2 Acceptance Test Module Catalog Rule Configurable",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-configurable-product": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-rule": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Rule Configurable",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-configurable-product": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogRuleConfigurable\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogRuleConfigurable"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/README.md
index 85ed3bcf15d6556a2f96376444a68d49b6b39f11..092e7bc142598c5f29e7e147d47194cf466d7f14 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CatalogSearch** Module.
+The Functional Tests Module for **Magento_CatalogSearch** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/composer.json
index cb88f4139c886c2242b032da70503c2457fbce5a..0115d362d3b7f0bd402180a87a551bc79d143893 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch/composer.json
@@ -1,58 +1,41 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-search",
-    "description": "Magento 2 Acceptance Test Module Catalog Search",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-search": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Search",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-search": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogSearch\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogSearch"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogSearch"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogUrlRewrite/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogUrlRewrite/composer.json
index a563bff42a49146eddd3f31b6377a3250ec0e59d..a51be94ebafb745b09684a07f842b87a85709cd1 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogUrlRewrite/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogUrlRewrite/composer.json
@@ -1,56 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-url-rewrite",
-    "description": "Magento 2 Acceptance Test Module Catalog Url Rewrite",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-import-export": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-url-rewrite": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Url Rewrite",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-url-rewrite": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogUrlRewrite\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogUrlRewrite"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogUrlRewrite"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/README.md
index b05124ac4bb3b1d0c0e0caa4ed5a610e2048cc59..43aa796462c76e301248054e983cad893ac7b026 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CatalogWidget** Module.
+The Functional Tests Module for **Magento_CatalogWidget** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/composer.json
index 457c7c30dff312fc453326f6434906887fbb7c85..8ff933bd50a9a30867bc8c111e6e9e391e0bfed1 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget/composer.json
@@ -1,56 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-catalog-widget",
-    "description": "Magento 2 Acceptance Test Module Catalog Widget",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-rule": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-wishlist": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Catalog Widget",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev",
+        "magento/magento2-functional-test-module-wishlist": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CatalogWidget\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CatalogWidget"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CatalogWidget"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontCustomerCheckoutCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontCustomerCheckoutCest.xml
index 5e97a6ab03b1b5f02f37913a0ea86962b9449d55..4531bfb84dcc998b15dd908db0795c75b0dd7427 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontCustomerCheckoutCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontCustomerCheckoutCest.xml
@@ -14,16 +14,16 @@
             <stories value="Checkout via the Admin"/>
         </annotations>
         <before>
-            <createData entity="SimpleSubCategory" mergeKey="simplecategory"/>
-            <createData entity="SimpleProduct" mergeKey="simpleproduct1">
+            <createData entity="SimpleSubCategory" stepKey="simplecategory"/>
+            <createData entity="SimpleProduct" stepKey="simpleproduct1">
                 <required-entity createDataKey="simplecategory"/>
             </createData>
-            <createData entity="Simple_US_Customer" mergeKey="simpleuscustomer"/>
+            <createData entity="Simple_US_Customer" stepKey="simpleuscustomer"/>
         </before>
         <after>
-            <deleteData createDataKey="simpleproduct1" mergeKey="deleteProduct1"/>
-            <deleteData createDataKey="simplecategory" mergeKey="deleteCategory"/>
-            <deleteData createDataKey="simpleuscustomer" mergeKey="deleteCustomer"/>
+            <deleteData createDataKey="simpleproduct1" stepKey="deleteProduct1"/>
+            <deleteData createDataKey="simplecategory" stepKey="deleteCategory"/>
+            <deleteData createDataKey="simpleuscustomer" stepKey="deleteCustomer"/>
         </after>
         <test name="CustomerCheckoutTest">
             <annotations>
@@ -32,56 +32,54 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="#"/>
                 <group value="checkout"/>
-                <env value="chrome"/>
-                <env value="headless"/>
             </annotations>
 
-            <amOnPage mergeKey="s1"  url="customer/account/login/"/>
-            <fillField  mergeKey="s3" userInput="$$simpleuscustomer.email$$" selector="{{StorefrontCustomerSignInFormSection.emailField}}"/>
-            <fillField  mergeKey="s5" userInput="$$simpleuscustomer.password$$" selector="{{StorefrontCustomerSignInFormSection.passwordField}}"/>
-            <click mergeKey="s7" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
-            <waitForPageLoad mergeKey="s9"/>
+            <amOnPage stepKey="s1"  url="customer/account/login/"/>
+            <fillField  stepKey="s3" userInput="$$simpleuscustomer.email$$" selector="{{StorefrontCustomerSignInFormSection.emailField}}"/>
+            <fillField  stepKey="s5" userInput="$$simpleuscustomer.password$$" selector="{{StorefrontCustomerSignInFormSection.passwordField}}"/>
+            <click stepKey="s7" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
+            <waitForPageLoad stepKey="s9"/>
 
-            <amOnPage mergeKey="s11" url="/$$simplecategory.name$$.html" />
-            <moveMouseOver mergeKey="s15" selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" />
-            <click mergeKey="s17" selector="{{StorefrontCategoryMainSection.AddToCartBtn}}" />
-            <waitForElementVisible mergeKey="s21" selector="{{StorefrontCategoryMainSection.SuccessMsg}}" time="30" />
-            <see mergeKey="s23" selector="{{StorefrontCategoryMainSection.SuccessMsg}}" userInput="You added $$simpleproduct1.name$$ to your shopping cart."/>
-            <see mergeKey="s25" selector="{{StorefrontMiniCartSection.quantity}}" userInput="1" />
-            <click mergeKey="s27" selector="{{StorefrontMiniCartSection.show}}" />
-            <click mergeKey="s31" selector="{{StorefrontMiniCartSection.goToCheckout}}" />
-            <waitForPageLoad mergeKey="s33"/>
-            <waitForLoadingMaskToDisappear mergeKey="s34"/>
-            <click mergeKey="s35" selector="{{CheckoutShippingMethodsSection.firstShippingMethod}}"/>
-            <waitForElement mergeKey="s36" selector="{{CheckoutShippingMethodsSection.next}}" time="30"/>
-            <click mergeKey="s37" selector="{{CheckoutShippingMethodsSection.next}}" />
-            <waitForPageLoad mergeKey="s39"/>
-            <waitForElement mergeKey="s41" selector="{{CheckoutPaymentSection.placeOrder}}" time="30" />
-            <see mergeKey="s47" selector="{{CheckoutPaymentSection.billingAddress}}" userInput="{{US_Address_TX.street[0]}}" />
-            <click mergeKey="s49" selector="{{CheckoutPaymentSection.placeOrder}}" />
-            <waitForPageLoad mergeKey="s51"/>
-            <grabTextFrom mergeKey="s53" selector="{{CheckoutSuccessMainSection.orderNumber22}}" returnVariable="orderNumber" />
-            <see mergeKey="s55" selector="{{CheckoutSuccessMainSection.success}}" userInput="Your order number is:" />
+            <amOnPage stepKey="s11" url="/$$simplecategory.name$$.html" />
+            <moveMouseOver stepKey="s15" selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" />
+            <click stepKey="s17" selector="{{StorefrontCategoryMainSection.AddToCartBtn}}" />
+            <waitForElementVisible stepKey="s21" selector="{{StorefrontCategoryMainSection.SuccessMsg}}" time="30" />
+            <see stepKey="s23" selector="{{StorefrontCategoryMainSection.SuccessMsg}}" userInput="You added $$simpleproduct1.name$$ to your shopping cart."/>
+            <see stepKey="s25" selector="{{StorefrontMiniCartSection.quantity}}" userInput="1" />
+            <click stepKey="s27" selector="{{StorefrontMiniCartSection.show}}" />
+            <click stepKey="s31" selector="{{StorefrontMiniCartSection.goToCheckout}}" />
+            <waitForPageLoad stepKey="s33"/>
+            <waitForLoadingMaskToDisappear stepKey="s34"/>
+            <click stepKey="s35" selector="{{CheckoutShippingMethodsSection.firstShippingMethod}}"/>
+            <waitForElement stepKey="s36" selector="{{CheckoutShippingMethodsSection.next}}" time="30"/>
+            <click stepKey="s37" selector="{{CheckoutShippingMethodsSection.next}}" />
+            <waitForPageLoad stepKey="s39"/>
+            <waitForElement stepKey="s41" selector="{{CheckoutPaymentSection.placeOrder}}" time="30" />
+            <see stepKey="s47" selector="{{CheckoutPaymentSection.billingAddress}}" userInput="{{US_Address_TX.street[0]}}" />
+            <click stepKey="s49" selector="{{CheckoutPaymentSection.placeOrder}}" />
+            <waitForPageLoad stepKey="s51"/>
+            <grabTextFrom stepKey="s53" selector="{{CheckoutSuccessMainSection.orderNumber22}}" returnVariable="orderNumber" />
+            <see stepKey="s55" selector="{{CheckoutSuccessMainSection.success}}" userInput="Your order number is:" />
 
-            <amOnPage mergeKey="s59" url="{{AdminLoginPage.url}}" />
-            <fillField mergeKey="s61" selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" />
-            <fillField mergeKey="s63" selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" />
-            <click mergeKey="s65" selector="{{AdminLoginFormSection.signIn}}" />
+            <amOnPage stepKey="s59" url="{{AdminLoginPage.url}}" />
+            <fillField stepKey="s61" selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" />
+            <fillField stepKey="s63" selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" />
+            <click stepKey="s65" selector="{{AdminLoginFormSection.signIn}}" />
 
-            <amOnPage mergeKey="s67" url="{{OrdersPage.url}}"/>
-            <waitForPageLoad mergeKey="s75"/>
-            <fillField mergeKey="s77" selector="{{OrdersGridSection.search}}" variable="orderNumber" />
-            <waitForPageLoad mergeKey="s78"/>
+            <amOnPage stepKey="s67" url="{{OrdersPage.url}}"/>
+            <waitForPageLoad stepKey="s75"/>
+            <fillField stepKey="s77" selector="{{OrdersGridSection.search}}" variable="orderNumber" />
+            <waitForPageLoad stepKey="s78"/>
 
-            <click mergeKey="s81" selector="{{OrdersGridSection.submitSearch22}}" />
-            <waitForPageLoad mergeKey="s831"/>
-            <click mergeKey="s84" selector="{{OrdersGridSection.firstRow}}" />
-            <see mergeKey="s85" selector="{{OrderDetailsInformationSection.orderStatus}}" userInput="Pending" />
-            <see mergeKey="s87" selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="Customer" />
-            <see mergeKey="s89" selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="$$simpleuscustomer.email$$" />
-            <see mergeKey="s91" selector="{{OrderDetailsInformationSection.billingAddress}}" userInput="{{US_Address_TX.street[0]}}" />
-            <see mergeKey="s93" selector="{{OrderDetailsInformationSection.shippingAddress}}" userInput="{{US_Address_TX.street[0]}}" />
-            <see mergeKey="s95" selector="{{OrderDetailsInformationSection.itemsOrdered}}" userInput="$$simpleproduct1.name$$" />
+            <click stepKey="s81" selector="{{OrdersGridSection.submitSearch22}}" />
+            <waitForPageLoad stepKey="s831"/>
+            <click stepKey="s84" selector="{{OrdersGridSection.firstRow}}" />
+            <see stepKey="s85" selector="{{OrderDetailsInformationSection.orderStatus}}" userInput="Pending" />
+            <see stepKey="s87" selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="Customer" />
+            <see stepKey="s89" selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="$$simpleuscustomer.email$$" />
+            <see stepKey="s91" selector="{{OrderDetailsInformationSection.billingAddress}}" userInput="{{US_Address_TX.street[0]}}" />
+            <see stepKey="s93" selector="{{OrderDetailsInformationSection.shippingAddress}}" userInput="{{US_Address_TX.street[0]}}" />
+            <see stepKey="s95" selector="{{OrderDetailsInformationSection.itemsOrdered}}" userInput="$$simpleproduct1.name$$" />
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontGuestCheckoutCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontGuestCheckoutCest.xml
index fa441fd673784b65c8f768739c7d2dfb703a5fce..69c614cd36268a6f93b649a954cc4d6ac78b5191 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontGuestCheckoutCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Cest/StorefrontGuestCheckoutCest.xml
@@ -14,14 +14,14 @@
             <stories value="Checkout via Guest Checkout"/>
         </annotations>
         <before>
-            <createData entity="_defaultCategory" mergeKey="createCategory"/>
-            <createData entity="_defaultProduct" mergeKey="createProduct">
+            <createData entity="_defaultCategory" stepKey="createCategory"/>
+            <createData entity="_defaultProduct" stepKey="createProduct">
                 <required-entity createDataKey="createCategory"/>
             </createData>
         </before>
         <after>
-            <deleteData createDataKey="createCategory" mergeKey="deleteCategory"/>
-            <deleteData createDataKey="createProduct" mergeKey="deleteProduct"/>
+            <deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
+            <deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
         </after>
         <test name="GuestCheckoutTest">
             <annotations>
@@ -30,54 +30,53 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="MAGETWO-72094"/>
                 <group value="checkout"/>
-                <env value="chrome"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{StorefrontCategoryPage.url($$createCategory.name$$)}}" mergeKey="onCategoryPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <moveMouseOver selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" mergeKey="hoverProduct"/>
-            <click selector="{{StorefrontCategoryMainSection.AddToCartBtn}}" mergeKey="addToCart"/>
-            <waitForElementVisible selector="{{StorefrontCategoryMainSection.SuccessMsg}}" time="30" mergeKey="waitForProductAdded"/>
-            <see selector="{{StorefrontCategoryMainSection.SuccessMsg}}" userInput="You added $$createProduct.name$$ to your shopping cart." mergeKey="seeAddedToCartMessage"/>
-            <see selector="{{StorefrontMiniCartSection.quantity}}" userInput="1" mergeKey="seeCartQuantity"/>
-            <click selector="{{StorefrontMiniCartSection.show}}" mergeKey="clickCart"/>
-            <click selector="{{StorefrontMiniCartSection.goToCheckout}}" mergeKey="goToCheckout"/>
-            <waitForPageLoad mergeKey="waitForPageLoad2"/>
-            <fillField selector="{{GuestCheckoutShippingSection.email}}" userInput="{{CustomerEntityOne.email}}" mergeKey="enterEmail"/>
-            <fillField selector="{{GuestCheckoutShippingSection.firstName}}" userInput="{{CustomerEntityOne.firstname}}" mergeKey="enterFirstName"/>
-            <fillField selector="{{GuestCheckoutShippingSection.lastName}}" userInput="{{CustomerEntityOne.lastname}}" mergeKey="enterLastName"/>
-            <fillField selector="{{GuestCheckoutShippingSection.street}}" userInput="{{CustomerAddressSimple.street[0]}}" mergeKey="enterStreet"/>
-            <fillField selector="{{GuestCheckoutShippingSection.city}}" userInput="{{CustomerAddressSimple.city}}" mergeKey="enterCity"/>
-            <selectOption selector="{{GuestCheckoutShippingSection.region}}" userInput="{{CustomerAddressSimple.state}}" mergeKey="selectRegion"/>
-            <fillField selector="{{GuestCheckoutShippingSection.postcode}}" userInput="{{CustomerAddressSimple.postcode}}" mergeKey="enterPostcode"/>
-            <fillField selector="{{GuestCheckoutShippingSection.telephone}}" userInput="{{CustomerAddressSimple.telephone}}" mergeKey="enterTelephone"/>
-            <waitForLoadingMaskToDisappear mergeKey="waitForLoadingMask"/>
-            <click selector="{{GuestCheckoutShippingSection.firstShippingMethod}}" mergeKey="selectFirstShippingMethod"/>
-            <waitForElement selector="{{GuestCheckoutShippingSection.next}}" time="30" mergeKey="waitForNextButton"/>
-            <click selector="{{GuestCheckoutShippingSection.next}}" mergeKey="clickNext"/>
-            <waitForElement selector="{{GuestCheckoutPaymentSection.placeOrder}}" time="30" mergeKey="waitForPlaceOrderButton"/>
-            <see selector="{{GuestCheckoutPaymentSection.cartItems}}" userInput="{{_defaultProduct.name}}" mergeKey="seeProductInCart"/>
-            <see selector="{{GuestCheckoutPaymentSection.billingAddress}}" userInput="{{CustomerAddressSimple.street[0]}}" mergeKey="seeAddress"/>
-            <click selector="{{GuestCheckoutPaymentSection.placeOrder}}" mergeKey="clickPlaceOrder"/>
-            <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" returnVariable="orderNumber" mergeKey="grabOrderNumber"/>
-            <see selector="{{CheckoutSuccessMainSection.success}}" userInput="Your order # is:" mergeKey="seeOrderNumber"/>
-            <see selector="{{CheckoutSuccessMainSection.success}}" userInput="We'll email you an order confirmation with details and tracking info." mergeKey="seeEmailYou"/>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="navigateToAdmin"/>
-            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" mergeKey="fillUsername"/>
-            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickLogin"/>
-            <amOnPage url="{{OrdersPage.url}}" mergeKey="onOrdersPage"/>
-            <waitForElementNotVisible selector="{{OrdersGridSection.spinner}}" time="30" mergeKey="waitForOrdersPage"/>
-            <fillField selector="{{OrdersGridSection.search}}" variable="orderNumber" mergeKey="fillOrderNum"/>
-            <click selector="{{OrdersGridSection.submitSearch}}" mergeKey="submitSearchOrderNum"/>
-            <waitForElementNotVisible selector="{{OrdersGridSection.spinner}}" time="30" mergeKey="waitForOrdersPage2"/>
-            <click selector="{{OrdersGridSection.firstRow}}" mergeKey="clickOrderRow"/>
-            <see selector="{{OrderDetailsInformationSection.orderStatus}}" userInput="Pending" mergeKey="seeAdminOrderStatus"/>
-            <see selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="Guest" mergeKey="seeAdminOrderGuest"/>
-            <see selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="{{CustomerEntityOne.email}}" mergeKey="seeAdminOrderEmail"/>
-            <see selector="{{OrderDetailsInformationSection.billingAddress}}" userInput="{{CustomerAddressSimple.street[0]}}" mergeKey="seeAdminOrderBillingAddress"/>
-            <see selector="{{OrderDetailsInformationSection.shippingAddress}}" userInput="{{CustomerAddressSimple.street[0]}}" mergeKey="seeAdminOrderShippingAddress"/>
-            <see selector="{{OrderDetailsInformationSection.itemsOrdered}}" userInput="{{_defaultProduct.name}}" mergeKey="seeAdminOrderProduct"/>
+            <amOnPage url="{{StorefrontCategoryPage.url($$createCategory.name$$)}}" stepKey="onCategoryPage"/>
+            <waitForPageLoad stepKey="waitForPageLoad1"/>
+            <moveMouseOver selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" stepKey="hoverProduct"/>
+            <click selector="{{StorefrontCategoryMainSection.AddToCartBtn}}" stepKey="addToCart"/>
+            <waitForElementVisible selector="{{StorefrontCategoryMainSection.SuccessMsg}}" time="30" stepKey="waitForProductAdded"/>
+            <see selector="{{StorefrontCategoryMainSection.SuccessMsg}}" userInput="You added $$createProduct.name$$ to your shopping cart." stepKey="seeAddedToCartMessage"/>
+            <see selector="{{StorefrontMiniCartSection.quantity}}" userInput="1" stepKey="seeCartQuantity"/>
+            <click selector="{{StorefrontMiniCartSection.show}}" stepKey="clickCart"/>
+            <click selector="{{StorefrontMiniCartSection.goToCheckout}}" stepKey="goToCheckout"/>
+            <waitForPageLoad stepKey="waitForPageLoad2"/>
+            <fillField selector="{{GuestCheckoutShippingSection.email}}" userInput="{{CustomerEntityOne.email}}" stepKey="enterEmail"/>
+            <fillField selector="{{GuestCheckoutShippingSection.firstName}}" userInput="{{CustomerEntityOne.firstname}}" stepKey="enterFirstName"/>
+            <fillField selector="{{GuestCheckoutShippingSection.lastName}}" userInput="{{CustomerEntityOne.lastname}}" stepKey="enterLastName"/>
+            <fillField selector="{{GuestCheckoutShippingSection.street}}" userInput="{{CustomerAddressSimple.street[0]}}" stepKey="enterStreet"/>
+            <fillField selector="{{GuestCheckoutShippingSection.city}}" userInput="{{CustomerAddressSimple.city}}" stepKey="enterCity"/>
+            <selectOption selector="{{GuestCheckoutShippingSection.region}}" userInput="{{CustomerAddressSimple.state}}" stepKey="selectRegion"/>
+            <fillField selector="{{GuestCheckoutShippingSection.postcode}}" userInput="{{CustomerAddressSimple.postcode}}" stepKey="enterPostcode"/>
+            <fillField selector="{{GuestCheckoutShippingSection.telephone}}" userInput="{{CustomerAddressSimple.telephone}}" stepKey="enterTelephone"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask"/>
+            <click selector="{{GuestCheckoutShippingSection.firstShippingMethod}}" stepKey="selectFirstShippingMethod"/>
+            <waitForElement selector="{{GuestCheckoutShippingSection.next}}" time="30" stepKey="waitForNextButton"/>
+            <click selector="{{GuestCheckoutShippingSection.next}}" stepKey="clickNext"/>
+            <waitForElement selector="{{GuestCheckoutPaymentSection.placeOrder}}" time="30" stepKey="waitForPlaceOrderButton"/>
+            <conditionalClick selector="{{GuestCheckoutPaymentSection.cartItemsArea}}" dependentSelector="{{GuestCheckoutPaymentSection.cartItemsAreaActive}}" visible="false" stepKey="exposeMiniCart"/>
+            <see selector="{{GuestCheckoutPaymentSection.cartItems}}" userInput="{{_defaultProduct.name}}" stepKey="seeProductInCart"/>
+            <see selector="{{GuestCheckoutPaymentSection.billingAddress}}" userInput="{{CustomerAddressSimple.street[0]}}" stepKey="seeAddress"/>
+            <click selector="{{GuestCheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/>
+            <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" returnVariable="orderNumber" stepKey="grabOrderNumber"/>
+            <see selector="{{CheckoutSuccessMainSection.success}}" userInput="Your order # is:" stepKey="seeOrderNumber"/>
+            <see selector="{{CheckoutSuccessMainSection.success}}" userInput="We'll email you an order confirmation with details and tracking info." stepKey="seeEmailYou"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="navigateToAdmin"/>
+            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" stepKey="fillUsername"/>
+            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
+            <amOnPage url="{{OrdersPage.url}}" stepKey="onOrdersPage"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappearOnOrdersPage"/>
+            <fillField selector="{{OrdersGridSection.search}}" variable="orderNumber" stepKey="fillOrderNum"/>
+            <click selector="{{OrdersGridSection.submitSearch}}" stepKey="submitSearchOrderNum"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappearOnSearch"/>
+            <click selector="{{OrdersGridSection.firstRow}}" stepKey="clickOrderRow"/>
+            <see selector="{{OrderDetailsInformationSection.orderStatus}}" userInput="Pending" stepKey="seeAdminOrderStatus"/>
+            <see selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="Guest" stepKey="seeAdminOrderGuest"/>
+            <see selector="{{OrderDetailsInformationSection.accountInformation}}" userInput="{{CustomerEntityOne.email}}" stepKey="seeAdminOrderEmail"/>
+            <see selector="{{OrderDetailsInformationSection.billingAddress}}" userInput="{{CustomerAddressSimple.street[0]}}" stepKey="seeAdminOrderBillingAddress"/>
+            <see selector="{{OrderDetailsInformationSection.shippingAddress}}" userInput="{{CustomerAddressSimple.street[0]}}" stepKey="seeAdminOrderShippingAddress"/>
+            <see selector="{{OrderDetailsInformationSection.itemsOrdered}}" userInput="{{_defaultProduct.name}}" stepKey="seeAdminOrderProduct"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/README.md
index b36a7cf6d5de1c0a0af56ff61bfbcef1ea0f7702..fc63b2f394813c974bfb006785c6818f08b9d107 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Checkout** Module.
+The Functional Tests Module for **Magento_Checkout** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Section/GuestCheckoutPaymentSection.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Section/GuestCheckoutPaymentSection.xml
index 200a699d2bb5101ada1c925d1cd9278f48b99a1e..cc7c019cc4e234874d8e0451d04ecc8a3f36678f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Section/GuestCheckoutPaymentSection.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/Section/GuestCheckoutPaymentSection.xml
@@ -9,6 +9,8 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Page/etc/SectionObject.xsd">
     <section name="GuestCheckoutPaymentSection">
+        <element name="cartItemsArea" type="textarea" selector=".items-in-cart"/>
+        <element name="cartItemsAreaActive" type="textarea" selector="div.block.items-in-cart.active"/>
         <element name="cartItems" type="text" selector=".minicart-items"/>
         <element name="billingAddress" type="text" selector="div.billing-address-details"/>
         <element name="placeOrder" type="button" selector="button.action.primary.checkout" timeout="30"/>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/composer.json
index aec57da084ffb16c205162a4383779ee54bd69d3..f84ed60ac922e19eef3b32fb01991fe43df06b40 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout/composer.json
@@ -1,66 +1,49 @@
 {
     "name": "magento/magento2-functional-test-module-checkout",
-    "description": "Magento 2 Acceptance Test Module Checkout",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master",
-        "magento/magento2-functional-test-module-sales-rule": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-msrp": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Checkout",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-msrp": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Checkout\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Checkout"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Checkout"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/README.md
index a985bc4dfe1044c06affa991e5a5fc0516f5f142..35423659f629f65270ebfc22420207c8cc6ad5b6 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CheckoutAgreements** Module.
+The Functional Tests Module for **Magento_CheckoutAgreements** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/composer.json
index ab5629e117db9f0d9d26937cdab47ef391981a87..54f8e269d39a24cbdb1fdaf462119deddddd665c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-checkout-agreements",
-    "description": "Magento 2 Acceptance Test Module Checkout Agreements",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Checkout Agreements",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CheckoutAgreements\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CheckoutAgreements"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CheckoutAgreements"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/Cest/AdminCreateCmsPageCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/Cest/AdminCreateCmsPageCest.xml
index e6dfb969fe2182f4fa9ad428e7cdcea3ab6095fb..0a321690dd5d0b2e86ae41780a7e230c7d1c36d3 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/Cest/AdminCreateCmsPageCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/Cest/AdminCreateCmsPageCest.xml
@@ -14,7 +14,7 @@
             <stories value="Create a CMS Page via the Admin"/>
         </annotations>
         <after>
-            <amOnPage url="admin/admin/auth/logout/" mergeKey="amOnLogoutPage"/>
+            <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/>
         </after>
         <test name="CreateNewPage">
             <annotations>
@@ -23,31 +23,27 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="MAGETWO-25580"/>
                 <group value="cms"/>
-                <group value="skip"/>
-                <env value="chrome"/>
-                <env value="firefox"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="navigateToAdmin"/>
-            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" mergeKey="fillUsername"/>
-            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickLogin"/>
-            <amOnPage url="{{CmsPagesPage.url}}" mergeKey="amOnPagePagesGrid"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <click selector="{{CmsPagesPageActionsSection.addNewPage}}" mergeKey="clickAddNewPage"/>
-            <fillField selector="{{CmsNewPagePageBasicFieldsSection.pageTitle}}" userInput="{{_defaultCmsPage.title}}" mergeKey="fillFieldTitle"/>
-            <click selector="{{CmsNewPagePageContentSection.header}}" mergeKey="clickExpandContent"/>
-            <fillField selector="{{CmsNewPagePageContentSection.contentHeading}}" userInput="{{_defaultCmsPage.content_heading}}" mergeKey="fillFieldContentHeading"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="navigateToAdmin"/>
+            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" stepKey="fillUsername"/>
+            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
+            <amOnPage url="{{CmsPagesPage.url}}" stepKey="amOnPagePagesGrid"/>
+            <waitForPageLoad stepKey="waitForPageLoad1"/>
+            <click selector="{{CmsPagesPageActionsSection.addNewPage}}" stepKey="clickAddNewPage"/>
+            <fillField selector="{{CmsNewPagePageBasicFieldsSection.pageTitle}}" userInput="{{_defaultCmsPage.title}}" stepKey="fillFieldTitle"/>
+            <click selector="{{CmsNewPagePageContentSection.header}}" stepKey="clickExpandContent"/>
+            <fillField selector="{{CmsNewPagePageContentSection.contentHeading}}" userInput="{{_defaultCmsPage.content_heading}}" stepKey="fillFieldContentHeading"/>
             <!-- As of 2017/11/15, this test is failing here (Jenkins only, works locally). See MQE-282. -->
-            <fillField selector="{{CmsNewPagePageContentSection.content}}" userInput="{{_defaultCmsPage.content}}" mergeKey="fillFieldContent"/>
-            <click selector="{{CmsNewPagePageSeoSection.header}}" mergeKey="clickExpandSearchEngineOptimisation"/>
-            <fillField selector="{{CmsNewPagePageSeoSection.urlKey}}" userInput="{{_defaultCmsPage.identifier}}" mergeKey="fillFieldUrlKey"/>
-            <click selector="{{CmsNewPagePageActionsSection.savePage}}" mergeKey="clickSavePage"/>
-            <see userInput="You saved the page." mergeKey="seeSuccessMessage"/>
-            <amOnPage url="{{_defaultCmsPage.identifier}}" mergeKey="amOnPageTestPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad2"/>
-            <see userInput="{{_defaultCmsPage.content_heading}}" mergeKey="seeContentHeading"/>
-            <see userInput="{{_defaultCmsPage.content}}" mergeKey="seeContent"/>
+            <fillField selector="{{CmsNewPagePageContentSection.content}}" userInput="{{_defaultCmsPage.content}}" stepKey="fillFieldContent"/>
+            <click selector="{{CmsNewPagePageSeoSection.header}}" stepKey="clickExpandSearchEngineOptimisation"/>
+            <fillField selector="{{CmsNewPagePageSeoSection.urlKey}}" userInput="{{_defaultCmsPage.identifier}}" stepKey="fillFieldUrlKey"/>
+            <click selector="{{CmsNewPagePageActionsSection.savePage}}" stepKey="clickSavePage"/>
+            <see userInput="You saved the page." stepKey="seeSuccessMessage"/>
+            <amOnPage url="{{_defaultCmsPage.identifier}}" stepKey="amOnPageTestPage"/>
+            <waitForPageLoad stepKey="waitForPageLoad2"/>
+            <see userInput="{{_defaultCmsPage.content_heading}}" stepKey="seeContentHeading"/>
+            <see userInput="{{_defaultCmsPage.content}}" stepKey="seeContent"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/README.md
index 4de61c2fb27b0347f37021a3640e28d56fd562f0..d1214efec912892ef9486b5a8a2e3122b87d21c0 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Cms** Module.
+The Functional Tests Module for **Magento_Cms** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/composer.json
index ad21c6beeaffb1a4b2c1855f870cad0696223187..5f55a2cabb3508682fe612cd8dafbcdf07152f1a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms/composer.json
@@ -1,57 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-cms",
-    "description": "Magento 2 Acceptance Test Module Cms",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-email": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-variable": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Cms",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-email": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-variable": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Cms\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Cms"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cms"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/README.md
index 1f1b1ca7825327f4b75b97d8aa2160e83587efce..cc52700eba9887a168f6665ad1893a64ea4376a9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/README.md
@@ -1,6 +1,3 @@
-## Overview
- 
-The Magento_CmsUrlRewrite module adds support for URL rewrite rules for CMS pages. See also Magento_UrlRewrite module. 
+# Magento 2 Functional Tests
 
-The module adds and removes URL rewrite rules as CMS pages are added or removed by a user.
-The rules can be edited by an admin user as any other URL rewrite rule. 
+The Functional Tests Module for **Magento_CmsUrlRewrite** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/composer.json
index 4c27ee9c61ed3fe6a5787718fa770514f0bede09..764444c8e72354cd55731092a9da7cd11aae0842 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-cms-url-rewrite",
-    "description": "Magento 2 Acceptance Test Module Cms Url Rewrite",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-url-rewrite": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Cms Url Rewrite",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-url-rewrite": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CmsUrlRewrite\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CmsUrlRewrite"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CmsUrlRewrite"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/README.md
index 6214cc94b04a0527c81b76cd5ef2a4006cf0da93..eb0b57b2886f24f7138d9ebbb49a00e3e82769ab 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/README.md
@@ -1,8 +1,3 @@
-#Config
-The Config module is designed to implement system configuration functionality.
-It provides mechanisms to add, edit, store and retrieve the configuration data
-for each scope (there can be a default scope as well as scopes for each website and store).
+# Magento 2 Functional Tests
 
-Modules can add items to be configured on the system configuration page by creating 
-system.xml files in their etc/adminhtml directories. These system.xml files get merged 
-to populate the forms in the config page.
+The Functional Tests Module for **Magento_Config** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/composer.json
index b82ea131819f557206eb68fe9821909b204ba9c4..c6aa7ca8ab45398ec0120e1877cf730b57dd3c5b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config/composer.json
@@ -1,53 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-config",
-    "description": "Magento 2 Acceptance Test Module Config",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-email": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Config",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cron": "100.0.0-dev",
+        "magento/magento2-functional-test-module-deploy": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-email": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Config\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Config"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Config"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1cf979955a3cdc4980704381654b11ff7f4adb2e
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_ConfigurableImportExport** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/composer.json
index 8af4f9591cfc5c03377e7428fce8c2ad04144748..1b2fb5e35ae351fb2dd453dd505c7bc23dc9ec55 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-configurable-import-export",
-    "description": "Magento 2 Acceptance Test Module Configurable Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-import-export": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-configurable-product": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Configurable Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-configurable-product": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ConfigurableImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/ConfigurableImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/Cest/AdminCreateConfigurableProductCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/Cest/AdminCreateConfigurableProductCest.xml
index fbcc2581b408932bf0fec442a0077592d7c6d5a8..f861167972882d4d7eaf483c6925d3d82271addc 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/Cest/AdminCreateConfigurableProductCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/Cest/AdminCreateConfigurableProductCest.xml
@@ -14,10 +14,10 @@
             <stories value="Create a Configurable Product via the Admin"/>
         </annotations>
         <before>
-            <loginAsAdmin mergeKey="loginAsAdmin"/>
+            <loginAsAdmin stepKey="loginAsAdmin"/>
         </before>
         <after>
-            <amOnPage url="admin/admin/auth/logout/" mergeKey="amOnLogoutPage"/>
+            <amOnPage url="admin/admin/auth/logout/" stepKey="amOnLogoutPage"/>
         </after>
         <test name="CreateConfigurableProductViaAdmin">
             <annotations>
@@ -27,108 +27,107 @@
                 <testCaseId value="MAGETWO-26041"/>
                 <group value="configurable"/>
                 <group value="product"/>
-                <env value="chrome"/>
+                <group value="skip"/>
             </annotations>
-
-            <amOnPage url="{{AdminCategoryPage.url}}" mergeKey="amOnCategoryGridPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-
-            <click selector="{{AdminCategorySidebarActionSection.AddSubcategoryButton}}" mergeKey="clickOnAddSubCategory"/>
-            <fillField selector="{{AdminCategoryBasicFieldSection.CategoryNameInput}}" userInput="{{_defaultCategory.name}}" mergeKey="enterCategoryName"/>
-            <click selector="{{AdminCategorySEOSection.SectionHeader}}" mergeKey="clickOnSeoSection"/>
-            <fillField selector="{{AdminCategorySEOSection.UrlKeyInput}}" userInput="{{_defaultCategory.name_lwr}}" mergeKey="enterUrlKey"/>
-            <click selector="{{AdminCategoryMainActionsSection.SaveButton}}" mergeKey="clickOnSaveCategory"/>
-            <seeElement selector="{{AdminCategoryMessagesSection.SuccessMessage}}" mergeKey="assertSuccessMessage"/>
-
-            <amOnPage url="{{AdminProductIndexPage.url}}" mergeKey="amOnProductGridPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad2"/>
-            <click selector="{{AdminProductGridActionSection.addProductToggle}}" mergeKey="clickOnAddProductToggle"/>
-            <click selector="{{AdminProductGridActionSection.addConfigurableProduct}}" mergeKey="clickOnAddConfigurableProduct"/>
-            <fillField userInput="{{_defaultProduct.name}}" selector="{{AdminProductFormSection.productName}}" mergeKey="fillName"/>
-            <fillField userInput="{{_defaultProduct.sku}}" selector="{{AdminProductFormSection.productSku}}" mergeKey="fillSKU"/>
-            <fillField userInput="{{_defaultProduct.price}}" selector="{{AdminProductFormSection.productPrice}}" mergeKey="fillPrice"/>
-            <fillField userInput="{{_defaultProduct.quantity}}" selector="{{AdminProductFormSection.productQuantity}}" mergeKey="fillQuantity"/>
-            <searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[{{_defaultCategory.name}}]" mergeKey="searchAndSelectCategory"/>
-            <click selector="{{AdminProductSEOSection.sectionHeader}}" mergeKey="openSeoSection"/>
-            <fillField userInput="{{_defaultProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" mergeKey="fillUrlKey"/>
-
-            <click selector="{{AdminProductFormConfigurationsSection.createConfigurations}}" mergeKey="clickOnCreateConfigurations"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.createNewAttribute}}" mergeKey="clickOnNewAttribute"/>
-            <switchToIFrame selector="{{AdminNewAttributePanel.newAttributeIFrame}}" mergeKey="switchToNewAttributeIFrame"/>
-            <fillField selector="{{AdminNewAttributePanel.defaultLabel}}" userInput="{{colorProductAttribute.default_label}}" mergeKey="fillDefaultLabel"/>
-            <click selector="{{AdminNewAttributePanel.saveAttribute}}" mergeKey="clickOnNewAttributePanel"/>
-
-            <switchToIFrame mergeKey="switchOutOfIFrame"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.filters}}" mergeKey="clickOnFilters"/>
-            <fillField userInput="{{colorProductAttribute.default_label}}" selector="{{AdminCreateProductConfigurationsPanel.attributeCode}}" mergeKey="fillFilterAttributeCodeField"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.applyFilters}}" mergeKey="clickApplyFiltersButton"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.firstCheckbox}}" mergeKey="clickOnFirstCheckbox"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" mergeKey="clickOnNextButton1"/>
-
-            <click selector="{{AdminCreateProductConfigurationsPanel.createNewValue}}" mergeKey="clickOnCreateNewValue1"/>
-            <fillField userInput="{{colorProductAttribute1.name}}" selector="{{AdminCreateProductConfigurationsPanel.attributeName}}" mergeKey="fillFieldForNewAttribute1"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.saveAttribute}}" mergeKey="clickOnSaveNewAttribute1"/>
-
-            <click selector="{{AdminCreateProductConfigurationsPanel.createNewValue}}" mergeKey="clickOnCreateNewValue2"/>
-            <fillField userInput="{{colorProductAttribute2.name}}" selector="{{AdminCreateProductConfigurationsPanel.attributeName}}" mergeKey="fillFieldForNewAttribute2"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.saveAttribute}}" mergeKey="clickOnSaveNewAttribute2"/>
-
-            <click selector="{{AdminCreateProductConfigurationsPanel.createNewValue}}" mergeKey="clickOnCreateNewValue3"/>
-            <fillField userInput="{{colorProductAttribute3.name}}" selector="{{AdminCreateProductConfigurationsPanel.attributeName}}" mergeKey="fillFieldForNewAttribute3"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.saveAttribute}}" mergeKey="clickOnSaveNewAttribute3"/>
-
-            <click selector="{{AdminCreateProductConfigurationsPanel.selectAll}}" mergeKey="clickOnSelectAll"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" mergeKey="clickOnNextButton2"/>
-
-            <click selector="{{AdminCreateProductConfigurationsPanel.applyUniquePricesByAttributeToEachSku}}" mergeKey="clickOnApplyUniquePricesByAttributeToEachSku"/>
-            <selectOption selector="{{AdminCreateProductConfigurationsPanel.selectAttribute}}" userInput="{{colorProductAttribute.default_label}}" mergeKey="selectAttributes"/>
-            <fillField selector="{{AdminCreateProductConfigurationsPanel.attribute1}}" userInput="{{colorProductAttribute1.price}}" mergeKey="fillAttributePrice1"/>
-            <fillField selector="{{AdminCreateProductConfigurationsPanel.attribute2}}" userInput="{{colorProductAttribute2.price}}" mergeKey="fillAttributePrice2"/>
-            <fillField selector="{{AdminCreateProductConfigurationsPanel.attribute3}}" userInput="{{colorProductAttribute3.price}}" mergeKey="fillAttributePrice3"/>
-
-            <click selector="{{AdminCreateProductConfigurationsPanel.applySingleQuantityToEachSkus}}" mergeKey="clickOnApplySingleQuantityToEachSku"/>
-            <fillField selector="{{AdminCreateProductConfigurationsPanel.quantity}}" userInput="1" mergeKey="enterAttributeQuantity"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" mergeKey="clickOnNextButton3"/>
-            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" mergeKey="clickOnNextButton4"/>
-
-            <click selector="{{AdminProductFormActionSection.saveButton}}" mergeKey="clickOnSaveButton2"/>
-            <click selector="{{AdminChooseAffectedAttributeSetPopup.confirm}}" mergeKey="clickOnConfirmInPopup"/>
-
-            <seeElement selector="{{AdminProductMessagesSection.successMessage}}" mergeKey="seeSaveProductMessage"/>
-            <seeInTitle userInput="{{_defaultProduct.name}}" mergeKey="seeProductNameInTitle"/>
-
-            <seeNumberOfElements selector="{{AdminProductFormConfigurationsSection.currentVariationsRows}}" userInput="3" mergeKey="seeNumberOfRows"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsNameCells}}" userInput="{{colorProductAttribute1.name}}" mergeKey="seeAttributeName1InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsNameCells}}" userInput="{{colorProductAttribute2.name}}" mergeKey="seeAttributeName2InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsNameCells}}" userInput="{{colorProductAttribute3.name}}" mergeKey="seeAttributeName3InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsSkuCells}}" userInput="{{colorProductAttribute1.name}}" mergeKey="seeAttributeSku1InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsSkuCells}}" userInput="{{colorProductAttribute2.name}}" mergeKey="seeAttributeSku2InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsSkuCells}}" userInput="{{colorProductAttribute3.name}}" mergeKey="seeAttributeSku3InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsPriceCells}}" userInput="{{colorProductAttribute1.price}}" mergeKey="seeUniquePrice1InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsPriceCells}}" userInput="{{colorProductAttribute2.price}}" mergeKey="seeUniquePrice2InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsPriceCells}}" userInput="{{colorProductAttribute3.price}}" mergeKey="seeUniquePrice3InField"/>
-            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsQuantityCells}}" userInput="{{colorProductAttribute.attribute_quantity}}" mergeKey="seeQuantityInField"/>
-
-            <amOnPage url="/" mergeKey="amOnStorefront"/>
-            <waitForPageLoad mergeKey="waitForPageLoad3"/>
-
-            <click userInput="{{_defaultCategory.name}}" mergeKey="clickOnCategoryName"/>
-            <waitForPageLoad mergeKey="waitForPageLoad4"/>
-
-            <see userInput="{{_defaultProduct.name}}" mergeKey="assertProductPresent"/>
-            <see userInput="{{colorProductAttribute1.price}}" mergeKey="assertProductPricePresent"/>
-            <click userInput="{{_defaultProduct.name}}" mergeKey="clickOnProductName"/>
-            <waitForPageLoad mergeKey="waitForPageLoad5"/>
-
-            <seeInTitle userInput="{{_defaultProduct.name}}" mergeKey="assertProductNameTitle"/>
-            <see userInput="{{_defaultProduct.name}}" selector="{{StorefrontProductInfoMainSection.productName}}" mergeKey="assertProductName"/>
-            <see userInput="{{colorProductAttribute1.price}}" selector="{{StorefrontProductInfoMainSection.productPrice}}" mergeKey="assertProductPrice"/>
-            <see userInput="{{_defaultProduct.sku}}" selector="{{StorefrontProductInfoMainSection.productSku}}" mergeKey="assertProductSku"/>
-
-            <see selector="{{StorefrontProductInfoMainSection.productAttributeTitle1}}" userInput="{{colorProductAttribute.default_label}}" mergeKey="seeColorAttributeName1"/>
-            <see selector="{{StorefrontProductInfoMainSection.productAttributeOptions1}}" userInput="{{colorProductAttribute1.name}}" mergeKey="seeInDropDown1"/>
-            <see selector="{{StorefrontProductInfoMainSection.productAttributeOptions1}}" userInput="{{colorProductAttribute2.name}}" mergeKey="seeInDropDown2"/>
-            <see selector="{{StorefrontProductInfoMainSection.productAttributeOptions1}}" userInput="{{colorProductAttribute3.name}}" mergeKey="seeInDropDown3"/>
+            <amOnPage url="{{AdminCategoryPage.url}}" stepKey="amOnCategoryGridPage"/>
+            <waitForPageLoad time="30" stepKey="waitForPageLoad1"/>
+
+            <click selector="{{AdminCategorySidebarActionSection.AddSubcategoryButton}}" stepKey="clickOnAddSubCategory"/>
+            <fillField selector="{{AdminCategoryBasicFieldSection.CategoryNameInput}}" userInput="{{_defaultCategory.name}}" stepKey="enterCategoryName"/>
+            <click selector="{{AdminCategorySEOSection.SectionHeader}}" stepKey="clickOnSeoSection"/>
+            <fillField selector="{{AdminCategorySEOSection.UrlKeyInput}}" userInput="{{_defaultCategory.name_lwr}}" stepKey="enterUrlKey"/>
+            <click selector="{{AdminCategoryMainActionsSection.SaveButton}}" stepKey="clickOnSaveCategory"/>
+            <seeElement selector="{{AdminCategoryMessagesSection.SuccessMessage}}" stepKey="assertSuccessMessage"/>
+
+            <amOnPage url="{{AdminProductIndexPage.url}}" stepKey="amOnProductGridPage"/>
+            <waitForPageLoad time="30" stepKey="waitForPageLoad2"/>
+            <click selector="{{AdminProductGridActionSection.addProductToggle}}" stepKey="clickOnAddProductToggle"/>
+            <click selector="{{AdminProductGridActionSection.addConfigurableProduct}}" stepKey="clickOnAddConfigurableProduct"/>
+            <fillField userInput="{{_defaultProduct.name}}" selector="{{AdminProductFormSection.productName}}" stepKey="fillName"/>
+            <fillField userInput="{{_defaultProduct.sku}}" selector="{{AdminProductFormSection.productSku}}" stepKey="fillSKU"/>
+            <fillField userInput="{{_defaultProduct.price}}" selector="{{AdminProductFormSection.productPrice}}" stepKey="fillPrice"/>
+            <fillField userInput="{{_defaultProduct.quantity}}" selector="{{AdminProductFormSection.productQuantity}}" stepKey="fillQuantity"/>
+            <searchAndMultiSelectOption selector="{{AdminProductFormSection.categoriesDropdown}}" parameterArray="[{{_defaultCategory.name}}]" stepKey="searchAndSelectCategory"/>
+            <click selector="{{AdminProductSEOSection.sectionHeader}}" stepKey="openSeoSection"/>
+            <fillField userInput="{{_defaultProduct.urlKey}}" selector="{{AdminProductSEOSection.urlKeyInput}}" stepKey="fillUrlKey"/>
+
+            <click selector="{{AdminProductFormConfigurationsSection.createConfigurations}}" stepKey="clickOnCreateConfigurations"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.createNewAttribute}}" stepKey="clickOnNewAttribute"/>
+            <switchToIFrame selector="{{AdminNewAttributePanel.newAttributeIFrame}}" stepKey="switchToNewAttributeIFrame"/>
+            <fillField selector="{{AdminNewAttributePanel.defaultLabel}}" userInput="{{colorProductAttribute.default_label}}" stepKey="fillDefaultLabel"/>
+            <click selector="{{AdminNewAttributePanel.saveAttribute}}" stepKey="clickOnNewAttributePanel"/>
+
+            <switchToIFrame stepKey="switchOutOfIFrame"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.filters}}" stepKey="clickOnFilters"/>
+            <fillField userInput="{{colorProductAttribute.default_label}}" selector="{{AdminCreateProductConfigurationsPanel.attributeCode}}" stepKey="fillFilterAttributeCodeField"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.applyFilters}}" stepKey="clickApplyFiltersButton"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.firstCheckbox}}" stepKey="clickOnFirstCheckbox"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickOnNextButton1"/>
+
+            <click selector="{{AdminCreateProductConfigurationsPanel.createNewValue}}" stepKey="clickOnCreateNewValue1"/>
+            <fillField userInput="{{colorProductAttribute1.name}}" selector="{{AdminCreateProductConfigurationsPanel.attributeName}}" stepKey="fillFieldForNewAttribute1"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.saveAttribute}}" stepKey="clickOnSaveNewAttribute1"/>
+
+            <click selector="{{AdminCreateProductConfigurationsPanel.createNewValue}}" stepKey="clickOnCreateNewValue2"/>
+            <fillField userInput="{{colorProductAttribute2.name}}" selector="{{AdminCreateProductConfigurationsPanel.attributeName}}" stepKey="fillFieldForNewAttribute2"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.saveAttribute}}" stepKey="clickOnSaveNewAttribute2"/>
+
+            <click selector="{{AdminCreateProductConfigurationsPanel.createNewValue}}" stepKey="clickOnCreateNewValue3"/>
+            <fillField userInput="{{colorProductAttribute3.name}}" selector="{{AdminCreateProductConfigurationsPanel.attributeName}}" stepKey="fillFieldForNewAttribute3"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.saveAttribute}}" stepKey="clickOnSaveNewAttribute3"/>
+
+            <click selector="{{AdminCreateProductConfigurationsPanel.selectAll}}" stepKey="clickOnSelectAll"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickOnNextButton2"/>
+
+            <click selector="{{AdminCreateProductConfigurationsPanel.applyUniquePricesByAttributeToEachSku}}" stepKey="clickOnApplyUniquePricesByAttributeToEachSku"/>
+            <selectOption selector="{{AdminCreateProductConfigurationsPanel.selectAttribute}}" userInput="{{colorProductAttribute.default_label}}" stepKey="selectAttributes"/>
+            <fillField selector="{{AdminCreateProductConfigurationsPanel.attribute1}}" userInput="{{colorProductAttribute1.price}}" stepKey="fillAttributePrice1"/>
+            <fillField selector="{{AdminCreateProductConfigurationsPanel.attribute2}}" userInput="{{colorProductAttribute2.price}}" stepKey="fillAttributePrice2"/>
+            <fillField selector="{{AdminCreateProductConfigurationsPanel.attribute3}}" userInput="{{colorProductAttribute3.price}}" stepKey="fillAttributePrice3"/>
+
+            <click selector="{{AdminCreateProductConfigurationsPanel.applySingleQuantityToEachSkus}}" stepKey="clickOnApplySingleQuantityToEachSku"/>
+            <fillField selector="{{AdminCreateProductConfigurationsPanel.quantity}}" userInput="1" stepKey="enterAttributeQuantity"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickOnNextButton3"/>
+            <click selector="{{AdminCreateProductConfigurationsPanel.next}}" stepKey="clickOnNextButton4"/>
+
+            <click selector="{{AdminProductFormActionSection.saveButton}}" stepKey="clickOnSaveButton2"/>
+            <click selector="{{AdminChooseAffectedAttributeSetPopup.confirm}}" stepKey="clickOnConfirmInPopup"/>
+
+            <seeElement selector="{{AdminProductMessagesSection.successMessage}}" stepKey="seeSaveProductMessage"/>
+            <seeInTitle userInput="{{_defaultProduct.name}}" stepKey="seeProductNameInTitle"/>
+
+            <seeNumberOfElements selector="{{AdminProductFormConfigurationsSection.currentVariationsRows}}" userInput="3" stepKey="seeNumberOfRows"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsNameCells}}" userInput="{{colorProductAttribute1.name}}" stepKey="seeAttributeName1InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsNameCells}}" userInput="{{colorProductAttribute2.name}}" stepKey="seeAttributeName2InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsNameCells}}" userInput="{{colorProductAttribute3.name}}" stepKey="seeAttributeName3InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsSkuCells}}" userInput="{{colorProductAttribute1.name}}" stepKey="seeAttributeSku1InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsSkuCells}}" userInput="{{colorProductAttribute2.name}}" stepKey="seeAttributeSku2InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsSkuCells}}" userInput="{{colorProductAttribute3.name}}" stepKey="seeAttributeSku3InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsPriceCells}}" userInput="{{colorProductAttribute1.price}}" stepKey="seeUniquePrice1InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsPriceCells}}" userInput="{{colorProductAttribute2.price}}" stepKey="seeUniquePrice2InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsPriceCells}}" userInput="{{colorProductAttribute3.price}}" stepKey="seeUniquePrice3InField"/>
+            <see selector="{{AdminProductFormConfigurationsSection.currentVariationsQuantityCells}}" userInput="{{colorProductAttribute.attribute_quantity}}" stepKey="seeQuantityInField"/>
+
+            <amOnPage url="/" stepKey="amOnStorefront"/>
+            <waitForPageLoad time="30" stepKey="waitForPageLoad3"/>
+
+            <click userInput="{{_defaultCategory.name}}" stepKey="clickOnCategoryName"/>
+            <waitForPageLoad time="30" stepKey="waitForPageLoad4"/>
+
+            <see userInput="{{_defaultProduct.name}}" stepKey="assertProductPresent"/>
+            <see userInput="{{colorProductAttribute1.price}}" stepKey="assertProductPricePresent"/>
+            <click userInput="{{_defaultProduct.name}}" stepKey="clickOnProductName"/>
+            <waitForPageLoad time="30" stepKey="waitForPageLoad5"/>
+
+            <seeInTitle userInput="{{_defaultProduct.name}}" stepKey="assertProductNameTitle"/>
+            <see userInput="{{_defaultProduct.name}}" selector="{{StorefrontProductInfoMainSection.productName}}" stepKey="assertProductName"/>
+            <see userInput="{{colorProductAttribute1.price}}" selector="{{StorefrontProductInfoMainSection.productPrice}}" stepKey="assertProductPrice"/>
+            <see userInput="{{_defaultProduct.sku}}" selector="{{StorefrontProductInfoMainSection.productSku}}" stepKey="assertProductSku"/>
+
+            <see selector="{{StorefrontProductInfoMainSection.productAttributeTitle1}}" userInput="{{colorProductAttribute.default_label}}" stepKey="seeColorAttributeName1"/>
+            <see selector="{{StorefrontProductInfoMainSection.productAttributeOptions1}}" userInput="{{colorProductAttribute1.name}}" stepKey="seeInDropDown1"/>
+            <see selector="{{StorefrontProductInfoMainSection.productAttributeOptions1}}" userInput="{{colorProductAttribute2.name}}" stepKey="seeInDropDown2"/>
+            <see selector="{{StorefrontProductInfoMainSection.productAttributeOptions1}}" userInput="{{colorProductAttribute3.name}}" stepKey="seeInDropDown3"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/README.md
index aa4342bf3a4e10d4e2a7cbb2183169057e6c25ea..3db572028f728cf2174516c41a3b7aef1369e8ca 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_ConfigurableProduct** Module.
+The Functional Tests Module for **Magento_ConfigurableProduct** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/composer.json
index 6cdd99c2e0cd6c2d2485d88c410c1f9de50853ba..580578d805f409bb2f259196b00b0dac0e157a09 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct/composer.json
@@ -1,59 +1,42 @@
 {
     "name": "magento/magento2-functional-test-module-configurable-product",
-    "description": "Magento 2 Acceptance Test Module Configurable Product",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop",
-        "magento/magento2-functional-test-module-catalog": "dev-master"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-msrp": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Configurable Product",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-msrp": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ConfigurableProduct\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/ConfigurableProduct"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProduct"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/README.md
index f64eca364e9089294c0ce4e4e86fc79cf7dcf4e8..ebd5a01b14fa913d95474f74f70565b56cb5fbd3 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_ConfigurableProductSales** Module.
+The Functional Tests Module for **Magento_ConfigurableProductSales** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/composer.json
index f9cb9a3e40432efa4d112648cbc37338dcd95333..eb1f9891fa068d47b3ca0384ab62956669c466d7 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-configurable-product-sales",
-    "description": "Magento 2 Acceptance Test Module Configurable Product Sales",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Configurable Product Sales",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ConfigurableProductSales\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/ConfigurableProductSales"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ConfigurableProductSales"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/README.md
index 4b862fdfeea5984f5b69e099cc38520ae01b90e5..1baafbefac03a34430009bba25ec31b76d55ec4d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Contact** Module.
+The Functional Tests Module for **Magento_Contact** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/composer.json
index 11531b5e5f4cd183b47764ea752cb7d645282263..55311d1c6fcd03db8769356031f50524f284e255 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-contact",
-    "description": "Magento 2 Acceptance Test Module Contact",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Contact",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Contact\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Contact"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Contact"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/README.md
index f218201d7c99f065edeedeb018fc5c575b9cec3f..ed80d8f232ca797e42d1561b6ad851cceb85f49c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Cookie** Module.
+The Functional Tests Module for **Magento_Cookie** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/composer.json
index cf0a7bc2cb481211dfe80a1447a887c91ee31a93..2fd3ec251ae38f2ea1efba4ed37f84b4949a4821 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-cookie",
-    "description": "Magento 2 Acceptance Test Module Cookie",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Cookie",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Cookie\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Cookie"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cookie"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a3394b9a18177f3af11f848d8b6447aad5bc3e4d
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_Cron** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..7982a6dd9c4e82a283f595b47e48078c5891213f
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron/composer.json
@@ -0,0 +1,33 @@
+{
+    "name": "magento/magento2-functional-test-module-cron",
+    "description": "Magento 2 Functional Test Module Cron",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\Cron\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Cron"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/README.md
index 110a01dc96d58307519f1089e39dd71204ce421a..e5e9c0458b1b692b54f4c9dcbdd100162e1a1645 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CurrencySymbol** Module.
+The Functional Tests Module for **Magento_CurrencySymbol** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/composer.json
index 9568fdb29ca38d904862b179a2f224460af4fa82..abd3fe78abde0aabbd7302d4a785ee6bf8a45511 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-currency-symbol",
-    "description": "Magento 2 Acceptance Test Module Currency Symbol",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Currency Symbol",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CurrencySymbol\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CurrencySymbol"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CurrencySymbol"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/AdminCreateCustomerCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/AdminCreateCustomerCest.xml
index b577bca92e34f747dda87b98b4d83a3894471b74..b0a4cb06c0842fd7c178c6877294123fd430f36e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/AdminCreateCustomerCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/AdminCreateCustomerCest.xml
@@ -21,29 +21,26 @@
                 <testCaseId value="MAGETWO-72095"/>
                 <group value="customer"/>
                 <group value="create"/>
-                <env value="chrome"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="navigateToAdmin"/>
-            <fillField userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" selector="{{AdminLoginFormSection.username}}" mergeKey="fillUsername"/>
-            <fillField userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" selector="{{AdminLoginFormSection.password}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickLogin"/>
-            <amOnPage url="{{AdminCustomerPage.url}}" mergeKey="navigateToCustomers"/>
-            <click selector="{{AdminCustomerMainActionsSection.addNewCustomer}}" mergeKey="clickCreateCustomer"/>
-            <fillField userInput="{{CustomerEntityOne.firstname}}" selector="{{AdminNewCustomerAccountInformationSection.firstName}}" mergeKey="fillFirstName"/>
-            <fillField userInput="{{CustomerEntityOne.lastname}}" selector="{{AdminNewCustomerAccountInformationSection.lastName}}" mergeKey="fillLastName"/>
-            <fillField userInput="{{CustomerEntityOne.email}}" selector="{{AdminNewCustomerAccountInformationSection.email}}" mergeKey="fillEmail"/>
-            <click selector="{{AdminNewCustomerMainActionsSection.saveButton}}" mergeKey="saveCustomer"/>
-            <waitForElementNotVisible selector="div [data-role='spinner']" time="10" mergeKey="waitForSpinner1"/>
-            <seeElement selector="{{AdminCustomerMessagesSection.successMessage}}" mergeKey="assertSuccessMessage"/>
-
-            <click selector="{{AdminCustomerFiltersSection.filtersButton}}" mergeKey="openFilter"/>
-            <fillField userInput="{{CustomerEntityOne.firstname}}" selector="{{AdminCustomerFiltersSection.nameInput}}" mergeKey="filterFirstName"/>
-            <click selector="{{AdminCustomerFiltersSection.apply}}" mergeKey="applyFilter"/>
-            <waitForElementNotVisible selector="div [data-role='spinner']" time="10" mergeKey="waitForSpinner2"/>
-            <see userInput="{{CustomerEntityOne.firstname}}" selector="{{AdminCustomerGridSection.customerGrid}}" mergeKey="assertFirstName"/>
-            <see userInput="{{CustomerEntityOne.lastname}}" selector="{{AdminCustomerGridSection.customerGrid}}" mergeKey="assertLastName"/>
-            <see userInput="{{CustomerEntityOne.email}}" selector="{{AdminCustomerGridSection.customerGrid}}" mergeKey="assertEmail"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="navigateToAdmin"/>
+            <fillField userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" selector="{{AdminLoginFormSection.username}}" stepKey="fillUsername"/>
+            <fillField userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" selector="{{AdminLoginFormSection.password}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
+            <amOnPage url="{{AdminCustomerPage.url}}" stepKey="navigateToCustomers"/>
+            <click selector="{{AdminCustomerMainActionsSection.addNewCustomer}}" stepKey="clickCreateCustomer"/>
+            <fillField userInput="{{CustomerEntityOne.firstname}}" selector="{{AdminNewCustomerAccountInformationSection.firstName}}" stepKey="fillFirstName"/>
+            <fillField userInput="{{CustomerEntityOne.lastname}}" selector="{{AdminNewCustomerAccountInformationSection.lastName}}" stepKey="fillLastName"/>
+            <fillField userInput="{{CustomerEntityOne.email}}" selector="{{AdminNewCustomerAccountInformationSection.email}}" stepKey="fillEmail"/>
+            <click selector="{{AdminNewCustomerMainActionsSection.saveButton}}" stepKey="saveCustomer"/>
+            <waitForElementNotVisible selector="div [data-role='spinner']" time="10" stepKey="waitForSpinner1"/>
+            <seeElement selector="{{AdminCustomerMessagesSection.successMessage}}" stepKey="assertSuccessMessage"/>
+            <click selector="{{AdminCustomerFiltersSection.filtersButton}}" stepKey="openFilter"/>
+            <fillField userInput="{{CustomerEntityOne.email}}" selector="{{AdminCustomerFiltersSection.emailInput}}" stepKey="filterEmail"/>
+            <click selector="{{AdminCustomerFiltersSection.apply}}" stepKey="applyFilter"/>
+            <waitForElementNotVisible selector="div [data-role='spinner']" time="10" stepKey="waitForSpinner2"/>
+            <see userInput="{{CustomerEntityOne.firstname}}" selector="{{AdminCustomerGridSection.customerGrid}}" stepKey="assertFirstName"/>
+            <see userInput="{{CustomerEntityOne.lastname}}" selector="{{AdminCustomerGridSection.customerGrid}}" stepKey="assertLastName"/>
+            <see userInput="{{CustomerEntityOne.email}}" selector="{{AdminCustomerGridSection.customerGrid}}" stepKey="assertEmail"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontCreateCustomerCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontCreateCustomerCest.xml
index 37fe0017b8685108e649e6f1800e39b54d20a29a..80ab4ea6d9c1343972c6cc96891c679eadc85e9d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontCreateCustomerCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontCreateCustomerCest.xml
@@ -21,22 +21,19 @@
                 <testCaseId value="MAGETWO-23546"/>
                 <group value="customer"/>
                 <group value="create"/>
-                <env value="chrome"/>
-                <env value="firefox"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage mergeKey="amOnStorefrontPage"  url="/"/>
-            <click mergeKey="clickOnCreateAccountLink" selector="{{StorefrontPanelHeaderSection.createAnAccountLink}}"/>
-            <fillField  mergeKey="fillFirstName" userInput="{{CustomerEntityOne.firstname}}" selector="{{StorefrontCustomerCreateFormSection.firstnameField}}"/>
-            <fillField  mergeKey="fillLastName" userInput="{{CustomerEntityOne.lastname}}" selector="{{StorefrontCustomerCreateFormSection.lastnameField}}"/>
-            <fillField  mergeKey="fillEmail" userInput="{{CustomerEntityOne.email}}" selector="{{StorefrontCustomerCreateFormSection.emailField}}"/>
-            <fillField  mergeKey="fillPassword" userInput="{{CustomerEntityOne.password}}" selector="{{StorefrontCustomerCreateFormSection.passwordField}}"/>
-            <fillField  mergeKey="fillConfirmPassword" userInput="{{CustomerEntityOne.password}}" selector="{{StorefrontCustomerCreateFormSection.confirmPasswordField}}"/>
-            <click mergeKey="clickCreateAccountButton" selector="{{StorefrontCustomerCreateFormSection.createAccountButton}}"/>
-            <see mergeKey="seeThankYouMessage" userInput="Thank you for registering with Main Website Store."/>
-            <see mergeKey="seeFirstName" userInput="{{CustomerEntityOne.firstname}}" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <see mergeKey="seeLastName" userInput="{{CustomerEntityOne.lastname}}" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <see mergeKey="seeEmail" userInput="{{CustomerEntityOne.email}}" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <amOnPage stepKey="amOnStorefrontPage"  url="/"/>
+            <click stepKey="clickOnCreateAccountLink" selector="{{StorefrontPanelHeaderSection.createAnAccountLink}}"/>
+            <fillField  stepKey="fillFirstName" userInput="{{CustomerEntityOne.firstname}}" selector="{{StorefrontCustomerCreateFormSection.firstnameField}}"/>
+            <fillField  stepKey="fillLastName" userInput="{{CustomerEntityOne.lastname}}" selector="{{StorefrontCustomerCreateFormSection.lastnameField}}"/>
+            <fillField  stepKey="fillEmail" userInput="{{CustomerEntityOne.email}}" selector="{{StorefrontCustomerCreateFormSection.emailField}}"/>
+            <fillField  stepKey="fillPassword" userInput="{{CustomerEntityOne.password}}" selector="{{StorefrontCustomerCreateFormSection.passwordField}}"/>
+            <fillField  stepKey="fillConfirmPassword" userInput="{{CustomerEntityOne.password}}" selector="{{StorefrontCustomerCreateFormSection.confirmPasswordField}}"/>
+            <click stepKey="clickCreateAccountButton" selector="{{StorefrontCustomerCreateFormSection.createAccountButton}}"/>
+            <see stepKey="seeThankYouMessage" userInput="Thank you for registering with Main Website Store."/>
+            <see stepKey="seeFirstName" userInput="{{CustomerEntityOne.firstname}}" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <see stepKey="seeLastName" userInput="{{CustomerEntityOne.lastname}}" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <see stepKey="seeEmail" userInput="{{CustomerEntityOne.email}}" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
         </test>
     </cest>
 </config>
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontPersistedCustomerLoginCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontPersistedCustomerLoginCest.xml
index 2e039b51bf107433c1269bf790e510b061fe6d50..2045fd3a97a226f81bbc6fd3edad688ce19a999b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontPersistedCustomerLoginCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Cest/StorefrontPersistedCustomerLoginCest.xml
@@ -14,10 +14,10 @@
             <stories value="Persisted customer can login from storefront."/>
         </annotations>
         <before>
-            <createData mergeKey="customer" entity="Simple_US_Customer"/>
+            <createData stepKey="customer" entity="Simple_US_Customer"/>
         </before>
         <after>
-            <deleteData mergeKey="deleteCustomer" createDataKey="customer" />
+            <deleteData stepKey="deleteCustomer" createDataKey="customer" />
         </after>
         <test name="StorefrontPersistedCustomerLoginTest">
             <annotations>
@@ -26,18 +26,14 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="MAGETWO-72103"/>
                 <group value="customer"/>
-                <env value="chrome"/>
-                <env value="firefox"/>
-                <env value="phantomjs"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage mergeKey="amOnSignInPage"  url="{{StorefrontCustomerSignInPage.url}}"/>
-            <fillField  mergeKey="fillEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerSignInFormSection.emailField}}"/>
-            <fillField  mergeKey="fillPassword" userInput="$$customer.password$$" selector="{{StorefrontCustomerSignInFormSection.passwordField}}"/>
-            <click mergeKey="clickSignInAccountButton" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
-            <see mergeKey="seeFirstName" userInput="$$customer.firstname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <see mergeKey="seeLastName" userInput="$$customer.lastname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <see mergeKey="seeEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <amOnPage stepKey="amOnSignInPage"  url="{{StorefrontCustomerSignInPage.url}}"/>
+            <fillField  stepKey="fillEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerSignInFormSection.emailField}}"/>
+            <fillField  stepKey="fillPassword" userInput="$$customer.password$$" selector="{{StorefrontCustomerSignInFormSection.passwordField}}"/>
+            <click stepKey="clickSignInAccountButton" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
+            <see stepKey="seeFirstName" userInput="$$customer.firstname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <see stepKey="seeLastName" userInput="$$customer.lastname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <see stepKey="seeEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/README.md
index a7c25afc9a39e634937ea39fd9ec8f69e6aaf016..cb51dcef8c48e2abd6ee91c3a0de61fb5a5baa02 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Customer** Module.
+The Functional Tests Module for **Magento_Customer** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Section/AdminCustomerFiltersSection.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Section/AdminCustomerFiltersSection.xml
index 57449d2b22bfb2c7002f791825d87912e481d15c..8e21effe98df914e2aceb1bfe9ffa352056a4329 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Section/AdminCustomerFiltersSection.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/Section/AdminCustomerFiltersSection.xml
@@ -11,6 +11,7 @@
     <section name="AdminCustomerFiltersSection">
         <element name="filtersButton" type="button" selector="#container > div > div.admin__data-grid-header > div:nth-child(1) > div.data-grid-filters-actions-wrap > div > button" timeout="30"/>
         <element name="nameInput" type="input" selector="input[name=name]"/>
+        <element name="emailInput" type="input" selector="input[name=email]"/>
         <element name="apply" type="button" selector="button[data-action=grid-filter-apply]" timeout="30"/>
     </section>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/composer.json
index 61a6eddb0edff54018bee7064a27e6f1d644ccb7..619e4f895373b330bf1ca925973487ced655441a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer/composer.json
@@ -1,67 +1,50 @@
 {
     "name": "magento/magento2-functional-test-module-customer",
-    "description": "Magento 2 Acceptance Test Module Customer",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop",
-        "magento/magento2-functional-test-module-catalog": "dev-master"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-newsletter": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-wishlist": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-review": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master",
-        "magento/magento2-functional-test-module-integration": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Customer",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-integration": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-newsletter": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-review": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-wishlist": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Customer\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Customer"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Customer"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerAnalytics/composer.json
index 2f6c9d54e2b24e8e8c890e036abd163d594a861f..84a73e12eb4ff6fd8a2d8ac190c8fb793c89cb5d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerAnalytics/composer.json
@@ -1,42 +1,25 @@
 {
     "name": "magento/magento2-functional-test-module-customer-analytics",
     "description": "Magento 2 Acceptance Test Module Customer Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-customer": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CustomerAnalytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/README.md
index 05e03b11a1b8cd6117a67dbe4464122abb379ed1..ebeb51bf1e4f23fe717ccebd5074371645392167 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_CustomerImportExport** Module.
+The Functional Tests Module for **Magento_CustomerImportExport** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/composer.json
index df1b19f9e528c3ccf3634a2006968794a1c29e60..dfa5a2761e5a4e65a076d65e0bfe7d710373b332 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-customer-import-export",
-    "description": "Magento 2 Acceptance Test Module Customer Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Customer Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\CustomerImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/CustomerImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/CustomerImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..20704cfd90ce684ce0bac32d69be7c1140253555
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_Deploy** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..8f5f42b11e85a5baa2a16f39e65a97b63361b1e7
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy/composer.json
@@ -0,0 +1,36 @@
+{
+    "name": "magento/magento2-functional-test-module-deploy",
+    "description": "Magento 2 Functional Test Module Deploy",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-require-js": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-user": "100.0.0-dev"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\Deploy\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Deploy"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/README.md
index f22b6ee1bf829161112e73785f7780c2911c72d2..4aff70291bbf6ad185e1febe2c48ed2690821bd8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Developer** Module.
+The Functional Tests Module for **Magento_Developer** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/composer.json
index dee920ee0319e2aa7090b179ccaf0c75f2d232b8..ed52481f544f05b86efc47b0bfc820254466cf89 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer/composer.json
@@ -1,50 +1,33 @@
 {
     "name": "magento/magento2-functional-test-module-developer",
-    "description": "Magento 2 Acceptance Test Module Developer",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Developer",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Developer\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Developer"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Developer"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/README.md
index aca768d25105a91b728ba709dbe21e4723e85389..bda156c74e0ca1a6575eb9d86e852128e112390d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Dhl** Module.
+The Functional Tests Module for **Magento_Dhl** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/composer.json
index 0a9e884bde641ea54e9b208b7efd0e8d72c4f578..a7c5fd0f6cf5f05a6ba2c7a1cc7150cbc34c20db 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl/composer.json
@@ -1,57 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-dhl",
-    "description": "Magento 2 Acceptance Test Module Dhl",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Dhl",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Dhl\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Dhl"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Dhl"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/README.md
index 450176d56505f66d628c9ec1812c76f47bffb5cd..b028b5b4c9ca59024329a6c08ebaf9bf212f8dfb 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Directory** Module.
+The Functional Tests Module for **Magento_Directory** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/composer.json
index 3289183835004fef7dce6290c85f29cd7654c85d..9efba5d2592bdbf450ca67bc3b0169da4d39460d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-directory",
-    "description": "Magento 2 Acceptance Test Module Directory",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Directory",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Directory\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Directory"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Directory"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/README.md
index b32c7fd5a8d29c1031e0804c53ad1a0313da05ed..cf2e356526c00c1dd36ce0945b5135ff3b506494 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Downloadable** Module.
+The Functional Tests Module for **Magento_Downloadable** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/composer.json
index 7f3a10bdbca744658435a010fb8b78194bc49995..242492bc7e0130957902541b8ef364f51f40eb09 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable/composer.json
@@ -1,64 +1,47 @@
 {
     "name": "magento/magento2-functional-test-module-downloadable",
-    "description": "Magento 2 Acceptance Test Module Downloadable",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-gift-message": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Downloadable",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-gift-message": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Downloadable\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Downloadable"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Downloadable"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/README.md
index 7d1d4ce593856207871cfb3769217e1cbb29a33c..7edcc4ffcb39550a56b8bd1379322ae7bf4be096 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_DownloadableImportExport** Module.
+The Functional Tests Module for **Magento_DownloadableImportExport** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/composer.json
index a6290026e9cd2a14357e880db60153996e50f134..1d45efe751cc3ccf66e3201dd3e98a993f433e35 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-downloadable-import-export",
-    "description": "Magento 2 Acceptance Test Module Downloadable Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-catalog-import-export": "dev-master",
-        "magento/magento2-functional-test-module-downloadable": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Downloadable Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-downloadable": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\DownloadableImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/DownloadableImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/DownloadableImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/README.md
index 3ab73a4d5c7db2a5ee4a084e121dd5204717a59a..23724b09bd2cfd8749ef3aeab0e63cd555323c53 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_EAV** Module.
+The Functional Tests Module for **Magento_Eav** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/composer.json
index 8052d51dfb3322ee15793f8b59f6b571fc21fe37..457543c13e020f3775d789952bed6423dc8056d5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-eav",
-    "description": "Magento 2 Acceptance Test Module Eav",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Eav",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Eav\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Eav"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Eav"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/README.md
index af55ead5c200d46ee2e5deabb1019a25c40b20c3..413b1bcbbb525cd87722b4c34011a8706a8acb39 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Email** Module.
+The Functional Tests Module for **Magento_Email** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/composer.json
index 98f01cf7ec5a9c12dc72cae36d484fb5c8478355..0f8d5b27a3ed5e987da9d9f2c1837ca05748278c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-email",
-    "description": "Magento 2 Acceptance Test Module Email",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-variable": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Email",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-variable": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Email\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Email"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Email"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/README.md
index c37fc732b0b87bb319ad8972fc2aee6fa2e3f875..61aa9a448b743ed0effab0ffa41d9c849dabb2ea 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_EncryptionKey** Module.
+The Functional Tests Module for **Magento_EncryptionKey** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/composer.json
index 933fe884401994db5ac1c232aeccf0afff3522b5..4e8debbc89755f74b339fbc7325c1a3a074186af 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey/composer.json
@@ -1,50 +1,33 @@
 {
     "name": "magento/magento2-functional-test-module-encryption-key",
-    "description": "Magento 2 Acceptance Test Module Encryption Key",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Encryption Key",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\EncryptionKey\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/EncryptionKey"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/EncryptionKey"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/README.md
index cd33bda917f5c9e647de524ca2defc1129fc950e..93d1828ef4ccd0729351aa896b27b7767fad6cf2 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Fedex** Module.
+The Functional Tests Module for **Magento_Fedex** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/composer.json
index f5102092a43c4d58ffa3ee56d2f3ffe5148f4a64..ecc4a6e3886839090d63a9f3f6c4970eb5c38c71 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex/composer.json
@@ -1,56 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-fedex",
-    "description": "Magento 2 Acceptance Test Module Fedex",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Fedex",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Fedex\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Fedex"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Fedex"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/README.md
index bc57464b7ed2fa6c3dae332a06502223d728acb6..49fd114a43a24e7c92df0544a0b61c088c200999 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_GiftMessage** Module.
+The Functional Tests Module for **Magento_GiftMessage** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/composer.json
index cf76a42eddc81be66216525c88a1ef2bd7d40f45..15bc979a7e7b8f2d69ebe04cb81ad358c8de66ed 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage/composer.json
@@ -1,56 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-gift-message",
-    "description": "Magento 2 Acceptance Test Module Gift Message",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Gift Message",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\GiftMessage\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/GiftMessage"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GiftMessage"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/README.md
index 14b40663eff162f4cd63372af443cfc5f1698b64..6e3595cd366c6dd0fc7a51703b702895f05a513f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_GoogleAdwords** Module.
+The Functional Tests Module for **Magento_GoogleAdwords** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/composer.json
index ca0a31fa03117cb47cb80c73965b02588dc7b69a..b91c49343d1037ec4c66ddc55390a184d60334d8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords/composer.json
@@ -1,50 +1,33 @@
 {
     "name": "magento/magento2-functional-test-module-google-adwords",
-    "description": "Magento 2 Acceptance Test Module Google Adwords",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Google Adwords",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\GoogleAdwords\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/GoogleAdwords"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAdwords"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/README.md
index 28c1ed435eab4875de74300325de24b786b63aae..0fa9dbd614ae7b33ea66400a875e6e8471299a7a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_GoogleAnalytics** Module.
+The Functional Tests Module for **Magento_GoogleAnalytics** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/composer.json
index 5bbef3c149b6cf0968db7e0a330c0c262d34710a..d020e266ca9c5db5d93b55226b7461825f663906 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-google-analytics",
-    "description": "Magento 2 Acceptance Test Module Google Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-cookie": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Google Analytics",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-cookie": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\GoogleAnalytics\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/GoogleAnalytics"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleAnalytics"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/README.md
index cf934ee7882e4962c570a66d403832e33541303b..9bdf02b6170ed5a381c329991a71adaba644e519 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_GoogleOptimizer** Module.
+The Functional Tests Module for **Magento_GoogleOptimizer** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/composer.json
index 1454630bd0a75263524240d84898a60ab75739d3..8dc7207d42b779d24ac00c1328d4af1d973a9697 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-google-optimizer",
-    "description": "Magento 2 Acceptance Test Module Google Optimizer",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-google-analytics": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Google Optimizer",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-google-analytics": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\GoogleOptimizer\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/GoogleOptimizer"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GoogleOptimizer"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1f48eef7f97a7cf9f12b0bfe1f39dd209979779f
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_GraphQl** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..296a254a4d213036223154852e673d8c1928ed1b
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl/composer.json
@@ -0,0 +1,35 @@
+{
+    "name": "magento/magento2-functional-test-module-graph-ql",
+    "description": "Magento 2 Functional Test Module Graph Ql",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-webapi": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\GraphQl\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GraphQl"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedImportExport/composer.json
index faafa32659f03b6f6c8ad5aa22107336c13302a4..05f0d72d0e740d04c70d662a0f3d3fefc72eb8c0 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedImportExport/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-grouped-import-export",
-    "description": "Magento 2 Acceptance Test Module Grouped Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-import-export": "dev-master",
-        "magento/magento2-functional-test-module-catalog-import-export": "dev-master",
-        "magento/magento2-functional-test-module-grouped-product": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Grouped Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-import-export": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-grouped-product": "100.0.0-dev",
+        "magento/magento2-functional-test-module-import-export": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\GroupedImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/GroupedImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/README.md
index ed07eaabba75af9d0f1f4afb3daed799ece2cfeb..edf1e0dc3d2f571aba7e21893b7e01090d641fa2 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_GroupedProduct** Module.
+The Functional Tests Module for **Magento_GroupedProduct** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/composer.json
index 7b76ef1ad97666e2a5d171e5fb4844a0b7d4c06b..036d0130867c8fa164c01283481cf8520fa49381 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct/composer.json
@@ -1,60 +1,43 @@
 {
     "name": "magento/magento2-functional-test-module-grouped-product",
-    "description": "Magento 2 Acceptance Test Module Grouped Product",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-msrp": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Grouped Product",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-msrp": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\GroupedProduct\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/GroupedProduct"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/GroupedProduct"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/README.md
index 5723866dc44c2dcc3bda1567054b47eb87f8de60..b762f5fb7351cc3f6446002d13fe9f88063ed675 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_ImportExport** Module.
+The Functional Tests Module for **Magento_ImportExport** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/composer.json
index 1e254c70045a16cb13ade749788a7ed57fffcb8c..ccd2b010ff738032258f23b810fcdd6ef8587d08 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-import-export",
-    "description": "Magento 2 Acceptance Test Module Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/ImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/README.md
index f59821dc099cda42573a2c224d129b835e138a15..21212a0fed31e4243776a9360e12242292cfa56a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Indexer** Module.
+The Functional Tests Module for **Magento_Indexer** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/composer.json
index a56ee31fae160173532fcb1977f16d19adae377d..7f118d8d4e0aa8af9a9ced90ea469b3c8366275f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-indexer",
-    "description": "Magento 2 Acceptance Test Module Indexer",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Indexer",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Indexer\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Indexer"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Indexer"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9975174d27ee7900e32a920a513694029cfc0bcf
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_InstantPurchase** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..2004570a0cad6b9716263fb97af58adffd6182f4
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase/composer.json
@@ -0,0 +1,38 @@
+{
+    "name": "magento/magento2-functional-test-module-instant-purchase",
+    "description": "Magento 2 Functional Test Module Instant Purchase",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-vault": "100.0.0-dev"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\InstantPurchase\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/InstantPurchase"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/README.md
index 08c9cd5f24f40966af74318a222ae9b1eb749b13..2f024c81e5141583489d41c62d7ea85b4257d75e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Integration** Module.
+The Functional Tests Module for **Magento_Integration** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/composer.json
index 2c776a48ae4d6a51e5a33328ee9dcf1df17df942..8ff747736c94a4ac561b35f55d6dfb480cd34fe5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-integration",
-    "description": "Magento 2 Acceptance Test Module Integration",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-user": "dev-master",
-        "magento/magento2-functional-test-module-security": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Integration",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-security": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-user": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Integration\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Integration"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Integration"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/README.md
index 89ac42d6134b18d5c947ce49b09454349657690e..6c864b9f5eeddd66bd116b73e563a63c1ceb1828 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_LayeredNavigation** Module.
+The Functional Tests Module for **Magento_LayeredNavigation** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/composer.json
index 5b74e905bee9926f93f970d8ef3876cffd2464b2..4579bbc1cbbd8c1290f1532a8d385b714c34c12b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation/composer.json
@@ -1,50 +1,33 @@
 {
     "name": "magento/magento2-functional-test-module-layered-navigation",
-    "description": "Magento 2 Acceptance Test Module Layered Navigation",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Layered Navigation",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\LayeredNavigation\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/LayeredNavigation"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/LayeredNavigation"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/README.md
index cfd23dfcbace3ef926c420a4a3b5330ab1d254a8..5c744ec36f1be2f44329ea9aebfeedc79c61ff05 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Marketplace** Module.
+The Functional Tests Module for **Magento_Marketplace** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/composer.json
index d3f589a31a05a103d6b12e93a9665b99f2ae2709..b1249f0ef9cc0aa5843f645f847b0614ffcb11c8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-marketplace",
-    "description": "Magento 2 Acceptance Test Module Marketplace",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Marketplace",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Marketplace\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Marketplace"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Marketplace"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/README.md
index bd023f6f926d4b72fe5d2979c5c0daca6f5ae673..ee885969bb1273beaf6f1d3066541e7a0a84e5ed 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_MediaStorage** Module.
+The Functional Tests Module for **Magento_MediaStorage** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/composer.json
index cc893b603f40aedf17460562d049cec93dcde872..6326c8e7af73e5f798f2a3c2bff2348819417308 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-media-storage",
-    "description": "Magento 2 Acceptance Test Module Media Storage",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Media Storage",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\MediaStorage\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/MediaStorage"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/MediaStorage"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Msrp/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Msrp/composer.json
index 8b3fcba7e67eed9b772484c121d004f7d18d0c17..fe8ddd6d3b55b99bf5377f76da485b1622083309 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Msrp/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Msrp/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-msrp",
-    "description": "Magento 2 Acceptance Test Module Msrp",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-downloadable": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-grouped-product": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Msrp",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-downloadable": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-grouped-product": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Msrp\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Msrp"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Msrp"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/README.md
index 5eac4359473be6a08a255ef5c69fd4ffd52c6b7a..b6e1b54d6ac6e27421416ca9804cd9df649de94b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Multishipping** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Multishipping** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/composer.json
index 809353b1eaa310d5afd5a110e3eb8e5bbc178ff9..177fc24b9d0d7d0a2a206f5d94a53e1530b42bca 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping/composer.json
@@ -1,56 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-multishipping",
-    "description": "Magento 2 Acceptance Test Module Multishipping",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Multishipping",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Multishipping\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Multishipping"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Multishipping"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/README.md
index 68dd1d5267af30129b0c82dc58daad2719367113..c6d4c6906be90e400eb41400b0fe7b73f7ee7f7c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_NewRelicReporting** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_NewRelicReporting** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/composer.json
index e2ce994efa1e63798c79b4299c7014e552d96c40..2a2cda0f85f463be3e4b0e0965627f136c43b899 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-new-relic-reporting",
-    "description": "Magento 2 Acceptance Test Module New Relic Reporting",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-configurable-product": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module New Relic Reporting",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-configurable-product": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\NewRelicReporting\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/NewRelicReporting"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/NewRelicReporting"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/README.md
index b38526eec86535600576952a2f1d74ad651389cf..95a365b8b8f79a1b9031642f253947ce73021f9f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Newsletter** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Newsletter** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/composer.json
index 34046ce9e836cad7efea5f570396e54a04f87fd4..eb952a34a048330b8837f049e63f83de138fc5ed 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter/composer.json
@@ -1,55 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-newsletter",
-    "description": "Magento 2 Acceptance Test Module Newsletter",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-email": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Newsletter",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-email": "100.0.0-dev",
+        "magento/magento2-functional-test-module-require-js": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Newsletter\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Newsletter"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Newsletter"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/README.md
index 46fc09f181aef874fc191e7c5719c709af96e5b8..ba6e5c9680dbd869a5e3326dd6a23a015a3bcea3 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_OfflinePayments** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_OfflinePayments** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/composer.json
index aeed68809acebd546344303fac81aff7223b5621..30c236974bc50feff90790fae46fc6f5bae115a5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments/composer.json
@@ -1,50 +1,33 @@
 {
     "name": "magento/magento2-functional-test-module-offline-payments",
-    "description": "Magento 2 Acceptance Test Module Offline Payments",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Offline Payments",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\OfflinePayments\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/OfflinePayments"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflinePayments"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/README.md
index f430b9b2a1f41e92afd69ccc326d0fdef1aabbc8..42a12e4398e4f8da6fc5c3553a37433c1e5843cc 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_OfflineShipping** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_OfflineShipping** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/composer.json
index babeb8ad2ec6dc7fa7eb95387a820fa21cdff8ed..4decb42f0c1e381861ca2103a25432cee500ad62 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping/composer.json
@@ -1,56 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-offline-shipping",
-    "description": "Magento 2 Acceptance Test Module Offline Shipping",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-sales-rule": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Offline Shipping",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\OfflineShipping\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/OfflineShipping"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/OfflineShipping"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/README.md
index b35a9877c8ba745b3fa84b624894842df1a2b351..8db3000b9408afc392d8752cc87a70dc9a8f627e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_PageCache** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_PageCache** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/composer.json
index 59205152e0d9ed69cb7d91ced006b12d7e2e9649..496108b6f68d94d73529466067ab9c0493a2fb87 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-page-cache",
-    "description": "Magento 2 Acceptance Test Module Page Cache",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Page Cache",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\PageCache\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/PageCache"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/PageCache"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/README.md
index a87d9a4f12b64db9cced4dd08b80f65f3fa87420..7a8fcc6210c9ebb05b8ce19e4b85fc30795e881e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Payment** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Payment** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/composer.json
index ed77d470823995651108acec10aae163c62ee6e6..354652c14364186a4f1fe5beb8f604e7700f64de 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-payment",
-    "description": "Magento 2 Acceptance Test Module Payment",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Payment",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Payment\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Payment"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Payment"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/README.md
index e6c828ce0720681933ef91de0dcab8e49ec92470..820d3acc2e101bdbaafd4740576d0e9b5a0ba550 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_PayPal** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Paypal** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/composer.json
index d82c9ccb34af713cd7580340f8ae016cf8b0fd42..b6df1314b0efc52e899a67ad68027ebafa20ebe9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal/composer.json
@@ -1,63 +1,47 @@
 {
     "name": "magento/magento2-functional-test-module-paypal",
-    "description": "Magento 2 Acceptance Test Module Paypal",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-vault": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Paypal",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-instant-purchase": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-vault": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Paypal\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Paypal"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Paypal"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/README.md
index f0678daf757a04b857e05ad5d6da78a57ce15e29..690db182dcb4f8df45d0d145195cc7f4f7710618 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Persistent** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Persistent** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/composer.json
index 0ee20653fbb801b319c11b02cac2cb91c8aeb6df..bd7db62c886163beefc5a5f55ed54cc1b54b0884 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent/composer.json
@@ -1,53 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-persistent",
-    "description": "Magento 2 Acceptance Test Module Persistent",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Persistent",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cron": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Persistent\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Persistent"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Persistent"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/README.md
index 00b577465e5dc4a1a88ff70fedc6ca0ee2489516..1a78d82877b016f0c61f4368fd9888d64c959803 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_ProductAlert** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_ProductAlert** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/composer.json
index 15988266a20298980501ba1d8f2ae1d0c40ef1ac..7ef8a4a3da73705821453eef3f1d056b5fc8662a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-product-alert",
-    "description": "Magento 2 Acceptance Test Module Product Alert",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Product Alert",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ProductAlert\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/ProductAlert"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductAlert"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/README.md
index 73ee15ca28f4ef67fe2f394b0e114352eae667e8..0a19d3a9d1e60422e163f6529e26151fa2d5e610 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_ProductVideo** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_ProductVideo** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/composer.json
index bc08abd34a11e2fbb9a74437b67fcf6c684522c4..daa23cb4d48c9ef9a1a79219011a82806ae06a0d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-product-video",
-    "description": "Magento 2 Acceptance Test Module Product Video",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Product Video",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ProductVideo\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/ProductVideo"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ProductVideo"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/README.md
index 510a9d5f16d6290de886f900b6cde9c7ad89bf71..17b0bf4c6051661b6aec4cdc7ba1c8deb1bc4a8b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Quote** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Quote** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/composer.json
index 2dba18c3fa4281db713742c2c249ca0e0dd23cae..9468fdf072ebfe9a5649259af72d0d56963e3a64 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote/composer.json
@@ -1,62 +1,45 @@
 {
     "name": "magento/magento2-functional-test-module-quote",
-    "description": "Magento 2 Acceptance Test Module Quote",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-sales-sequence": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Quote",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales-sequence": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Quote\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Quote"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Quote"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/QuoteAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/QuoteAnalytics/composer.json
index b86c40e02fe430dc5168a30181dabe41bffbae50..4bd28d1b3c9031d494ca6930873362d229b03947 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/QuoteAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/QuoteAnalytics/composer.json
@@ -1,42 +1,25 @@
 {
     "name": "magento/magento2-functional-test-module-quote-analytics",
     "description": "Magento 2 Acceptance Test Module Quote Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\QuoteAnalytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/README.md
index ad49607139a7a2fdee6eff5f90066c7a2980db05..d2bcbe81339adcc84d4eed5130fdfd80fd5b08df 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Reports** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Reports** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/composer.json
index f73c4da907fbdf68c3dd3b638737c499ca969ad5..0ed1758889509ec15131e5e6307f3662602db94e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports/composer.json
@@ -1,64 +1,47 @@
 {
     "name": "magento/magento2-functional-test-module-reports",
-    "description": "Magento 2 Acceptance Test Module Reports",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-wishlist": "dev-master",
-        "magento/magento2-functional-test-module-review": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-downloadable": "dev-master",
-        "magento/magento2-functional-test-module-sales-rule": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Reports",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-downloadable": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-review": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev",
+        "magento/magento2-functional-test-module-wishlist": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Reports\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Reports"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Reports"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..64e6b0ef6e139acfd35b8d3eca832d93595d4efe
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_RequireJs** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..91ad289e0428844c5691220301dd99d7c57c062a
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs/composer.json
@@ -0,0 +1,30 @@
+{
+    "name": "magento/magento2-functional-test-module-require-js",
+    "description": "Magento 2 Functional Test Module Require Js",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\RequireJs\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/RequireJs"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/README.md
index b34f3c949e0047266a05c8d0033c4e6fc06a1b57..71b1cdc87d9d66a93ff6ba46940bf291ad7bbf8a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Review** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Review** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/composer.json
index 70f0e295838bd6d73766d40fd218e8dbafd90aa6..6b68bb0edc7579f7f116d80ebd2c460685f7c140 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review/composer.json
@@ -1,56 +1,39 @@
 {
     "name": "magento/magento2-functional-test-module-review",
-    "description": "Magento 2 Acceptance Test Module Review",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-newsletter": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Review",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-newsletter": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Review\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Review"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Review"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ReviewAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ReviewAnalytics/composer.json
index 01772112b17e83d4e043e8201bc371124e47210a..546a20fe50c0f22fff7d92f6506ae02ea63e33e4 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ReviewAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/ReviewAnalytics/composer.json
@@ -1,42 +1,25 @@
 {
     "name": "magento/magento2-functional-test-module-review-analytics",
     "description": "Magento 2 Acceptance Test Module Review Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-review": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-review": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\ReviewAnalytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/README.md
index 864304d41eec8ae07aa9e33a4548922c619bff56..87ea94e0f1d2304a1eeca2f25caff846b6404a9e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Robots** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Robots** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/composer.json
index 082211c40a68f6f95b8a50981f9a12c7991bef4d..27945d5e16138509e1f4012e2c3dc6d91582614c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-robots",
-    "description": "Magento 2 Acceptance Test Module Robots",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Robots",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Robots\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Robots"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Robots"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/README.md
index 04fc8e1c0d0223072d176420260731b20689b2c7..5002c878c2e54d81e41d05bf7e93c152c87c491a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Rss** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Rss** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/composer.json
index d950390b0e1cdd01600d1454a3f5b4af155d384c..e8d57dd2456ccb2895c9629753882bdee1330658 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-rss",
-    "description": "Magento 2 Acceptance Test Module Rss",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Rss",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Rss\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Rss"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rss"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/README.md
index 02eb487f33c526a5fb05e749dc4e210a3f0aa5c3..a797fd63dc668a1192402244e9dc8b8bc7daa553 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Rule** Module.
\ No newline at end of file
+The Functional Tests Module for **Magento_Rule** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/composer.json
index 11cefb3a7dff5e5ef9bd52073625e5458f17dd06..1d19dad8e30a8b8bbbf5e07e0439bb3b8891e88e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-rule",
-    "description": "Magento 2 Acceptance Test Module Rule",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Rule",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Rule\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Rule"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Rule"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/Cest/AdminCreateInvoiceCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/Cest/AdminCreateInvoiceCest.xml
index c043fe298f7674f97be8fd43a458eca86c7db740..e0279c22d9693e192c83bd6becd4b99af46426c1 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/Cest/AdminCreateInvoiceCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/Cest/AdminCreateInvoiceCest.xml
@@ -14,8 +14,8 @@
             <stories value="Create an Invoice via the Admin"/>
         </annotations>
         <before>
-            <createData entity="_defaultCategory" mergeKey="createCategory"/>
-            <createData entity="_defaultProduct" mergeKey="createProduct">
+            <createData entity="_defaultCategory" stepKey="createCategory"/>
+            <createData entity="_defaultProduct" stepKey="createProduct">
                 <required-entity createDataKey="createCategory"/>
             </createData>
         </before>
@@ -27,64 +27,63 @@
                 <severity value="NORMAL"/>
                 <testCaseId value="MAGETWO-72096"/>
                 <group value="sales"/>
-                <env value="chrome"/>
-                <env value="headless"/>
             </annotations>
 
             <!-- todo: Create an order via the api instead of driving the browser  -->
-            <amOnPage url="{{StorefrontCategoryPage.url($$createCategory.name$$)}}" mergeKey="onCategoryPage"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <moveMouseOver selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" mergeKey="hoverProduct"/>
-            <click selector="{{StorefrontCategoryMainSection.AddToCartBtn}}" mergeKey="addToCart"/>
-            <waitForElementVisible selector="{{StorefrontCategoryMainSection.SuccessMsg}}" time="30" mergeKey="waitForProductAdded"/>
-            <click selector="{{StorefrontMiniCartSection.show}}" mergeKey="clickCart"/>
-            <click selector="{{StorefrontMiniCartSection.goToCheckout}}" mergeKey="goToCheckout"/>
-            <waitForPageLoad mergeKey="waitForPageLoad2"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.email}}" userInput="{{CustomerEntityOne.email}}" mergeKey="enterEmail"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.firstName}}" userInput="{{CustomerEntityOne.firstname}}" mergeKey="enterFirstName"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.lastName}}" userInput="{{CustomerEntityOne.lastname}}" mergeKey="enterLastName"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.street}}" userInput="{{CustomerAddressSimple.street[0]}}" mergeKey="enterStreet"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.city}}" userInput="{{CustomerAddressSimple.city}}" mergeKey="enterCity"/>
-            <selectOption selector="{{CheckoutShippingGuestInfoSection.region}}" userInput="{{CustomerAddressSimple.state}}" mergeKey="selectRegion"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.postcode}}" userInput="{{CustomerAddressSimple.postcode}}" mergeKey="enterPostcode"/>
-            <fillField selector="{{CheckoutShippingGuestInfoSection.telephone}}" userInput="{{CustomerAddressSimple.telephone}}" mergeKey="enterTelephone"/>
-            <waitForLoadingMaskToDisappear mergeKey="waitForLoadingMask"/>
-            <click selector="{{CheckoutShippingMethodsSection.firstShippingMethod}}" mergeKey="selectFirstShippingMethod"/>
-            <waitForElement selector="{{CheckoutShippingMethodsSection.next}}" time="30" mergeKey="waitForNextButton"/>
-            <click selector="{{CheckoutShippingMethodsSection.next}}" mergeKey="clickNext"/>
-            <waitForElement selector="{{CheckoutPaymentSection.placeOrder}}" time="30" mergeKey="waitForPlaceOrderButton"/>
-            <click selector="{{CheckoutPaymentSection.placeOrder}}" mergeKey="clickPlaceOrder"/>
-            <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" returnVariable="orderNumber" mergeKey="grabOrderNumber"/>
+            <amOnPage url="{{StorefrontCategoryPage.url($$createCategory.name$$)}}" stepKey="onCategoryPage"/>
+            <waitForPageLoad stepKey="waitForPageLoad1"/>
+            <moveMouseOver selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" stepKey="hoverProduct"/>
+            <click selector="{{StorefrontCategoryMainSection.AddToCartBtn}}" stepKey="addToCart"/>
+            <waitForElementVisible selector="{{StorefrontCategoryMainSection.SuccessMsg}}" time="30" stepKey="waitForProductAdded"/>
+            <click selector="{{StorefrontMiniCartSection.show}}" stepKey="clickCart"/>
+            <click selector="{{StorefrontMiniCartSection.goToCheckout}}" stepKey="goToCheckout"/>
+            <waitForPageLoad stepKey="waitForPageLoad2"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.email}}" userInput="{{CustomerEntityOne.email}}" stepKey="enterEmail"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.firstName}}" userInput="{{CustomerEntityOne.firstname}}" stepKey="enterFirstName"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.lastName}}" userInput="{{CustomerEntityOne.lastname}}" stepKey="enterLastName"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.street}}" userInput="{{CustomerAddressSimple.street[0]}}" stepKey="enterStreet"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.city}}" userInput="{{CustomerAddressSimple.city}}" stepKey="enterCity"/>
+            <selectOption selector="{{CheckoutShippingGuestInfoSection.region}}" userInput="{{CustomerAddressSimple.state}}" stepKey="selectRegion"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.postcode}}" userInput="{{CustomerAddressSimple.postcode}}" stepKey="enterPostcode"/>
+            <fillField selector="{{CheckoutShippingGuestInfoSection.telephone}}" userInput="{{CustomerAddressSimple.telephone}}" stepKey="enterTelephone"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask"/>
+            <click selector="{{CheckoutShippingMethodsSection.firstShippingMethod}}" stepKey="selectFirstShippingMethod"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask2"/>
+            <waitForElement selector="{{CheckoutShippingMethodsSection.next}}" time="30" stepKey="waitForNextButton"/>
+            <click selector="{{CheckoutShippingMethodsSection.next}}" stepKey="clickNext"/>
+            <waitForElement selector="{{CheckoutPaymentSection.placeOrder}}" time="30" stepKey="waitForPlaceOrderButton"/>
+            <click selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/>
+            <grabTextFrom selector="{{CheckoutSuccessMainSection.orderNumber}}" returnVariable="orderNumber" stepKey="grabOrderNumber"/>
             <!-- end todo -->
 
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="goToAdmin"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" mergeKey="fillUsername"/>
-            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickLogin"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="goToAdmin"/>
+            <waitForPageLoad stepKey="waitForPageLoad1"/>
+            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" stepKey="fillUsername"/>
+            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
 
-            <amOnPage url="{{OrdersPage.url}}" mergeKey="onOrdersPage"/>
-            <waitForElementNotVisible selector="{{OrdersGridSection.spinner}}" time="10" mergeKey="waitSpinner1"/>
-            <fillField selector="{{OrdersGridSection.search}}" variable="orderNumber" mergeKey="searchOrderNum"/>
-            <click selector="{{OrdersGridSection.submitSearch}}" mergeKey="submitSearch"/>
-            <waitForElementNotVisible selector="{{OrdersGridSection.spinner}}" time="10" mergeKey="waitSpinner2"/>
+            <amOnPage url="{{OrdersPage.url}}" stepKey="onOrdersPage"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask3"/>
+            <fillField selector="{{OrdersGridSection.search}}" variable="orderNumber" stepKey="searchOrderNum"/>
+            <click selector="{{OrdersGridSection.submitSearch}}" stepKey="submitSearch"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask4"/>
 
-            <click selector="{{OrdersGridSection.firstRow}}" mergeKey="clickOrderRow"/>
-            <click selector="{{OrderDetailsMainActionsSection.invoice}}" mergeKey="clickInvoice"/>
-            <click selector="{{InvoiceNewSection.submitInvoice}}" mergeKey="clickSubmitInvoice"/>
-            <see selector="{{OrderDetailsMessagesSection.successMessage}}" userInput="The invoice has been created." mergeKey="seeSuccessMessage"/>
-            <click selector="{{OrderDetailsOrderViewSection.invoices}}" mergeKey="clickInvoices"/>
-            <waitForElementNotVisible selector="{{OrderDetailsInvoicesSection.spinner}}" time="10" mergeKey="waitSpinner3"/>
-            <see selector="{{OrderDetailsInvoicesSection.content}}" variable="orderNumber" mergeKey="seeInvoice1"/>
-            <see selector="{{OrderDetailsInvoicesSection.content}}" userInput="John Doe" mergeKey="seeInvoice2"/>
-            <click selector="{{OrderDetailsOrderViewSection.information}}" mergeKey="clickInformation"/>
-            <see selector="{{OrderDetailsInformationSection.orderStatus}}" userInput="Processing" mergeKey="seeOrderStatus"/>
-            <amOnPage url="{{InvoicesPage.url}}" mergeKey="goToInvoices"/>
-            <waitForElementNotVisible selector="{{InvoicesGridSection.spinner}}" time="10" mergeKey="waitSpinner4"/>
-            <click selector="{{InvoicesGridSection.filter}}" mergeKey="clickFilters"/>
-            <fillField selector="{{InvoicesFiltersSection.orderNum}}" variable="orderNumber" mergeKey="searchOrderNum2"/>
-            <click selector="{{InvoicesGridSection.firstRow}}" mergeKey="clickInvoice2"/>
-            <see selector="{{InvoiceDetailsInformationSection.orderStatus}}" userInput="Processing" mergeKey="seeOrderStatus2"/>
+            <click selector="{{OrdersGridSection.firstRow}}" stepKey="clickOrderRow"/>
+            <click selector="{{OrderDetailsMainActionsSection.invoice}}" stepKey="clickInvoice"/>
+            <click selector="{{InvoiceNewSection.submitInvoice}}" stepKey="clickSubmitInvoice"/>
+            <see selector="{{OrderDetailsMessagesSection.successMessage}}" userInput="The invoice has been created." stepKey="seeSuccessMessage"/>
+            <click selector="{{OrderDetailsOrderViewSection.invoices}}" stepKey="clickInvoices"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask5" />
+            <see selector="{{OrderDetailsInvoicesSection.content}}" variable="orderNumber" stepKey="seeInvoice1"/>
+            <see selector="{{OrderDetailsInvoicesSection.content}}" userInput="John Doe" stepKey="seeInvoice2"/>
+            <click selector="{{OrderDetailsOrderViewSection.information}}" stepKey="clickInformation"/>
+            <see selector="{{OrderDetailsInformationSection.orderStatus}}" userInput="Processing" stepKey="seeOrderStatus"/>
+            <amOnPage url="{{InvoicesPage.url}}" stepKey="goToInvoices"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMask6" />
+            <click selector="{{InvoicesGridSection.filter}}" stepKey="clickFilters"/>
+            <fillField selector="{{InvoicesFiltersSection.orderNum}}" variable="orderNumber" stepKey="searchOrderNum2"/>
+            <click selector="{{InvoicesGridSection.firstRow}}" stepKey="clickInvoice2"/>
+            <see selector="{{InvoiceDetailsInformationSection.orderStatus}}" userInput="Processing" stepKey="seeOrderStatus2"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/README.md
index 8f897de5484a680b95f1028f33766c731b0821c2..dbaf12404d1575c41d19bd3a768a6b344c548b7e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Sales** Module.
+The Functional Tests Module for **Magento_Sales** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/composer.json
index 5805b9a34c9ce467665f19c751a67fa184ce4963..f9b37ac3d18c36901f5efccbc8e2bfcd7445dbde 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales/composer.json
@@ -1,71 +1,54 @@
 {
     "name": "magento/magento2-functional-test-module-sales",
-    "description": "Magento 2 Acceptance Test Module Sales",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-sales-rule": "dev-master",
-        "magento/magento2-functional-test-module-sales-sequence": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-gift-message": "dev-master",
-        "magento/magento2-functional-test-module-reports": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-wishlist": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Sales",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-gift-message": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-reports": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales-sequence": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev",
+        "magento/magento2-functional-test-module-wishlist": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Sales\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Sales"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sales"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesAnalytics/composer.json
index afba02c119a5502d07c10467530f4dc50f0372bd..0b37233aa5927d02b9eba9bd421b4b77a93b49b7 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesAnalytics/composer.json
@@ -1,42 +1,25 @@
 {
     "name": "magento/magento2-functional-test-module-sales-analytics",
     "description": "Magento 2 Acceptance Test Module Sales Analytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-sales": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SalesAnalytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/README.md
index a0d48d3c62889bf505f52159f0707559580d461e..beeef87b6e7fda42ed642304c4e618ba8ff4956e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_SalesInventory** Module.
+The Functional Tests Module for **Magento_SalesInventory** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/composer.json
index aec10499a8681c0aecebdefa67e8c8069aa967e3..75f35cd1d29fd749262f43b05bfd6ab7eb259864 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-sales-inventory",
-    "description": "Magento 2 Acceptance Test Module Sales Inventory",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Sales Inventory",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SalesInventory\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/SalesInventory"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesInventory"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/Data/SalesRuleData.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/Data/SalesRuleData.xml
deleted file mode 100644
index 3f13fbf02a8fd848f6e2b526794bd180e4046dd4..0000000000000000000000000000000000000000
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/Data/SalesRuleData.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- /**
-  * Copyright © Magento, Inc. All rights reserved.
-  * See COPYING.txt for license details.
-  */
--->
-
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/DataGenerator/etc/dataProfileSchema.xsd">
-    <entity name="SimpleSalesRule" type="SalesRule">
-        <data key="name" unique="suffix">SalesRule</data>
-        <data key="is_active">true</data>
-        <required-entity type="SalesRuleStoreLabel">SalesRuleStoreLabel1</required-entity>
-        <required-entity type="SalesRuleStoreLabel">SalesRuleStoreLabel2</required-entity>
-    </entity>
-    <entity name="SalesRuleStoreLabel1" type="SalesRuleStoreLabel">
-        <data key="store_id">0</data>
-        <data key="store_label">TestRule_Label</data>
-    </entity>
-    <entity name="SalesRuleStoreLabel2" type="SalesRuleStoreLabel">
-        <data key="store_id">1</data>
-        <data key="store_label">TestRule_Label_default</data>
-    </entity>
-</config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/README.md
index 09f32aad6881ffb57ff5d9b2abed4e2fae689950..2180f41bb7e31265f0d7731e1c541d3a08d32133 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_SalesRule** Module.
+The Functional Tests Module for **Magento_SalesRule** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/composer.json
index dca57e5c34452b164b631f39637b0d12a87ee398..0bb3ad9cf6330768d9e33d3b09bf9d6f1398a586 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule/composer.json
@@ -1,66 +1,47 @@
 {
     "name": "magento/magento2-functional-test-module-sales-rule",
-    "description": "Magento 2 Acceptance Test Module Sales Rule",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-rule": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-reports": "dev-master",
-        "magento/magento2-functional-test-module-catalog-rule": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Sales Rule",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-reports": "100.0.0-dev",
+        "magento/magento2-functional-test-module-rule": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SalesRule\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/SalesRule"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesRule"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/README.md
index 8dc5c1445cc95107b16704f05e79e7f209cf61cf..8b3e36c3fda047a7fa55c52e0a78f8cf1327668c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_SalesSequence** Module.
+The Functional Tests Module for **Magento_SalesSequence** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/composer.json
index c395bbb71c5f2e75a1c240b6c82c75610f6fb7b8..218a5e4ce1ff96702b8e79d4bd3d228add9216c8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence/composer.json
@@ -1,46 +1,29 @@
 {
     "name": "magento/magento2-functional-test-module-sales-sequence",
-    "description": "Magento 2 Acceptance Test Module Sales Sequence",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
+    "description": "Magento 2 Functional Test Module Sales Sequence",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SalesSequence\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/SalesSequence"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SalesSequence"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/README.md
index edcd1629bd50f900fd8e2697be7efec9486abff8..1dcde417aed6f0039d80ad65434a4ccb8c60da57 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_SampleData** Module.
+The Functional Tests Module for **Magento_SampleData** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/composer.json
index ef30780208b19602dce821ab2a11c440fd389920..6e6229ae322ba109c6d14314fa8ba7c3f47d1f59 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData/composer.json
@@ -1,46 +1,29 @@
 {
     "name": "magento/magento2-functional-test-module-sample-data",
-    "description": "Magento 2 Acceptance Test Module Sample Data",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
+    "description": "Magento 2 Functional Test Module Sample Data",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SampleData\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/SampleData"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleData"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/Cest/TemplateCestFile.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/Cest/TemplateCestFile.xml
index bc29e788f9025d7deb4dab56e2b7096e09b10788..18b8a30d44193885fb0c15ac5364b4c590ed2222 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/Cest/TemplateCestFile.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/Cest/TemplateCestFile.xml
@@ -26,7 +26,6 @@
                 <severity value=""/>
                 <testCaseId value=""/>
                 <group value=""/>
-                <env value=""/>
             </annotations>
             <!-- ADD TEST STEPS HERE -->
         </test>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..986c2af6164e9b2164f381e976f800750006ec55
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_SampleTemplates** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..da0d8598f8d7d9fd397d359f71be567c9b95499a
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates/composer.json
@@ -0,0 +1,30 @@
+{
+    "name": "magento/magento2-functional-test-module-sample-templates",
+    "description": "Magento 2 Functional Test Module Sample Templates",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\SampleTemplates\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTemplates"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/ActionGroup/SampleActionGroup.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/ActionGroup/SampleActionGroup.xml
index 629688f7437b8d6e0cc9953b491bb5b5075f12d5..b047b19d4a044c8e966712cc958eb4e9fb5c3c24 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/ActionGroup/SampleActionGroup.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/ActionGroup/SampleActionGroup.xml
@@ -12,13 +12,13 @@
         <arguments>
             <argument name="person" defaultValue="SamplePerson"/>
         </arguments>
-        <fillField selector="#foo" userInput="{{person.foo}}" mergeKey="fillField1"/>
-        <fillField selector="#bar" userInput="{{person.bar}}" mergeKey="fillField2"/>
+        <fillField selector="#foo" userInput="{{person.foo}}" stepKey="fillField1"/>
+        <fillField selector="#bar" userInput="{{person.bar}}" stepKey="fillField2"/>
     </actionGroup>
     <actionGroup name="ValidateSlideOutPanelField">
         <arguments>
             <argument name="property" defaultValue=""/>
         </arguments>
-        <see userInput="{{property.name}}" selector="{{ColumnSection.panelFieldLabel(property.section, property.fieldName, property.section, property.name)}}" mergeKey="seePropertyLabel"/>
+        <see userInput="{{property.name}}" selector="{{ColumnSection.panelFieldLabel(property.section, property.fieldName, property.section, property.name)}}" stepKey="seePropertyLabel"/>
     </actionGroup>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AdvancedSampleCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AdvancedSampleCest.xml
index 761635f281886c4ace8a7d6b2a2514d03dd59f48..eddae0242f5d45ace0709f5de978ff1f3cfe2bcf 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AdvancedSampleCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AdvancedSampleCest.xml
@@ -16,7 +16,7 @@
             <group value="skip"/>
         </annotations>
         <before>
-            <createData entity="SamplePerson" mergeKey="beforeData"/>
+            <createData entity="SamplePerson" stepKey="beforeData"/>
         </before>
         <after>
 
@@ -30,26 +30,26 @@
             </annotations>
 
             <!-- Create an entity that depends on another entity -->
-            <createData entity="_defaultCategory" mergeKey="createCategory"/>
-            <createData entity="_defaultProduct" mergeKey="createProduct">
+            <createData entity="_defaultCategory" stepKey="createCategory"/>
+            <createData entity="_defaultProduct" stepKey="createProduct">
                 <required-entity createDataKey="createCategory"/>
             </createData>
 
             <!-- Parameterized url -->
-            <amOnPage url="{{SamplePage.url('foo', SamplePerson.bar)}}" mergeKey="amOnPage"/>
+            <amOnPage url="{{SamplePage.url('foo', SamplePerson.bar)}}" stepKey="amOnPage"/>
 
             <!-- Parameterized selector -->
-            <grabTextFrom selector="{{SampleSection.twoParamElement(SamplePerson.foo, 'bar')}}" returnVariable="myReturnVar" mergeKey="grabTextFrom"/>
+            <grabTextFrom selector="{{SampleSection.twoParamElement(SamplePerson.foo, 'bar')}}" returnVariable="myReturnVar" stepKey="grabTextFrom"/>
 
             <!-- Element with a timeout -->
-            <click selector="{{SampleSection.timeoutElement}}" mergeKey="click"/>
+            <click selector="{{SampleSection.timeoutElement}}" stepKey="click"/>
 
             <!-- ActionGroup -->
-            <actionGroup ref="SampleActionGroup" mergeKey="actionGroup">
+            <actionGroup ref="SampleActionGroup" stepKey="actionGroup">
                 <argument name="person" value="OverrideDefaultPerson"/>
             </actionGroup>
 
-            <actionGroup ref="ValidateSlideOutPanelField" mergeKey="seeAppearanceMinHeightProperty">
+            <actionGroup ref="ValidateSlideOutPanelField" stepKey="seeAppearanceMinHeightProperty">
                 <argument name="property" value="AppearanceMinHeightProperty"/>
             </actionGroup>
         </test>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AssertsCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AssertsCest.xml
index e6b3f9b563112fd110ce986d9b7f7469396c40bf..17366a6518c901cb04e7f72da1887d8b68c557b9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AssertsCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/AssertsCest.xml
@@ -14,83 +14,83 @@
             <group value="skip"/>
         </annotations>
         <before>
-            <createData entity="Simple_US_Customer" mergeKey="createData1"/>
+            <createData entity="Simple_US_Customer" stepKey="createData1"/>
         </before>
         <after>
-            <deleteData createDataKey="createData1" mergeKey="deleteData1"/>
+            <deleteData createDataKey="createData1" stepKey="deleteData1"/>
         </after>
         <test name="AssertTest">
-            <createData entity="Simple_US_Customer" mergeKey="createData2"/>
-            <amOnUrl url="https://www.yahoo.com" mergeKey="amOnPage"/>
-            <waitForElementVisible mergeKey="wait1" selector="#uh-logo" time="10"/>
-            <grabTextFrom returnVariable="text" selector="#uh-logo" mergeKey="grabTextFrom1"/>
+            <createData entity="Simple_US_Customer" stepKey="createData2"/>
+            <amOnUrl url="https://www.yahoo.com" stepKey="amOnPage"/>
+            <waitForElementVisible stepKey="wait1" selector="#uh-logo" time="10"/>
+            <grabTextFrom returnVariable="text" selector="#uh-logo" stepKey="grabTextFrom1"/>
 
             <!-- asserts without variable replacement -->
-            <comment mergeKey="c1" userInput="asserts without variable replacement"/>
-            <assertArrayHasKey mergeKey="assertArrayHasKey" expected="apple" expectedType="string" actual="['orange' => 2, 'apple' => 1]" actualType="const" message="pass"/>
-            <assertArrayNotHasKey mergeKey="assertArrayNotHasKey" expected="kiwi" expectedType="string" actual="['orange' => 2, 'apple' => 1]" message="pass"/>
-            <assertArraySubset mergeKey="assertArraySubset" expected="[1, 2]" actual="[1, 2, 3, 5]" message="pass"/>
-            <assertContains mergeKey="assertContains" expected="ab" expectedType="string" actual="['item1' => 'a', 'item2' => 'ab']" message="pass"/>
-            <assertCount mergeKey="assertCount" expected="2" expectedType="int" actual="['a', 'b']" message="pass"/>
-            <assertEmpty mergeKey="assertEmpty" actual="[]" message="pass"/>
-            <assertEquals mergeKey="assertEquals1" expected="text" expectedType="variable" actual="Yahoo" actualType="string" message="pass"/>
-            <assertEquals mergeKey="assertEquals2" expected="Yahoo" expectedType="string" actual="text" actualType="variable" message="pass"/>
-            <assertFalse mergeKey="assertFalse1" actual="0" actualType="bool" message="pass"/>
-            <assertFileNotExists mergeKey="assertFileNotExists1" actual="/out.txt" actualType="string" message="pass"/>
-            <assertFileNotExists mergeKey="assertFileNotExists2" actual="text" actualType="variable" message="pass"/>
-            <assertGreaterOrEquals mergeKey="assertGreaterOrEquals" expected="2" expectedType="int" actual="5" actualType="int" message="pass"/>
-            <assertGreaterThan mergeKey="assertGreaterThan" expected="2" expectedType="int" actual="5" actualType="int" message="pass"/>
-            <assertGreaterThanOrEqual mergeKey="assertGreaterThanOrEqual" expected="2" expectedType="int" actual="5" actualType="int" message="pass"/>
-            <assertInternalType mergeKey="assertInternalType1" expected="string" expectedType="string" actual="xyz" actualType="string" message="pass"/>
-            <assertInternalType mergeKey="assertInternalType2" expected="int" expectedType="string" actual="21" actualType="int" message="pass"/>
-            <assertInternalType mergeKey="assertInternalType3" expected="string" expectedType="string" actual="text" actualType="variable" message="pass"/>
-            <assertLessOrEquals mergeKey="assertLessOrEquals" expected="5" expectedType="int" actual="2" actualType="int" message="pass"/>
-            <assertLessThan mergeKey="assertLessThan" expected="5" expectedType="int" actual="2" actualType="int" message="pass"/>
-            <assertLessThanOrEqual mergeKey="assertLessThanOrEqual" expected="5" expectedType="int" actual="2" actualType="int" message="pass"/>
-            <assertNotContains mergeKey="assertNotContains1" expected="bc" expectedType="string" actual="['item1' => 'a', 'item2' => 'ab']" message="pass"/>
-            <assertNotContains mergeKey="assertNotContains2" expected="bc" expectedType="string" actual="text" actualType="variable" message="pass"/>
-            <assertNotEmpty mergeKey="assertNotEmpty1" actual="[1, 2]" message="pass"/>
-            <assertNotEmpty mergeKey="assertNotEmpty2" actual="text" actualType="variable" message="pass"/>
-            <assertNotEquals mergeKey="assertNotEquals" expected="2" expectedType="int" actual="5" actualType="int" message="pass" delta=""/>
-            <assertNotNull mergeKey="assertNotNull1" actual="abc" actualType="string" message="pass"/>
-            <assertNotNull mergeKey="assertNotNull2" actual="text" actualType="variable" message="pass"/>
-            <assertNotRegExp mergeKey="assertNotRegExp" expected="/foo/" expectedType="string" actual="bar" actualType="string" message="pass"/>
-            <assertNotSame mergeKey="assertNotSame" expected="log" expectedType="string" actual="tag" actualType="string" message="pass"/>
-            <assertRegExp mergeKey="assertRegExp" expected="/foo/" expectedType="string" actual="foo" actualType="string" message="pass"/>
-            <assertSame mergeKey="assertSame" expected="bar" expectedType="string" actual="bar" actualType="string" message="pass"/>
-            <assertStringStartsNotWith mergeKey="assertStringStartsNotWith" expected="a" expectedType="string" actual="banana" actualType="string" message="pass"/>
-            <assertStringStartsWith mergeKey="assertStringStartsWith" expected="a" expectedType="string" actual="apple" actualType="string" message="pass"/>
-            <assertTrue mergeKey="assertTrue" actual="1" actualType="bool" message="pass"/>
+            <comment stepKey="c1" userInput="asserts without variable replacement"/>
+            <assertArrayHasKey stepKey="assertArrayHasKey" expected="apple" expectedType="string" actual="['orange' => 2, 'apple' => 1]" actualType="const" message="pass"/>
+            <assertArrayNotHasKey stepKey="assertArrayNotHasKey" expected="kiwi" expectedType="string" actual="['orange' => 2, 'apple' => 1]" message="pass"/>
+            <assertArraySubset stepKey="assertArraySubset" expected="[1, 2]" actual="[1, 2, 3, 5]" message="pass"/>
+            <assertContains stepKey="assertContains" expected="ab" expectedType="string" actual="['item1' => 'a', 'item2' => 'ab']" message="pass"/>
+            <assertCount stepKey="assertCount" expected="2" expectedType="int" actual="['a', 'b']" message="pass"/>
+            <assertEmpty stepKey="assertEmpty" actual="[]" message="pass"/>
+            <assertEquals stepKey="assertEquals1" expected="text" expectedType="variable" actual="Yahoo" actualType="string" message="pass"/>
+            <assertEquals stepKey="assertEquals2" expected="Yahoo" expectedType="string" actual="text" actualType="variable" message="pass"/>
+            <assertFalse stepKey="assertFalse1" actual="0" actualType="bool" message="pass"/>
+            <assertFileNotExists stepKey="assertFileNotExists1" actual="/out.txt" actualType="string" message="pass"/>
+            <assertFileNotExists stepKey="assertFileNotExists2" actual="text" actualType="variable" message="pass"/>
+            <assertGreaterOrEquals stepKey="assertGreaterOrEquals" expected="2" expectedType="int" actual="5" actualType="int" message="pass"/>
+            <assertGreaterThan stepKey="assertGreaterThan" expected="2" expectedType="int" actual="5" actualType="int" message="pass"/>
+            <assertGreaterThanOrEqual stepKey="assertGreaterThanOrEqual" expected="2" expectedType="int" actual="5" actualType="int" message="pass"/>
+            <assertInternalType stepKey="assertInternalType1" expected="string" expectedType="string" actual="xyz" actualType="string" message="pass"/>
+            <assertInternalType stepKey="assertInternalType2" expected="int" expectedType="string" actual="21" actualType="int" message="pass"/>
+            <assertInternalType stepKey="assertInternalType3" expected="string" expectedType="string" actual="text" actualType="variable" message="pass"/>
+            <assertLessOrEquals stepKey="assertLessOrEquals" expected="5" expectedType="int" actual="2" actualType="int" message="pass"/>
+            <assertLessThan stepKey="assertLessThan" expected="5" expectedType="int" actual="2" actualType="int" message="pass"/>
+            <assertLessThanOrEqual stepKey="assertLessThanOrEqual" expected="5" expectedType="int" actual="2" actualType="int" message="pass"/>
+            <assertNotContains stepKey="assertNotContains1" expected="bc" expectedType="string" actual="['item1' => 'a', 'item2' => 'ab']" message="pass"/>
+            <assertNotContains stepKey="assertNotContains2" expected="bc" expectedType="string" actual="text" actualType="variable" message="pass"/>
+            <assertNotEmpty stepKey="assertNotEmpty1" actual="[1, 2]" message="pass"/>
+            <assertNotEmpty stepKey="assertNotEmpty2" actual="text" actualType="variable" message="pass"/>
+            <assertNotEquals stepKey="assertNotEquals" expected="2" expectedType="int" actual="5" actualType="int" message="pass" delta=""/>
+            <assertNotNull stepKey="assertNotNull1" actual="abc" actualType="string" message="pass"/>
+            <assertNotNull stepKey="assertNotNull2" actual="text" actualType="variable" message="pass"/>
+            <assertNotRegExp stepKey="assertNotRegExp" expected="/foo/" expectedType="string" actual="bar" actualType="string" message="pass"/>
+            <assertNotSame stepKey="assertNotSame" expected="log" expectedType="string" actual="tag" actualType="string" message="pass"/>
+            <assertRegExp stepKey="assertRegExp" expected="/foo/" expectedType="string" actual="foo" actualType="string" message="pass"/>
+            <assertSame stepKey="assertSame" expected="bar" expectedType="string" actual="bar" actualType="string" message="pass"/>
+            <assertStringStartsNotWith stepKey="assertStringStartsNotWith" expected="a" expectedType="string" actual="banana" actualType="string" message="pass"/>
+            <assertStringStartsWith stepKey="assertStringStartsWith" expected="a" expectedType="string" actual="apple" actualType="string" message="pass"/>
+            <assertTrue stepKey="assertTrue" actual="1" actualType="bool" message="pass"/>
 
             <!-- string type that use created data -->
-            <comment mergeKey="c2" userInput="string type that use created data"/>
-            <assertStringStartsWith mergeKey="assert1" expected="D" expectedType="string" actual="$$createData1.lastname$$, $$createData1.firstname$$" actualType="string" message="fail"/>
-            <assertStringStartsNotWith mergeKey="assert2" expected="W" expectedType="string" actual="$createData2.firstname$ $createData2.lastname$" actualType="string" message="pass"/>
-            <assertEquals mergeKey="assert5" expected="$$createData1.lastname$$" expectedType="string" actual="$$createData1.lastname$$" actualType="string" message="pass"/>
+            <comment stepKey="c2" userInput="string type that use created data"/>
+            <assertStringStartsWith stepKey="assert1" expected="D" expectedType="string" actual="$$createData1.lastname$$, $$createData1.firstname$$" actualType="string" message="fail"/>
+            <assertStringStartsNotWith stepKey="assert2" expected="W" expectedType="string" actual="$createData2.firstname$ $createData2.lastname$" actualType="string" message="pass"/>
+            <assertEquals stepKey="assert5" expected="$$createData1.lastname$$" expectedType="string" actual="$$createData1.lastname$$" actualType="string" message="pass"/>
 
             <!-- array type that use created data -->
-            <comment mergeKey="c3" userInput="array type that use created data"/>
-            <assertArraySubset mergeKey="assert9" expected="[$$createData1.lastname$$, $$createData1.firstname$$]" expectedType="array" actual="[$$createData1.lastname$$, $$createData1.firstname$$, 1]" actualType="array" message="pass"/>
-            <assertArraySubset mergeKey="assert10" expected="[$createData2.firstname$, $createData2.lastname$]" expectedType="array" actual="[$createData2.firstname$, $createData2.lastname$, 1]" actualType="array" message="pass"/>
-            <assertArrayHasKey mergeKey="assert3" expected="lastname" expectedType="string" actual="['lastname' => $$createData1.lastname$$, 'firstname' => $$createData1.firstname$$]" actualType="array" message="pass"/>
-            <assertArrayHasKey mergeKey="assert4" expected="lastname" expectedType="string" actual="['lastname' => $createData2.lastname$, 'firstname' => $createData2.firstname$]" actualType="array" message="pass"/>
+            <comment stepKey="c3" userInput="array type that use created data"/>
+            <assertArraySubset stepKey="assert9" expected="[$$createData1.lastname$$, $$createData1.firstname$$]" expectedType="array" actual="[$$createData1.lastname$$, $$createData1.firstname$$, 1]" actualType="array" message="pass"/>
+            <assertArraySubset stepKey="assert10" expected="[$createData2.firstname$, $createData2.lastname$]" expectedType="array" actual="[$createData2.firstname$, $createData2.lastname$, 1]" actualType="array" message="pass"/>
+            <assertArrayHasKey stepKey="assert3" expected="lastname" expectedType="string" actual="['lastname' => $$createData1.lastname$$, 'firstname' => $$createData1.firstname$$]" actualType="array" message="pass"/>
+            <assertArrayHasKey stepKey="assert4" expected="lastname" expectedType="string" actual="['lastname' => $createData2.lastname$, 'firstname' => $createData2.firstname$]" actualType="array" message="pass"/>
 
             <!-- comment this section before running this test -->
-            <comment mergeKey="c4" userInput="comment this section before running this test"/>
-            <assertInstanceOf mergeKey="assertInstanceOf" expected="User::class" actual="text" actualType="variable" message="pass"/>
-            <assertNotInstanceOf mergeKey="assertNotInstanceOf" expected="User::class" actual="21" actualType="int" message="pass"/>
-            <assertFileExists mergeKey="assertFileExists2" actual="text" actualType="variable" message="pass"/>
-            <assertFileExists mergeKey="assert6" actual="AssertCest.php" actualType="string" message="pass"/>
-            <assertIsEmpty mergeKey="assertIsEmpty" actual="text" actualType="variable" message="pass"/>
-            <assertNull mergeKey="assertNull" actual="text" actualType="variable" message="pass"/>
-            <expectException mergeKey="expectException" expected="new MyException('exception msg')" actual="function() {$this->doSomethingBad();}"/>
-            <fail mergeKey="fail" message="fail"/>
-            <fail mergeKey="assert7" message="$createData2.firstname$ $createData2.lastname$"/>
-            <fail mergeKey="assert8" message="$$createData1.firstname$$ $$createData1.lastname$$"/>
+            <comment stepKey="c4" userInput="comment this section before running this test"/>
+            <assertInstanceOf stepKey="assertInstanceOf" expected="User::class" actual="text" actualType="variable" message="pass"/>
+            <assertNotInstanceOf stepKey="assertNotInstanceOf" expected="User::class" actual="21" actualType="int" message="pass"/>
+            <assertFileExists stepKey="assertFileExists2" actual="text" actualType="variable" message="pass"/>
+            <assertFileExists stepKey="assert6" actual="AssertCest.php" actualType="string" message="pass"/>
+            <assertIsEmpty stepKey="assertIsEmpty" actual="text" actualType="variable" message="pass"/>
+            <assertNull stepKey="assertNull" actual="text" actualType="variable" message="pass"/>
+            <expectException stepKey="expectException" expected="new MyException('exception msg')" actual="function() {$this->doSomethingBad();}"/>
+            <fail stepKey="fail" message="fail"/>
+            <fail stepKey="assert7" message="$createData2.firstname$ $createData2.lastname$"/>
+            <fail stepKey="assert8" message="$$createData1.firstname$$ $$createData1.lastname$$"/>
             <!-- comment end -->
-            <comment mergeKey="c5" userInput="comment end"/>
+            <comment stepKey="c5" userInput="comment end"/>
 
-            <deleteData createDataKey="createData2" mergeKey="deleteData2"/>
+            <deleteData createDataKey="createData2" stepKey="deleteData2"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateConfigurableProductByApiCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateConfigurableProductByApiCest.xml
index 690b008fe2952c2d3d121e2f286fbd9efca6d2b1..7daef0fc1ed417d5aa60caeb203472b6058ae017 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateConfigurableProductByApiCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateConfigurableProductByApiCest.xml
@@ -12,63 +12,64 @@
         <annotations>
             <features value="Create a Configurable Product By API"/>
             <stories value="Create a Configurable Product By API"/>
+            <group value="skip"/>
         </annotations>
         <before>
-            <createData mergeKey="categoryHandle" entity="SimpleSubCategory" />
-            <createData mergeKey="baseConfigProductHandle" entity="BaseConfigurableProduct" >
+            <createData stepKey="categoryHandle" entity="SimpleSubCategory" />
+            <createData stepKey="baseConfigProductHandle" entity="BaseConfigurableProduct" >
                 <required-entity createDataKey="categoryHandle"/>
             </createData>
-            <createData mergeKey="productAttributeHandle" entity="productAttributeWithTwoOptions"/>
+            <createData stepKey="productAttributeHandle" entity="productAttributeWithTwoOptions"/>
 
-            <createData mergeKey="productAttributeOption1Handle" entity="productAttributeOption1">
+            <createData stepKey="productAttributeOption1Handle" entity="productAttributeOption1">
                 <required-entity createDataKey="productAttributeHandle"/>
             </createData>
-            <createData mergeKey="productAttributeOption2Handle" entity="productAttributeOption2">
+            <createData stepKey="productAttributeOption2Handle" entity="productAttributeOption2">
                 <required-entity createDataKey="productAttributeHandle"/>
             </createData>
 
-            <createData mergeKey="addToAttributeSetHandle" entity="AddToDefaultSet">
+            <createData stepKey="addToAttributeSetHandle" entity="AddToDefaultSet">
                 <required-entity createDataKey="productAttributeHandle"/>
             </createData>
 
-            <getData mergeKey="getAttributeOption1Handle" entity="ProductAttributeOptionGetter" index="1">
+            <getData stepKey="getAttributeOption1Handle" entity="ProductAttributeOptionGetter" index="1">
                 <required-entity createDataKey="productAttributeHandle"/>
             </getData>
-            <getData mergeKey="getAttributeOption2Handle" entity="ProductAttributeOptionGetter" index="2">
+            <getData stepKey="getAttributeOption2Handle" entity="ProductAttributeOptionGetter" index="2">
                 <required-entity createDataKey="productAttributeHandle"/>
             </getData>
 
-            <createData mergeKey="childProductHandle1" entity="SimpleOne">
+            <createData stepKey="childProductHandle1" entity="SimpleOne">
                 <required-entity createDataKey="productAttributeHandle"/>
                 <required-entity createDataKey="getAttributeOption1Handle"/>
             </createData>
-            <createData mergeKey="childProductHandle2" entity="SimpleOne">
+            <createData stepKey="childProductHandle2" entity="SimpleOne">
                 <required-entity createDataKey="productAttributeHandle"/>
                 <required-entity createDataKey="getAttributeOption2Handle"/>
             </createData>
 
-            <createData mergeKey="configProductOptionHandle" entity="ConfigurableProductTwoOptions">
+            <createData stepKey="configProductOptionHandle" entity="ConfigurableProductTwoOptions">
                 <required-entity createDataKey="baseConfigProductHandle"/>
                 <required-entity createDataKey="productAttributeHandle"/>
                 <required-entity createDataKey="getAttributeOption1Handle"/>
                 <required-entity createDataKey="getAttributeOption2Handle"/>
             </createData>
 
-            <createData mergeKey="configProductHandle1" entity="ConfigurableProductAddChild">
+            <createData stepKey="configProductHandle1" entity="ConfigurableProductAddChild">
                 <required-entity createDataKey="childProductHandle1"/>
                 <required-entity createDataKey="baseConfigProductHandle"/>
             </createData>
-            <createData mergeKey="configProductHandle2" entity="ConfigurableProductAddChild">
+            <createData stepKey="configProductHandle2" entity="ConfigurableProductAddChild">
                 <required-entity createDataKey="childProductHandle2"/>
                 <required-entity createDataKey="baseConfigProductHandle"/>
             </createData>
         </before>
         <after>
-            <deleteData mergeKey="d2" createDataKey="childProductHandle1"/>
-            <deleteData mergeKey="d3" createDataKey="childProductHandle2"/>
-            <deleteData mergeKey="d7" createDataKey="baseConfigProductHandle"/>
-            <deleteData mergeKey="d8" createDataKey="categoryHandle"/>
-            <deleteData mergeKey="d6" createDataKey="productAttributeHandle"/>
+            <deleteData stepKey="d2" createDataKey="childProductHandle1"/>
+            <deleteData stepKey="d3" createDataKey="childProductHandle2"/>
+            <deleteData stepKey="d7" createDataKey="baseConfigProductHandle"/>
+            <deleteData stepKey="d8" createDataKey="categoryHandle"/>
+            <deleteData stepKey="d6" createDataKey="productAttributeHandle"/>
         </after>
         <test name="CreateConfigurableProductByApiTest">
         </test>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateSalesRuleByApiCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateSalesRuleByApiCest.xml
index bdbca5862a2b5d231b18eeeea72f618298674682..68d7f75a964d2567e32f3deb0865a6d17a35ac9d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateSalesRuleByApiCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/CreateSalesRuleByApiCest.xml
@@ -12,12 +12,13 @@
         <annotations>
             <features value="Create a Sales Rule By API"/>
             <stories value="Create a Sales Rule By API"/>
+            <group value="skip"/>
         </annotations>
         <before>
-            <createData mergeKey="saleRule" entity="SimpleSalesRule" />
+            <createData stepKey="saleRule" entity="SimpleSalesRule" />
         </before>
         <test name="CreateSalesRuleByApiTest">
-            <!--see mergeKey="test" userInput="$$saleRule.store_labels[0][store_id]$$" selector="test"/-->
+            <!--see stepKey="test" userInput="$$saleRule.store_labels[0][store_id]$$" selector="test"/-->
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/MinimumTestCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/MinimumTestCest.xml
index b1cfc787acbb76e2a63dc47b11a4442a0e627d86..e9c971f7e10fba3ba4f4a2740ab2e718b3b9f38c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/MinimumTestCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/MinimumTestCest.xml
@@ -14,22 +14,18 @@
             <stories value="Minimum Test"/>
         </annotations>
         <after>
-            <seeInCurrentUrl url="/admin/admin/" mergeKey="seeInCurrentUrl"/>
+            <seeInCurrentUrl url="/admin/admin/" stepKey="seeInCurrentUrl"/>
         </after>
         <test name="MinimumFieldsTest">
             <annotations>
                 <title value="Minimum Test"/>
                 <description value="Minimum Test"/>
                 <group value="example"/>
-                <env value="chrome"/>
-                <env value="firefox"/>
-                <env value="phantomjs"/>
-                <env value="headless"/>
             </annotations>
-            <amOnPage url="{{AdminLoginPage.url}}" mergeKey="navigateToAdmin"/>
-            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" mergeKey="fillUsername"/>
-            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" mergeKey="fillPassword"/>
-            <click selector="{{AdminLoginFormSection.signIn}}" mergeKey="clickLogin"/>
+            <amOnPage url="{{AdminLoginPage.url}}" stepKey="navigateToAdmin"/>
+            <fillField selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}" stepKey="fillUsername"/>
+            <fillField selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}" stepKey="fillPassword"/>
+            <click selector="{{AdminLoginFormSection.signIn}}" stepKey="clickLogin"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/PersistMultipleEntitiesCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/PersistMultipleEntitiesCest.xml
index 12b2a8774c49b11adecdb300d7867d39887a4016..2985d7a51051b3e44ca27a7726e1be4a1bb4cd8e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/PersistMultipleEntitiesCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/PersistMultipleEntitiesCest.xml
@@ -10,26 +10,26 @@
         xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
     <cest name="PersistMultipleEntitiesCest">
         <before>
-            <createData entity="simplesubcategory" mergeKey="simplecategory"/>
-            <createData entity="simpleproduct" mergeKey="simpleproduct1">
+            <createData entity="simplesubcategory" stepKey="simplecategory"/>
+            <createData entity="simpleproduct" stepKey="simpleproduct1">
                 <required-entity createDataKey="simplecategory"/>
             </createData>
-            <createData entity="simpleproduct" mergeKey="simpleproduct2">
+            <createData entity="simpleproduct" stepKey="simpleproduct2">
                 <required-entity createDataKey="categoryLink"/>
             </createData>
         </before>
         <after>
-            <deleteData createDataKey="simpleproduct1" mergeKey="deleteProduct1"/>
-            <deleteData createDataKey="simpleproduct2" mergeKey="deleteProduct2"/>
-            <deleteData createDataKey="simplecategory" mergeKey="deleteCategory"/>
+            <deleteData createDataKey="simpleproduct1" stepKey="deleteProduct1"/>
+            <deleteData createDataKey="simpleproduct2" stepKey="deleteProduct2"/>
+            <deleteData createDataKey="simplecategory" stepKey="deleteCategory"/>
         </after>
         <test name="PersistMultipleEntitiesTest">
             <annotations>
                 <group value="skip"/>
             </annotations>
-            <amOnPage mergeKey="s11" url="/$$simplecategory.name$$.html" />
-            <waitForPageLoad mergeKey="s33"/>
-            <see mergeKey="s35" selector="{{StorefrontCategoryMainSection.productCount}}" userInput="2"/>
+            <amOnPage stepKey="s11" url="/$$simplecategory.name$$.html" />
+            <waitForPageLoad stepKey="s33"/>
+            <see stepKey="s35" selector="{{StorefrontCategoryMainSection.productCount}}" userInput="2"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SampleCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SampleCest.xml
index b07e73bbbaa2bea872e8c28ccd7ebe23807feea2..022e9a5d064ae41c10bb363b3d9ddda1a20b7ca9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SampleCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SampleCest.xml
@@ -16,14 +16,14 @@
             <group value="skip"/>
         </annotations>
         <before>
-            <amOnUrl url="http://127.0.0.1:32772/admin/" mergeKey="amOnPage"/>
-            <createData entity="CustomerEntity1" mergeKey="createData1"/>
-            <createData entity="AssertThis" mergeKey="createData2"/>
+            <amOnUrl url="http://127.0.0.1:32772/admin/" stepKey="amOnPage"/>
+            <createData entity="CustomerEntity1" stepKey="createData1"/>
+            <createData entity="AssertThis" stepKey="createData2"/>
         </before>
         <after>
-            <amOnUrl url="http://127.0.0.1:32772/admin/admin/auth/logout" mergeKey="amOnPage"/>
-            <deleteData createDataKey="createData1" mergeKey="deleteData1"/>
-            <deleteData createDataKey="createData2" mergeKey="deleteData2"/>
+            <amOnUrl url="http://127.0.0.1:32772/admin/admin/auth/logout" stepKey="amOnPage"/>
+            <deleteData createDataKey="createData1" stepKey="deleteData1"/>
+            <deleteData createDataKey="createData2" stepKey="deleteData2"/>
         </after>
         <test name="AllCodeceptionMethodsTest">
             <annotations>
@@ -32,146 +32,145 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="#"/>
             </annotations>
-            <acceptPopup mergeKey="acceptPopup"/>
-            <amOnPage url="/admin" mergeKey="amOnPage"/>
-            <amOnSubdomain url="admin" mergeKey="amOnSubdomain"/>
-            <amOnUrl url="http://www.google.com/" mergeKey="amOnUrl"/>
-            <appendField userInput="More Words" selector=".stuff" mergeKey="appendField"/>
-            <attachFile userInput="filename.php" selector="#stuff" mergeKey="attachFile"/>
-            <cancelPopup mergeKey="cancelPopup"/>
-            <checkOption selector="#checkbox" mergeKey="checkOption"/>
-            <clearField selector="#field" mergeKey="clearField"/>
-            <click selector="#button" userInput="Context" mergeKey="click1"/>
-            <click selectorArray="['link' => 'Login']" mergeKey="click2"/>
-            <click selectorArray="['link' => 'Login']" userInput="stuff" mergeKey="click3"/>
-            <click userInput="Click" mergeKey="click4"/>
-            <clickWithLeftButton selector="#clickHere" mergeKey="clickWithLeftButton1" x="23" y="324"/>
-            <clickWithLeftButton selectorArray="['css' => '.checkout']" mergeKey="clickWithLeftButton2" x="23" y="324"/>
-            <clickWithLeftButton mergeKey="clickWithLeftButton3" x="23" y="324"/>
-            <clickWithRightButton selector="#clickHere" mergeKey="clickWithRightButton1" x="23" y="324"/>
-            <clickWithRightButton selectorArray="['css' => '.checkout']" mergeKey="clickWithRightButton2" x="23" y="324"/>
-            <clickWithRightButton mergeKey="clickWithRightButton3" x="23" y="324"/>
-            <closeTab mergeKey="closeTab"/>
-            <comment userInput="This is a Comment." mergeKey="comment"/>
-            <createData entity="CustomerEntity1" mergeKey="createData1"/>
-            <deleteData createDataKey="createData1" mergeKey="deleteData1"/>
-            <dontSee userInput="Text" mergeKey="dontSee1"/>
-            <dontSee userInput="Text" selector=".title" mergeKey="dontSee2"/>
-            <dontSee userInput="Text" selectorArray="['css' => 'body h1']" mergeKey="dontSee3"/>
-            <dontSeeCheckboxIsChecked selector="#checkbox" mergeKey="dontSeeCheckboxIsChecked"/>
-            <dontSeeCookie userInput="cookieName" mergeKey="dontSeeCookie1"/>
-            <dontSeeCookie userInput="cookieName" parameterArray="['domainName' => 'stuff']" mergeKey="dontSeeCookie2"/>
-            <dontSeeCurrentUrlEquals url="/stuff" mergeKey="dontSeeCurrentUrlEquals"/>
-            <dontSeeCurrentUrlMatches url="~$/users/(\d+)~" mergeKey="dontSeeCurrentUrlMatches"/>
-            <dontSeeElement selector=".error" mergeKey="dontSeeElement1"/>
-            <dontSeeElement selector="input" parameterArray="['name' => 'login']" mergeKey="dontSeeElement2"/>
-            <dontSeeElementInDOM selector="#stuff" mergeKey="dontSeeElementInDOM1"/>
-            <dontSeeElementInDOM selector="#stuff" parameterArray="['name' => 'login']" mergeKey="dontSeeElementInDOM2"/>
-            <dontSeeInCurrentUrl url="/users/" mergeKey="dontSeeInCurrentUrl"/>
-            <dontSeeInField selector=".field" userInput="stuff" mergeKey="dontSeeInField1"/>
-            <dontSeeInField selectorArray="['name' => 'search']" userInput="Comment Here" mergeKey="dontSeeInField2"/>
-            <dontSeeInFormFields selector="form[name=myform]" parameterArray="['input1' => 'non-existent value', 'input2' => 'other non-existent value']" mergeKey="dontSeeInFormFields"/>
-            <dontSeeInPageSource userInput="Stuff in Page Source" mergeKey="dontSeeInPageSource"/>
-            <!--<dontSeeInSource html="<h1></h1>" mergeKey="dontSeeInSource"/>-->
-            <dontSeeInTitle userInput="Title" mergeKey="dontSeeInTitle"/>
-            <dontSeeLink userInput="Logout" mergeKey="dontSeeLink1"/>
-            <dontSeeLink userInput="Checkout" url="/store/cart.php" mergeKey="dontSeeLink2"/>
-            <dontSeeOptionIsSelected selector="#form .stuff" userInput="Option Name" mergeKey="dontSeeOptionIsSelected"/>
-            <doubleClick selector="#click .here" mergeKey="doubleClick"/>
-            <dragAndDrop selector1="#number1" selector2="#number2" mergeKey="dragAndDrop"/>
-            <executeInSelenium function="function(\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {$webdriver->get('http://google.com');}" mergeKey="executeInSelenium"/>
-            <executeJS function="return $('#myField').val()" mergeKey="executeJS"/>
-            <fillField selector="#field" userInput="stuff" mergeKey="fillField1"/>
-            <fillField selectorArray="['name' => 'email']" userInput="stuff" mergeKey="fillField2"/>
-            <grabAttributeFrom returnVariable="title" selector="#target" userInput="title" mergeKey="grabAttributeFrom"/>
-            <grabCookie returnVariable="cookie" userInput="cookie" parameterArray="['domain' => 'www.google.com']" mergeKey="grabCookie"/>
-            <grabFromCurrentUrl returnVariable="uri" url="~$/user/(\d+)/~" mergeKey="grabFromCurrentUrl"/>
-            <grabMultiple returnVariable="multiple" selector="a" userInput="href" mergeKey="grabMultiple"/>
-            <grabPageSource returnVariable="pageSource" mergeKey="grabPageSource1"/>
-            <grabTextFrom returnVariable="text" selector="h1" mergeKey="grabTextFrom1"/>
-            <grabValueFrom returnVariable="value1" selector=".form" mergeKey="grabValueFrom1"/>
-            <grabValueFrom returnVariable="value2" selectorArray="['name' => 'username']" mergeKey="grabValueFrom2"/>
-            <loadSessionSnapshot userInput="stuff" mergeKey="loadSessionSnapshot1"/>
-            <loadSessionSnapshot returnVariable="snapshot" userInput="stuff" mergeKey="loadSessionSnapshot2"/>
-            <makeScreenshot userInput="ScreenshotName" mergeKey="makeScreenshot"/>
-            <maximizeWindow mergeKey="maximizeWindow"/>
-            <moveBack mergeKey="moveBack"/>
-            <moveForward mergeKey="moveForward"/>
-            <moveMouseOver selector="#stuff" mergeKey="moveMouseOver1"/>
-            <moveMouseOver selectorArray="['css' => '.checkout']" mergeKey="moveMouseOver2"/>
-            <moveMouseOver x="5" y="5" mergeKey="moveMouseOver3"/>
-            <moveMouseOver selector="#stuff" x="5" y="5" mergeKey="moveMouseOver4"/>
-            <moveMouseOver selectorArray="['css' => '.checkout']" x="5" y="5" mergeKey="moveMouseOver5"/>
-            <openNewTab mergeKey="openNewTab"/>
-            <pauseExecution mergeKey="pauseExecution"/>
-            <performOn selector=".rememberMe" function="function (WebDriver $I) { $I->see('Remember me next time'); $I->seeElement('#LoginForm_rememberMe'); $I->dontSee('Login'); }" mergeKey="performOn1"/>
-            <performOn selector=".rememberMe" function="ActionSequence::build()->see('Warning')->see('Are you sure you want to delete this?')->click('Yes')" mergeKey="performOn2"/>
-            <pressKey selector="#page" userInput="a" mergeKey="pressKey1"/>
-            <pressKey selector="#page" parameterArray="[['ctrl','a'],'new']" mergeKey="pressKey2"/>
-            <pressKey selector="#page" parameterArray="[['shift','111'],'1','x']" mergeKey="pressKey3"/>
-            <pressKey selector="#page" parameterArray="[['ctrl', 'a'], \Facebook\WebDriver\WebDriverKeys::DELETE]" mergeKey="pressKey4"/>
-            <!--pressKey selector="descendant-or-self::*[@id='page']" userInput="u" mergeKey="pressKey5"/-->
-            <reloadPage mergeKey="reloadPage"/>
-            <resetCookie userInput="cookie" mergeKey="resetCookie1"/>
-            <resetCookie userInput="cookie" parameterArray="['domainName' => 'www.google.com']" mergeKey="resetCookie2"/>
-            <resizeWindow width="800" height="600" mergeKey="resizeWindow"/>
-            <saveSessionSnapshot userInput="stuff" mergeKey="saveSessionSnapshot"/>
-            <scrollTo selector="#place" x="20" y="50" mergeKey="scrollTo1"/>
-            <scrollTo selectorArray="['css' => '.checkout']" x="20" y="50" mergeKey="scrollTo2"/>
-            <see userInput="Stuff" mergeKey="see1"/>
-            <see userInput="More Stuff" selector=".stuff" mergeKey="see2"/>
-            <see userInput="More More Stuff" selectorArray="['css' => 'body h1']" mergeKey="see3"/>
-            <seeCheckboxIsChecked selector="#checkbox" mergeKey="seeCheckboxIsChecked"/>
-            <seeCookie userInput="PHPSESSID" mergeKey="seeCookie1"/>
-            <seeCookie userInput="PHPSESSID" parameterArray="['domainName' => 'www.google.com']" mergeKey="seeCookie2"/>
-            <seeCurrentUrlEquals url="/" mergeKey="seeCurrentUrlEquals"/>
-            <seeCurrentUrlMatches url="~$/users/(\d+)~" mergeKey="seeCurrentUrlMatches"/>
-            <seeElement selector=".error" mergeKey="seeElement1"/>
-            <seeElement selectorArray="['css' => 'form input']" mergeKey="seeElement2"/>
-            <seeElement selector=".error" parameterArray="['name' => 'login']" mergeKey="seeElement3"/>
-            <seeElement selectorArray="['css' => 'form input']" parameterArray="['name' => 'login']" mergeKey="seeElement4"/>
-            <seeElementInDOM selector="//form/input[type=hidden]" mergeKey="seeElementInDOM1"/>
-            <seeElementInDOM selector="//form/input[type=hidden]" parameterArray="['name' => 'form']" mergeKey="seeElementInDOM2"/>
-            <seeInCurrentUrl url="home" mergeKey="seeInCurrentUrl1"/>
-            <seeInCurrentUrl url="/home/" mergeKey="seeInCurrentUrl2"/>
-            <seeInField userInput="Stuff" selector="#field" mergeKey="seeInField1"/>
-            <seeInField userInput="Stuff" selectorArray="['name' => 'search']" mergeKey="seeInField2"/>
-            <seeInFormFields selector="form[name=myform]" parameterArray="['input1' => 'value','input2' => 'other value']" mergeKey="seeInFormFields1"/>
-            <seeInFormFields selector=".form-class" parameterArray="[['multiselect' => ['value1','value2'],'checkbox[]]' => ['a checked value','another checked value',]]" mergeKey="seeInFormFields2"/>
-            <!--<seeInPageSource html="<h1></h1>" mergeKey="seeInPageSource"/>-->
-            <seeInPopup userInput="Yes in Popup" mergeKey="seeInPopup"/>
-            <!--<seeInSource html="<h1></h1>" mergeKey="seeInSource"/>-->
-            <seeInTitle userInput="In Title" mergeKey="seeInTitle"/>
-            <seeLink userInput="Logout" mergeKey="seeLink1"/>
-            <seeLink userInput="Logout" url="/logout" mergeKey="seeLink2"/>
-            <seeNumberOfElements selector="tr" userInput="10" mergeKey="seeNumberOfElements1"/>
-            <seeNumberOfElements selector="tr" userInput="[0, 10]" mergeKey="seeNumberOfElements2"/>
-            <seeOptionIsSelected selector=".option" userInput="Visa" mergeKey="seeOptionIsSelected"/>
-            <selectOption selector=".dropDown" userInput="Option Name" mergeKey="selectOption1"/>
-            <selectOption selector="//form/select[@name=account]" parameterArray="['Windows','Linux']" mergeKey="selectOption2"/>
-            <selectOption selector="Which OS do you use?" parameterArray="['text' => 'Windows']" mergeKey="selectOption3"/>
-            <setCookie userInput="PHPSESSID" value="stuff" mergeKey="setCookie1"/>
-            <setCookie userInput="PHPSESSID" value="stuff" parameterArray="['domainName' => 'www.google.com']" mergeKey="setCookie2"/>
-            <submitForm selector="#my-form" parameterArray="['field' => ['value','another value',]]" button="#submit" mergeKey="submitForm2"/>
-            <switchToIFrame mergeKey="switchToIFrame1"/>
-            <switchToIFrame userInput="another_frame" mergeKey="switchToIFrame2"/>
-            <switchToNextTab mergeKey="switchToNextTab1"/>
-            <switchToNextTab userInput="2" mergeKey="switchToNextTab2"/>
-            <switchToPreviousTab mergeKey="switchToPreviewTab1"/>
-            <switchToPreviousTab userInput="1" mergeKey="switchToPreviewTab2"/>
-            <switchToWindow mergeKey="switchToWindow1"/>
-            <switchToWindow userInput="another_window" mergeKey="switchToWindow2"/>
-            <typeInPopup userInput="Stuff for popup" mergeKey="typeInPopup"/>
-            <uncheckOption selector="#option" mergeKey="uncheckOption"/>
-            <unselectOption selector="#dropDown" userInput="Option" mergeKey="unselectOption"/>
-            <wait time="15" mergeKey="wait"/>
-            <waitForElement selector="#button" time="10" mergeKey="waitForElement"/>
-            <waitForElementChange selector="#menu" function="function(\WebDriverElement $el) {return $el->isDisplayed();}" time="100" mergeKey="waitForElementChange"/>
-            <waitForElementNotVisible selector="#a_thing .className" time="30" mergeKey="waitForElementNotVisible"/>
-            <waitForElementVisible selector="#a_thing .className" time="15" mergeKey="waitForElementVisible"/>
-            <waitForJS function="return $.active == 0;" time="30" mergeKey="waitForJS"/>
-            <waitForText userInput="foo" time="30" mergeKey="waitForText1"/>
-            <waitForText userInput="foo" selector=".title" time="30" mergeKey="waitForText2"/>
+            <acceptPopup stepKey="acceptPopup"/>
+            <amOnPage url="/admin" stepKey="amOnPage"/>
+            <amOnSubdomain url="admin" stepKey="amOnSubdomain"/>
+            <amOnUrl url="http://www.google.com/" stepKey="amOnUrl"/>
+            <appendField userInput="More Words" selector=".stuff" stepKey="appendField"/>
+            <attachFile userInput="filename.php" selector="#stuff" stepKey="attachFile"/>
+            <cancelPopup stepKey="cancelPopup"/>
+            <checkOption selector="#checkbox" stepKey="checkOption"/>
+            <clearField selector="#field" stepKey="clearField"/>
+            <click selector="#button" userInput="Context" stepKey="click1"/>
+            <click selectorArray="['link' => 'Login']" stepKey="click2"/>
+            <click selectorArray="['link' => 'Login']" userInput="stuff" stepKey="click3"/>
+            <clickWithLeftButton selector="#clickHere" stepKey="clickWithLeftButton1" x="23" y="324"/>
+            <clickWithLeftButton selectorArray="['css' => '.checkout']" stepKey="clickWithLeftButton2" x="23" y="324"/>
+            <clickWithLeftButton stepKey="clickWithLeftButton3" x="23" y="324"/>
+            <clickWithRightButton selector="#clickHere" stepKey="clickWithRightButton1" x="23" y="324"/>
+            <clickWithRightButton selectorArray="['css' => '.checkout']" stepKey="clickWithRightButton2" x="23" y="324"/>
+            <clickWithRightButton stepKey="clickWithRightButton3" x="23" y="324"/>
+            <closeTab stepKey="closeTab"/>
+            <comment userInput="This is a Comment." stepKey="comment"/>
+            <createData entity="CustomerEntity1" stepKey="createData1"/>
+            <deleteData createDataKey="createData1" stepKey="deleteData1"/>
+            <dontSee userInput="Text" stepKey="dontSee1"/>
+            <dontSee userInput="Text" selector=".title" stepKey="dontSee2"/>
+            <dontSee userInput="Text" selectorArray="['css' => 'body h1']" stepKey="dontSee3"/>
+            <dontSeeCheckboxIsChecked selector="#checkbox" stepKey="dontSeeCheckboxIsChecked"/>
+            <dontSeeCookie userInput="cookieName" stepKey="dontSeeCookie1"/>
+            <dontSeeCookie userInput="cookieName" parameterArray="['domainName' => 'stuff']" stepKey="dontSeeCookie2"/>
+            <dontSeeCurrentUrlEquals url="/stuff" stepKey="dontSeeCurrentUrlEquals"/>
+            <dontSeeCurrentUrlMatches url="~$/users/(\d+)~" stepKey="dontSeeCurrentUrlMatches"/>
+            <dontSeeElement selector=".error" stepKey="dontSeeElement1"/>
+            <dontSeeElement selector="input" parameterArray="['name' => 'login']" stepKey="dontSeeElement2"/>
+            <dontSeeElementInDOM selector="#stuff" stepKey="dontSeeElementInDOM1"/>
+            <dontSeeElementInDOM selector="#stuff" parameterArray="['name' => 'login']" stepKey="dontSeeElementInDOM2"/>
+            <dontSeeInCurrentUrl url="/users/" stepKey="dontSeeInCurrentUrl"/>
+            <dontSeeInField selector=".field" userInput="stuff" stepKey="dontSeeInField1"/>
+            <dontSeeInField selectorArray="['name' => 'search']" userInput="Comment Here" stepKey="dontSeeInField2"/>
+            <dontSeeInFormFields selector="form[name=myform]" parameterArray="['input1' => 'non-existent value', 'input2' => 'other non-existent value']" stepKey="dontSeeInFormFields"/>
+            <dontSeeInPageSource userInput="Stuff in Page Source" stepKey="dontSeeInPageSource"/>
+            <!--<dontSeeInSource html="<h1></h1>" stepKey="dontSeeInSource"/>-->
+            <dontSeeInTitle userInput="Title" stepKey="dontSeeInTitle"/>
+            <dontSeeLink userInput="Logout" stepKey="dontSeeLink1"/>
+            <dontSeeLink userInput="Checkout" url="/store/cart.php" stepKey="dontSeeLink2"/>
+            <dontSeeOptionIsSelected selector="#form .stuff" userInput="Option Name" stepKey="dontSeeOptionIsSelected"/>
+            <doubleClick selector="#click .here" stepKey="doubleClick"/>
+            <dragAndDrop selector1="#number1" selector2="#number2" stepKey="dragAndDrop"/>
+            <executeInSelenium function="function(\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {$webdriver->get('http://google.com');}" stepKey="executeInSelenium"/>
+            <executeJS function="return $('#myField').val()" stepKey="executeJS"/>
+            <fillField selector="#field" userInput="stuff" stepKey="fillField1"/>
+            <fillField selectorArray="['name' => 'email']" userInput="stuff" stepKey="fillField2"/>
+            <grabAttributeFrom returnVariable="title" selector="#target" userInput="title" stepKey="grabAttributeFrom"/>
+            <grabCookie returnVariable="cookie" userInput="cookie" parameterArray="['domain' => 'www.google.com']" stepKey="grabCookie"/>
+            <grabFromCurrentUrl returnVariable="uri" url="~$/user/(\d+)/~" stepKey="grabFromCurrentUrl"/>
+            <grabMultiple returnVariable="multiple" selector="a" userInput="href" stepKey="grabMultiple"/>
+            <grabPageSource returnVariable="pageSource" stepKey="grabPageSource1"/>
+            <grabTextFrom returnVariable="text" selector="h1" stepKey="grabTextFrom1"/>
+            <grabValueFrom returnVariable="value1" selector=".form" stepKey="grabValueFrom1"/>
+            <grabValueFrom returnVariable="value2" selectorArray="['name' => 'username']" stepKey="grabValueFrom2"/>
+            <loadSessionSnapshot userInput="stuff" stepKey="loadSessionSnapshot1"/>
+            <loadSessionSnapshot returnVariable="snapshot" userInput="stuff" stepKey="loadSessionSnapshot2"/>
+            <makeScreenshot userInput="ScreenshotName" stepKey="makeScreenshot"/>
+            <maximizeWindow stepKey="maximizeWindow"/>
+            <moveBack stepKey="moveBack"/>
+            <moveForward stepKey="moveForward"/>
+            <moveMouseOver selector="#stuff" stepKey="moveMouseOver1"/>
+            <moveMouseOver selectorArray="['css' => '.checkout']" stepKey="moveMouseOver2"/>
+            <moveMouseOver x="5" y="5" stepKey="moveMouseOver3"/>
+            <moveMouseOver selector="#stuff" x="5" y="5" stepKey="moveMouseOver4"/>
+            <moveMouseOver selectorArray="['css' => '.checkout']" x="5" y="5" stepKey="moveMouseOver5"/>
+            <openNewTab stepKey="openNewTab"/>
+            <pauseExecution stepKey="pauseExecution"/>
+            <performOn selector=".rememberMe" function="function (WebDriver $I) { $I->see('Remember me next time'); $I->seeElement('#LoginForm_rememberMe'); $I->dontSee('Login'); }" stepKey="performOn1"/>
+            <performOn selector=".rememberMe" function="ActionSequence::build()->see('Warning')->see('Are you sure you want to delete this?')->click('Yes')" stepKey="performOn2"/>
+            <pressKey selector="#page" userInput="a" stepKey="pressKey1"/>
+            <pressKey selector="#page" parameterArray="[['ctrl','a'],'new']" stepKey="pressKey2"/>
+            <pressKey selector="#page" parameterArray="[['shift','111'],'1','x']" stepKey="pressKey3"/>
+            <pressKey selector="#page" parameterArray="[['ctrl', 'a'], \Facebook\WebDriver\WebDriverKeys::DELETE]" stepKey="pressKey4"/>
+            <!--pressKey selector="descendant-or-self::*[@id='page']" userInput="u" stepKey="pressKey5"/-->
+            <reloadPage stepKey="reloadPage"/>
+            <resetCookie userInput="cookie" stepKey="resetCookie1"/>
+            <resetCookie userInput="cookie" parameterArray="['domainName' => 'www.google.com']" stepKey="resetCookie2"/>
+            <resizeWindow width="800" height="600" stepKey="resizeWindow"/>
+            <saveSessionSnapshot userInput="stuff" stepKey="saveSessionSnapshot"/>
+            <scrollTo selector="#place" x="20" y="50" stepKey="scrollTo1"/>
+            <scrollTo selectorArray="['css' => '.checkout']" x="20" y="50" stepKey="scrollTo2"/>
+            <see userInput="Stuff" stepKey="see1"/>
+            <see userInput="More Stuff" selector=".stuff" stepKey="see2"/>
+            <see userInput="More More Stuff" selectorArray="['css' => 'body h1']" stepKey="see3"/>
+            <seeCheckboxIsChecked selector="#checkbox" stepKey="seeCheckboxIsChecked"/>
+            <seeCookie userInput="PHPSESSID" stepKey="seeCookie1"/>
+            <seeCookie userInput="PHPSESSID" parameterArray="['domainName' => 'www.google.com']" stepKey="seeCookie2"/>
+            <seeCurrentUrlEquals url="/" stepKey="seeCurrentUrlEquals"/>
+            <seeCurrentUrlMatches url="~$/users/(\d+)~" stepKey="seeCurrentUrlMatches"/>
+            <seeElement selector=".error" stepKey="seeElement1"/>
+            <seeElement selectorArray="['css' => 'form input']" stepKey="seeElement2"/>
+            <seeElement selector=".error" parameterArray="['name' => 'login']" stepKey="seeElement3"/>
+            <seeElement selectorArray="['css' => 'form input']" parameterArray="['name' => 'login']" stepKey="seeElement4"/>
+            <seeElementInDOM selector="//form/input[type=hidden]" stepKey="seeElementInDOM1"/>
+            <seeElementInDOM selector="//form/input[type=hidden]" parameterArray="['name' => 'form']" stepKey="seeElementInDOM2"/>
+            <seeInCurrentUrl url="home" stepKey="seeInCurrentUrl1"/>
+            <seeInCurrentUrl url="/home/" stepKey="seeInCurrentUrl2"/>
+            <seeInField userInput="Stuff" selector="#field" stepKey="seeInField1"/>
+            <seeInField userInput="Stuff" selectorArray="['name' => 'search']" stepKey="seeInField2"/>
+            <seeInFormFields selector="form[name=myform]" parameterArray="['input1' => 'value','input2' => 'other value']" stepKey="seeInFormFields1"/>
+            <seeInFormFields selector=".form-class" parameterArray="[['multiselect' => ['value1','value2'],'checkbox[]]' => ['a checked value','another checked value',]]" stepKey="seeInFormFields2"/>
+            <!--<seeInPageSource html="<h1></h1>" stepKey="seeInPageSource"/>-->
+            <seeInPopup userInput="Yes in Popup" stepKey="seeInPopup"/>
+            <!--<seeInSource html="<h1></h1>" stepKey="seeInSource"/>-->
+            <seeInTitle userInput="In Title" stepKey="seeInTitle"/>
+            <seeLink userInput="Logout" stepKey="seeLink1"/>
+            <seeLink userInput="Logout" url="/logout" stepKey="seeLink2"/>
+            <seeNumberOfElements selector="tr" userInput="10" stepKey="seeNumberOfElements1"/>
+            <seeNumberOfElements selector="tr" userInput="[0, 10]" stepKey="seeNumberOfElements2"/>
+            <seeOptionIsSelected selector=".option" userInput="Visa" stepKey="seeOptionIsSelected"/>
+            <selectOption selector=".dropDown" userInput="Option Name" stepKey="selectOption1"/>
+            <selectOption selector="//form/select[@name=account]" parameterArray="['Windows','Linux']" stepKey="selectOption2"/>
+            <selectOption selector="Which OS do you use?" parameterArray="['text' => 'Windows']" stepKey="selectOption3"/>
+            <setCookie userInput="PHPSESSID" value="stuff" stepKey="setCookie1"/>
+            <setCookie userInput="PHPSESSID" value="stuff" parameterArray="['domainName' => 'www.google.com']" stepKey="setCookie2"/>
+            <submitForm selector="#my-form" parameterArray="['field' => ['value','another value',]]" button="#submit" stepKey="submitForm2"/>
+            <switchToIFrame stepKey="switchToIFrame1"/>
+            <switchToIFrame userInput="another_frame" stepKey="switchToIFrame2"/>
+            <switchToNextTab stepKey="switchToNextTab1"/>
+            <switchToNextTab userInput="2" stepKey="switchToNextTab2"/>
+            <switchToPreviousTab stepKey="switchToPreviewTab1"/>
+            <switchToPreviousTab userInput="1" stepKey="switchToPreviewTab2"/>
+            <switchToWindow stepKey="switchToWindow1"/>
+            <switchToWindow userInput="another_window" stepKey="switchToWindow2"/>
+            <typeInPopup userInput="Stuff for popup" stepKey="typeInPopup"/>
+            <uncheckOption selector="#option" stepKey="uncheckOption"/>
+            <unselectOption selector="#dropDown" userInput="Option" stepKey="unselectOption"/>
+            <wait time="15" stepKey="wait"/>
+            <waitForElement selector="#button" time="10" stepKey="waitForElement"/>
+            <waitForElementChange selector="#menu" function="function(\WebDriverElement $el) {return $el->isDisplayed();}" time="100" stepKey="waitForElementChange"/>
+            <waitForElementNotVisible selector="#a_thing .className" time="30" stepKey="waitForElementNotVisible"/>
+            <waitForElementVisible selector="#a_thing .className" time="15" stepKey="waitForElementVisible"/>
+            <waitForJS function="return $.active == 0;" time="30" stepKey="waitForJS"/>
+            <waitForText userInput="foo" time="30" stepKey="waitForText1"/>
+            <waitForText userInput="foo" selector=".title" time="30" stepKey="waitForText2"/>
         </test>
         <test name="AllCustomMethodsTest">
             <annotations>
@@ -180,23 +179,32 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="#"/>
             </annotations>
-            <loginAsAdmin mergeKey="loginAsAdmin1"/>
-            <loginAsAdmin username="admin" password="123123q" mergeKey="loginAsAdmin2"/>
-            <closeAdminNotification mergeKey="closeAdminNotification1"/>
-            <searchAndMultiSelectOption selector="#stuff" parameterArray="['Item 1', 'Item 2']" mergeKey="searchAndMultiSelect1"/>
-            <searchAndMultiSelectOption selector="#stuff" parameterArray="['Item 1', 'Item 2']" requiredAction="true" mergeKey="searchAndMultiSelect2"/>
-            <waitForPageLoad mergeKey="waitForPageLoad1"/>
-            <waitForPageLoad time="15" mergeKey="waitForPageLoad2"/>
-            <waitForAjaxLoad mergeKey="waitForAjax1"/>
-            <waitForAjaxLoad time="15" mergeKey="waitForAjax2"/>
-            <dontSeeJsError mergeKey="dontSeeJsError"/>
-            <formatMoney userInput="$300,000" mergeKey="formatMoney1"/>
-            <formatMoney userInput="$300,000" locale="en_US.UTF-8" mergeKey="formatMoney2"/>
-            <mSetLocale userInput="300" locale="en_US.UTF-8" mergeKey="mSetLocale1"/>
-            <mResetLocale mergeKey="mResetLocale1"/>
-            <waitForLoadingMaskToDisappear mergeKey="waitForLoadingMaskToDisappear1"/>
-            <scrollToTopOfPage mergeKey="scrollToTopOfPage"/>
-            <parseFloat userInput="300,000.2325" mergeKey="parseFloat1"/>
+            <assertElementContainsAttribute selector="#username" attribute="class" expectedValue="admin__control-text" stepKey="assertElementContainsAttribute1"/>
+            <assertElementContainsAttribute selector="#username" attribute="type" expectedValue="text" stepKey="assertElementContainsAttribute2"/>
+            <assertElementContainsAttribute selector="#username" attribute="name" expectedValue="login[username]" stepKey="assertElementContainsAttribute3"/>
+            <assertElementContainsAttribute selector="#username" attribute="autofocus" expectedValue="" stepKey="assertElementContainsAttribute4"/>
+            <assertElementContainsAttribute selector="#username" attribute="data-validate" expectedValue="{required:true}" stepKey="assertElementContainsAttribute5"/>
+            <assertElementContainsAttribute selector="#username" attribute="placeholder" expectedValue="user name" stepKey="assertElementContainsAttribute6"/>
+            <assertElementContainsAttribute selector="#username" attribute="autocomplete" expectedValue="off" stepKey="assertElementContainsAttribute7"/>
+            <assertElementContainsAttribute selector=".admin__menu-overlay" attribute="style" expectedValue="display: none;" stepKey="assertElementContainsAttribute8"/>
+            <assertElementContainsAttribute selector=".admin__menu-overlay" attribute="border" expectedValue="0" stepKey="assertElementContainsAttribute9"/>
+            <loginAsAdmin stepKey="loginAsAdmin1"/>
+            <loginAsAdmin username="admin" password="123123q" stepKey="loginAsAdmin2"/>
+            <closeAdminNotification stepKey="closeAdminNotification1"/>
+            <searchAndMultiSelectOption selector="#stuff" parameterArray="['Item 1', 'Item 2']" stepKey="searchAndMultiSelect1"/>
+            <searchAndMultiSelectOption selector="#stuff" parameterArray="['Item 1', 'Item 2']" requiredAction="true" stepKey="searchAndMultiSelect2"/>
+            <waitForPageLoad stepKey="waitForPageLoad1"/>
+            <waitForPageLoad time="15" stepKey="waitForPageLoad2"/>
+            <waitForAjaxLoad stepKey="waitForAjax1"/>
+            <waitForAjaxLoad time="15" stepKey="waitForAjax2"/>
+            <dontSeeJsError stepKey="dontSeeJsError"/>
+            <formatMoney userInput="$300,000" stepKey="formatMoney1"/>
+            <formatMoney userInput="$300,000" locale="en_US.UTF-8" stepKey="formatMoney2"/>
+            <mSetLocale userInput="300" locale="en_US.UTF-8" stepKey="mSetLocale1"/>
+            <mResetLocale stepKey="mResetLocale1"/>
+            <waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear1"/>
+            <scrollToTopOfPage stepKey="scrollToTopOfPage"/>
+            <parseFloat userInput="300,000.2325" stepKey="parseFloat1"/>
         </test>
         <test name="AllVariableMethodsTest">
             <annotations>
@@ -205,51 +213,51 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="#"/>
             </annotations>
-            <grabFromCurrentUrl returnVariable="randomStuff" mergeKey="grabFromCurrentUrl1"/>
-            <amOnPage variable="randomStuff" mergeKey="amOnPage1"/>
-            <amOnSubdomain variable="randomStuff" mergeKey="amOnSubdomain1"/>
-            <amOnUrl variable="randomStuff" mergeKey="amOnUrl1"/>
-            <appendField variable="randomStuff" selector="#randomField" mergeKey="appendField1"/>
-            <attachFile variable="randomStuff" selector="#filePathField" mergeKey="attachFile1"/>
-            <click variable="randomStuff" mergeKey="click1"/>
-            <dontSee variable="randomStuff" mergeKey="dontSee1"/>
-            <dontSeeCookie variable="randomStuff" mergeKey="dontSeeCookie1"/>
-            <dontSeeCurrentUrlEquals variable="randomStuff" mergeKey="dontSeeCurrentUrlEquals1"/>
-            <dontSeeCurrentUrlMatches variable="randomStuff" mergeKey="dontSeeCurrentUrlMatches1"/>
-            <dontSeeInCurrentUrl variable="randomStuff" mergeKey="dontSeeInCurrentUrl1"/>
-            <dontSeeInField selector="#stuff" variable="randomStuff" mergeKey="dontSeeInField1"/>
-            <dontSeeInPageSource variable="randomStuff" mergeKey="dontSeeInPageSource1"/>
-            <dontSeeInTitle variable="randomStuff" mergeKey="dontSeeInTitle1"/>
-            <dontSeeLink variable="randomStuff" mergeKey="dontSeeLink1"/>
-            <dontSeeOptionIsSelected selector="#dropdown" variable="randomStuff" mergeKey="dontSeeOptionIsSelected1"/>
-            <fillField variable="randomStuff" selector="#field" mergeKey="fillField1"/>
-            <grabAttributeFrom selector="#stuff" returnVariable="moreRandomStuff" variable="randomStuff" mergeKey="grabAttributeFrom1"/>
-            <grabCookie returnVariable="cookies" variable="randomStuff" mergeKey="grabValueFrom1"/>
-            <grabFromCurrentUrl returnVariable="url" variable="randomStuff" mergeKey="grabFromCurrentUrl"/>
-            <grabMultiple returnVariable="multipleThings" selector="a" variable="randomStuff" mergeKey="grabMultiple1"/>
-            <loadSessionSnapshot variable="randomStuff" mergeKey="loadSessionSnapshot"/>
-            <pressKey selector="a" variable="randomStuff" mergeKey="pressKey1"/>
-            <saveSessionSnapshot variable="randomStuff" mergeKey="saveSessionSnapshot1"/>
-            <see variable="randomStuff" mergeKey="see1"/>
-            <seeCookie variable="randomStuff" mergeKey="seeCookie1"/>
-            <seeCurrentUrlEquals variable="randomStuff" mergeKey="seeCurrentUrlEquals1"/>
-            <seeCurrentUrlMatches variable="randomStuff" mergeKey="seeCurrentUrlMatches1"/>
-            <seeInCurrentUrl variable="randomStuff" mergeKey="seeInCurrentUrl1"/>
-            <seeInField selector="a" variable="randomStuff" mergeKey="seeInField1"/>
-            <seeInPopup variable="randomStuff" mergeKey="seeInPopup"/>
-            <seeInTitle variable="randomStuff" mergeKey="seeInTitle1"/>
-            <seeLink variable="randomStuff" mergeKey="seeLink1"/>
-            <seeNumberOfElements selector="#stuff" variable="randomStuff" mergeKey="seeNumberOfElements1"/>
-            <seeOptionIsSelected selector="#stuff" variable="randomStuff" mergeKey="seeOptionIsSelected1"/>
-            <selectOption selector="#stuff" variable="randomStuff" mergeKey="selectOption1"/>
-            <switchToIFrame variable="randomStuff" mergeKey="switchToIFrame1"/>
-            <switchToNextTab variable="randomStuff" mergeKey="switchToNextTab1"/>
-            <switchToPreviousTab variable="randomStuff" mergeKey="switchToPreviousTab1"/>
-            <switchToNextTab variable="randomStuff" mergeKey="switchToNextTab1"/>
-            <switchToWindow variable="randomStuff" mergeKey="switchToWindow1"/>
-            <typeInPopup variable="randomStuff" mergeKey="typeInPopup"/>
-            <unselectOption selector="#option" variable="randomStuff" mergeKey="unselectOption1"/>
-            <waitForText variable="randomStuff" time="5" mergeKey="waitForText1"/>
+            <grabFromCurrentUrl returnVariable="randomStuff" stepKey="grabFromCurrentUrl1"/>
+            <amOnPage variable="randomStuff" stepKey="amOnPage1"/>
+            <amOnSubdomain variable="randomStuff" stepKey="amOnSubdomain1"/>
+            <amOnUrl variable="randomStuff" stepKey="amOnUrl1"/>
+            <appendField variable="randomStuff" selector="#randomField" stepKey="appendField1"/>
+            <attachFile variable="randomStuff" selector="#filePathField" stepKey="attachFile1"/>
+            <click variable="randomStuff" stepKey="click1"/>
+            <dontSee variable="randomStuff" stepKey="dontSee1"/>
+            <dontSeeCookie variable="randomStuff" stepKey="dontSeeCookie1"/>
+            <dontSeeCurrentUrlEquals variable="randomStuff" stepKey="dontSeeCurrentUrlEquals1"/>
+            <dontSeeCurrentUrlMatches variable="randomStuff" stepKey="dontSeeCurrentUrlMatches1"/>
+            <dontSeeInCurrentUrl variable="randomStuff" stepKey="dontSeeInCurrentUrl1"/>
+            <dontSeeInField selector="#stuff" variable="randomStuff" stepKey="dontSeeInField1"/>
+            <dontSeeInPageSource variable="randomStuff" stepKey="dontSeeInPageSource1"/>
+            <dontSeeInTitle variable="randomStuff" stepKey="dontSeeInTitle1"/>
+            <dontSeeLink variable="randomStuff" stepKey="dontSeeLink1"/>
+            <dontSeeOptionIsSelected selector="#dropdown" variable="randomStuff" stepKey="dontSeeOptionIsSelected1"/>
+            <fillField variable="randomStuff" selector="#field" stepKey="fillField1"/>
+            <grabAttributeFrom selector="#stuff" returnVariable="moreRandomStuff" variable="randomStuff" stepKey="grabAttributeFrom1"/>
+            <grabCookie returnVariable="cookies" variable="randomStuff" stepKey="grabValueFrom1"/>
+            <grabFromCurrentUrl returnVariable="url" variable="randomStuff" stepKey="grabFromCurrentUrl"/>
+            <grabMultiple returnVariable="multipleThings" selector="a" variable="randomStuff" stepKey="grabMultiple1"/>
+            <loadSessionSnapshot variable="randomStuff" stepKey="loadSessionSnapshot"/>
+            <pressKey selector="a" variable="randomStuff" stepKey="pressKey1"/>
+            <saveSessionSnapshot variable="randomStuff" stepKey="saveSessionSnapshot1"/>
+            <see variable="randomStuff" stepKey="see1"/>
+            <seeCookie variable="randomStuff" stepKey="seeCookie1"/>
+            <seeCurrentUrlEquals variable="randomStuff" stepKey="seeCurrentUrlEquals1"/>
+            <seeCurrentUrlMatches variable="randomStuff" stepKey="seeCurrentUrlMatches1"/>
+            <seeInCurrentUrl variable="randomStuff" stepKey="seeInCurrentUrl1"/>
+            <seeInField selector="a" variable="randomStuff" stepKey="seeInField1"/>
+            <seeInPopup variable="randomStuff" stepKey="seeInPopup"/>
+            <seeInTitle variable="randomStuff" stepKey="seeInTitle1"/>
+            <seeLink variable="randomStuff" stepKey="seeLink1"/>
+            <seeNumberOfElements selector="#stuff" variable="randomStuff" stepKey="seeNumberOfElements1"/>
+            <seeOptionIsSelected selector="#stuff" variable="randomStuff" stepKey="seeOptionIsSelected1"/>
+            <selectOption selector="#stuff" variable="randomStuff" stepKey="selectOption1"/>
+            <switchToIFrame variable="randomStuff" stepKey="switchToIFrame1"/>
+            <switchToNextTab variable="randomStuff" stepKey="switchToNextTab1"/>
+            <switchToPreviousTab variable="randomStuff" stepKey="switchToPreviousTab1"/>
+            <switchToNextTab variable="randomStuff" stepKey="switchToNextTab1"/>
+            <switchToWindow variable="randomStuff" stepKey="switchToWindow1"/>
+            <typeInPopup variable="randomStuff" stepKey="typeInPopup"/>
+            <unselectOption selector="#option" variable="randomStuff" stepKey="unselectOption1"/>
+            <waitForText variable="randomStuff" time="5" stepKey="waitForText1"/>
         </test>
         <test name="AllReplacementTest">
             <annotations>
@@ -259,36 +267,36 @@
                 <testCaseId value="#"/>
             </annotations>
 
-            <createData entity="CustomerEntity1" mergeKey="testScopeData"/>
-            <createData entity="AssertThis" mergeKey="testScopeData2"/>
+            <createData entity="CustomerEntity1" stepKey="testScopeData"/>
+            <createData entity="AssertThis" stepKey="testScopeData2"/>
 
             <!-- parameterized url that uses literal params -->
-            <amOnPage url="{{SamplePage.url('success','success2')}}" mergeKey="a0"/>
+            <amOnPage url="{{SamplePage.url('success','success2')}}" stepKey="a0"/>
 
             <!-- url referencing data that was created in this <test> -->
-            <amOnPage url="$testScopeData.firstname$.html" mergeKey="a1"/>
+            <amOnPage url="$testScopeData.firstname$.html" stepKey="a1"/>
 
             <!-- url referencing data that was created in a <before> -->
-            <amOnPage url="$$createData1.firstname$$.html" mergeKey="a2"/>
+            <amOnPage url="$$createData1.firstname$$.html" stepKey="a2"/>
 
             <!-- parameterized url that uses created data params -->
-            <amOnPage url="{{SamplePage.url($testScopeData.firstname$,$testScopeData.lastname$)}}" mergeKey="a3"/>
-            <amOnPage url="{{SamplePage.url($$createData1.firstname$$,$$createData1.lastname$$)}}" mergeKey="a4"/>
+            <amOnPage url="{{SamplePage.url($testScopeData.firstname$,$testScopeData.lastname$)}}" stepKey="a3"/>
+            <amOnPage url="{{SamplePage.url($$createData1.firstname$$,$$createData1.lastname$$)}}" stepKey="a4"/>
 
             <!-- parameterized selector that uses literal params -->
-            <click selector="{{SampleSection.oneParamElement('success')}}" mergeKey="c1"/>
-            <click selector="{{SampleSection.twoParamElement('success','success2')}}" mergeKey="c2"/>
+            <click selector="{{SampleSection.oneParamElement('success')}}" stepKey="c1"/>
+            <click selector="{{SampleSection.twoParamElement('success','success2')}}" stepKey="c2"/>
 
             <!-- parameterized selector with literal, static data, and created data  -->
-            <click selector="{{SampleSection.threeParamElement('John', SamplePerson.lastname, $testScopeData.lastname$)}}" mergeKey="c3"/>
+            <click selector="{{SampleSection.threeParamElement('John', SamplePerson.lastname, $testScopeData.lastname$)}}" stepKey="c3"/>
 
             <!-- selector that uses created data -->
-            <click selector="#$testScopeData.firstname$ .$testScopeData.lastname$" mergeKey="c4"/>
-            <click selector="#$$createData1.firstname$$ .$$createData1.lastname$$" mergeKey="c5"/>
+            <click selector="#$testScopeData.firstname$ .$testScopeData.lastname$" stepKey="c4"/>
+            <click selector="#$$createData1.firstname$$ .$$createData1.lastname$$" stepKey="c5"/>
 
             <!-- userInput that uses created data -->
-            <fillField selector="#sample" userInput="Hello $testScopeData.firstname$ $testScopeData.lastname$" mergeKey="f1"/>
-            <fillField selector="#sample" userInput="Hello $$createData1.firstname$$ $$createData1.lastname$$" mergeKey="f2"/>
+            <fillField selector="#sample" userInput="Hello $testScopeData.firstname$ $testScopeData.lastname$" stepKey="f1"/>
+            <fillField selector="#sample" userInput="Hello $$createData1.firstname$$ $$createData1.lastname$$" stepKey="f2"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SetPaymentConfigurationCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SetPaymentConfigurationCest.xml
index 60b1f945e6b4a9ad25ebe96d596be9b3f29dfc46..9022ae32a337c30915f60a3ef81f3d8ecd79d001 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SetPaymentConfigurationCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/SetPaymentConfigurationCest.xml
@@ -9,13 +9,16 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
     <cest name="SetPaymentConfigurationCest">
+        <annotations>
+            <group value="skip"/>
+        </annotations>
         <test name="SetPaypalConfigurationTest">
-            <createData entity="SamplePaypalConfig" mergeKey="createSamplePaypalConfig"/>
-            <createData entity="DefaultPayPalConfig" mergeKey="restoreDefaultPaypalConfig"/>
+            <createData entity="SamplePaypalConfig" stepKey="createSamplePaypalConfig"/>
+            <createData entity="DefaultPayPalConfig" stepKey="restoreDefaultPaypalConfig"/>
         </test>
         <test name="SetBraintreeConfigurationTest">
-            <createData entity="SampleBraintreeConfig" mergeKey="createSampleBraintreeConfig"/>
-            <createData entity="DefaultBraintreeConfig" mergeKey="restoreDefaultBraintreeConfig"/>
+            <createData entity="SampleBraintreeConfig" stepKey="createSampleBraintreeConfig"/>
+            <createData entity="DefaultBraintreeConfig" stepKey="restoreDefaultBraintreeConfig"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/UpdateSimpleProductByApiCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/UpdateSimpleProductByApiCest.xml
index 7d80719a227ef5b42e795946094addc6ae48cda2..9fa215e582e3ae80059db3fda4736f44690b2afb 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/UpdateSimpleProductByApiCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/Cest/UpdateSimpleProductByApiCest.xml
@@ -11,21 +11,17 @@
         <annotations>
             <features value="Update simple product by api test."/>
             <stories value="Update simple product by api test."/>
-            <group value="example"/>
-            <env value="chrome"/>
-            <env value="firefox"/>
-            <env value="phantomjs"/>
-            <env value="headless"/>
+            <group value="skip"/>
         </annotations>
         <before>
-            <createData mergeKey="categoryHandle" entity="SimpleSubCategory"/>
-            <createData mergeKey="productHandle" entity="SimpleProduct" >
+            <createData stepKey="categoryHandle" entity="SimpleSubCategory"/>
+            <createData stepKey="productHandle" entity="SimpleProduct" >
                 <required-entity createDataKey="categoryHandle"/>
             </createData>
-            <updateData mergeKey="updateProduct" entity="NewSimpleProduct" createDataKey="productHandle"/>
+            <updateData stepKey="updateProduct" entity="NewSimpleProduct" createDataKey="productHandle"/>
         </before>
         <after>
-            <deleteData mergeKey="delete" createDataKey="productHandle"/>
+            <deleteData stepKey="delete" createDataKey="updateProduct"/>
         </after>
         <test name="UpdateSimpleProductByApiTest">
         </test>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f3340b205f1a3ff63ef3c11e2f3af7bd4f2a35d9
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_SampleTests** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..70a9e9806b7b631c0e55ecfef484a8814741bc5a
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests/composer.json
@@ -0,0 +1,30 @@
+{
+    "name": "magento/magento2-functional-test-module-sample-tests",
+    "description": "Magento 2 Functional Test Module Sample Tests",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\SampleTests\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SampleTests"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/README.md
index 17d37794fb03d4d1214e2878cb6e54441c2b280a..bb6c6d52df27d0c1dd99b8c21ee9698e15df16c2 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Search** Module.
+The Functional Tests Module for **Magento_Search** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/composer.json
index ef78fc2a19ca62605e7f28dab4eeaf4cea5ec044..c49c01d906ec3568106abe9bcb973ce7b6da201f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-search",
-    "description": "Magento 2 Acceptance Test Module Search",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog-search": "dev-master",
-        "magento/magento2-functional-test-module-reports": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Search",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-search": "100.0.0-dev",
+        "magento/magento2-functional-test-module-reports": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Search\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Search"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Search"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/README.md
index 2507ca55e068e0f6625e7a596189624271cd69de..26f535867d4bc932ee8e31e05910a5c777c21030 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Security** Module.
+The Functional Tests Module for **Magento_Security** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/composer.json
index 0490f14838574e7dff37c504365ac083fcaba41d..49278c3877af17f030f25f49edcf010913f0ea0d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security/composer.json
@@ -1,50 +1,33 @@
 {
     "name": "magento/magento2-functional-test-module-security",
-    "description": "Magento 2 Acceptance Test Module Security",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Security",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Security\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Security"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Security"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/README.md
index 00d818d2406b562a3102b0db69d9b94a9574cbbb..8759f1b780d3bdd9937f3d529c08439c656c227e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_SendFriend** Module.
+The Functional Tests Module for **Magento_SendFriend** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/composer.json
index 4dbd07d2aefd3657f689c061586df732901bd549..34c4fe3b466f28c3603faaa2b1c22e55e047ee37 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-send-friend",
-    "description": "Magento 2 Acceptance Test Module Send Friend",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Send Friend",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SendFriend\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/SendFriend"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SendFriend"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/README.md
index fbca31f68edbe9266156ed356c113032c01e138e..2e2ca0df9eaa676a2a7c571921525ec5f9b7d4e5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Shipping** Module.
+The Functional Tests Module for **Magento_Shipping** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/composer.json
index e4ad63928ad000c5b1548933ea5654b55bfc6685..007c4a85ee91955c4953794e6a4028c301c0cebe 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping/composer.json
@@ -1,61 +1,44 @@
 {
     "name": "magento/magento2-functional-test-module-shipping",
-    "description": "Magento 2 Acceptance Test Module Shipping",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-contact": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-user": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Shipping",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-contact": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-user": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Shipping\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Shipping"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Shipping"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/README.md
index cc89e5a0bce90550ec5b7c24af29ebf15d189396..9770ead78032cf2229503b9052498535fb69e7b1 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Sitemap** Module.
+The Functional Tests Module for **Magento_Sitemap** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/composer.json
index 9b7f0c3e184ef51fa4b96622ca0f557e6bfe8749..35cfb059ee516c7a9f4c5f563bfb9155588283f3 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap/composer.json
@@ -1,57 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-sitemap",
-    "description": "Magento 2 Acceptance Test Module Sitemap",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog-url-rewrite": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-robots": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Sitemap",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-url-rewrite": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-robots": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Sitemap\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Sitemap"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Sitemap"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/Cest/AdminCreateStoreGroupCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/Cest/AdminCreateStoreGroupCest.xml
index 53692f3f41de6573f306529a756fb52c87afe23e..8cfcd7d29ec14781e3c526ac989c3daa406a5fdc 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/Cest/AdminCreateStoreGroupCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/Cest/AdminCreateStoreGroupCest.xml
@@ -13,38 +13,37 @@
             <stories value="Create a store group in admin"/>
             <env value="chrome"/>
             <env value="firefox"/>
-            <env value="phantomjs"/>
             <group value="store"/>
         </annotations>
         <before>
-            <createData mergeKey="b1" entity="customStoreGroup"/>
-            <createData mergeKey="b2" entity="customStoreGroup"/>
+            <createData stepKey="b1" entity="customStoreGroup"/>
+            <createData stepKey="b2" entity="customStoreGroup"/>
         </before>
         <test name="AdminCreateStoreGroupTest">
             <annotations>
                 <title value="Create a store group in admin"/>
                 <description value="Create a store group in admin"/>
             </annotations>
-            <amOnPage mergeKey="s1" url="{{AdminLoginPage.url}}"/>
-            <fillField mergeKey="s3" selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}"/>
-            <fillField mergeKey="s5" selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}"/>
-            <click mergeKey="s7" selector="{{AdminLoginFormSection.signIn}}"/>
-            <amOnPage mergeKey="s9" url="{{AdminSystemStorePage.url}}"/>
+            <amOnPage stepKey="s1" url="{{AdminLoginPage.url}}"/>
+            <fillField stepKey="s3" selector="{{AdminLoginFormSection.username}}" userInput="{{_ENV.MAGENTO_ADMIN_USERNAME}}"/>
+            <fillField stepKey="s5" selector="{{AdminLoginFormSection.password}}" userInput="{{_ENV.MAGENTO_ADMIN_PASSWORD}}"/>
+            <click stepKey="s7" selector="{{AdminLoginFormSection.signIn}}"/>
+            <amOnPage stepKey="s9" url="{{AdminSystemStorePage.url}}"/>
 
-            <click mergeKey="s11" selector="{{AdminStoresGridSection.resetButton}}"/>
-            <waitForPageLoad mergeKey="s15" time="10"/>
+            <click stepKey="s11" selector="{{AdminStoresGridSection.resetButton}}"/>
+            <waitForPageLoad stepKey="s15" time="10"/>
 
-            <fillField mergeKey="s17" selector="{{AdminStoresGridSection.storeGrpFilterTextField}}" userInput="$$b1.group[name]$$"/>
-            <click mergeKey="s19" selector="{{AdminStoresGridSection.searchButton}}"/>
-            <waitForPageLoad mergeKey="s21" time="10"/>
-            <see mergeKey="s23" selector="{{AdminStoresGridSection.storeGrpNameInFirstRow}}" userInput="$$b1.group[name]$$"/>
+            <fillField stepKey="s17" selector="{{AdminStoresGridSection.storeGrpFilterTextField}}" userInput="$$b1.group[name]$$"/>
+            <click stepKey="s19" selector="{{AdminStoresGridSection.searchButton}}"/>
+            <waitForPageLoad stepKey="s21" time="10"/>
+            <see stepKey="s23" selector="{{AdminStoresGridSection.storeGrpNameInFirstRow}}" userInput="$$b1.group[name]$$"/>
 
-            <click mergeKey="s31" selector="{{AdminStoresGridSection.resetButton}}"/>
-            <waitForPageLoad mergeKey="s35" time="10"/>
-            <fillField mergeKey="s37" selector="{{AdminStoresGridSection.storeGrpFilterTextField}}" userInput="$$b2.group[name]$$"/>
-            <click mergeKey="s39" selector="{{AdminStoresGridSection.searchButton}}"/>
-            <waitForPageLoad mergeKey="s41" time="10"/>
-            <see mergeKey="s43" selector="{{AdminStoresGridSection.storeGrpNameInFirstRow}}" userInput="$$b2.group[name]$$"/>
+            <click stepKey="s31" selector="{{AdminStoresGridSection.resetButton}}"/>
+            <waitForPageLoad stepKey="s35" time="10"/>
+            <fillField stepKey="s37" selector="{{AdminStoresGridSection.storeGrpFilterTextField}}" userInput="$$b2.group[name]$$"/>
+            <click stepKey="s39" selector="{{AdminStoresGridSection.searchButton}}"/>
+            <waitForPageLoad stepKey="s41" time="10"/>
+            <see stepKey="s43" selector="{{AdminStoresGridSection.storeGrpNameInFirstRow}}" userInput="$$b2.group[name]$$"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/README.md
index 108f407dd446f7fbe8b2b1cbaf75ee77f5663c4a..409824ff7bfc3d0107c6d8e952ee350ec635b002 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Store** Module.
+The Functional Tests Module for **Magento_Store** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/composer.json
index 084ebb97b11580264a42c00da8a5f1cd3a931742..e456d4113c43082a02cc9041cab09761461b56a5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store/composer.json
@@ -1,53 +1,36 @@
 {
     "name": "magento/magento2-functional-test-module-store",
-    "description": "Magento 2 Acceptance Test Module Store",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Store",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Store\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Store"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Store"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/README.md
index 767c5b0b729a3a99bc6e1642cc5185ab346b1153..b9ad9db966882ecdcf8b6ee6dc433e054d3185cb 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Swagger** Module.
+The Functional Tests Module for **Magento_Swagger** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/composer.json
index 5b62252b3dfb78bb247475a496758651a535d0e3..9d6c6ac8a8e22747fbd5802fd1b9203fb7312659 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger/composer.json
@@ -1,46 +1,29 @@
 {
     "name": "magento/magento2-functional-test-module-swagger",
-    "description": "Magento 2 Acceptance Test Module Swagger",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
+    "description": "Magento 2 Functional Test Module Swagger",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Swagger\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Swagger"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swagger"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/README.md
index cc3852f1ed09b7dcb6e0f05a27b36d0ac53b06d4..c117f0005c6b132c43d71909caa67298ceb93610 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Swatches** Module.
+The Functional Tests Module for **Magento_Swatches** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/composer.json
index aa541ddd3a4eff5cafeaa5931f4978502ef264b7..60588d548aacccd0d6cfa6bedb99dca0623f4d36 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches/composer.json
@@ -1,57 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-swatches",
-    "description": "Magento 2 Acceptance Test Module Swatches",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-configurable-product": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Swatches",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-configurable-product": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Swatches\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Swatches"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Swatches"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/README.md
index b4b81246d1f4d45faa16f97b1583f149f260754c..5f25de111faa62755600eae7cdcb5174c06f70b7 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_SwatchesLayeredNavigation** Module.
+The Functional Tests Module for **Magento_SwatchesLayeredNavigation** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/composer.json
index f195f6b7aad68581375239ed37ff0ffd66b34fc4..64d374145ce97fc59b9a3907e99b90693872952c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation/composer.json
@@ -1,46 +1,29 @@
 {
     "name": "magento/magento2-functional-test-module-swatches-layered-navigation",
-    "description": "Magento 2 Acceptance Test Module Swatches Layered Navigation",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
+    "description": "Magento 2 Functional Test Module Swatches Layered Navigation",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\SwatchesLayeredNavigation\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/SwatchesLayeredNavigation"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/README.md
index 0a3794479ecb9fee37d7de0c1cf72a3e01c27676..0b2f50e217b0b1f99b0a5224180cb033d58aad2d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Tax** Module.
+The Functional Tests Module for **Magento_Tax** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/composer.json
index ca12ade23381b1af599e1ad35767a79e6e199402..c81eac8e64e83a961276499b70ccedd57788fc0f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax/composer.json
@@ -1,61 +1,44 @@
 {
     "name": "magento/magento2-functional-test-module-tax",
-    "description": "Magento 2 Acceptance Test Module Tax",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-reports": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Tax",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-reports": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Tax\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Tax"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Tax"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/TaxImportExport/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/TaxImportExport/composer.json
index 563df720db8f8f6dd857dd07fc24c3216ed09840..92c8043066c3afd4db10dc7a568cbc39c8525b13 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/TaxImportExport/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/TaxImportExport/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-tax-import-export",
-    "description": "Magento 2 Acceptance Test Module Tax Import Export",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Tax Import Export",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\TaxImportExport\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/TaxImportExport"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/TaxImportExport"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/README.md
index 187985eb18757357c24b248699c6ebc0f0bf4844..d52ba3a230431193d85886c6232058b86130382f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Theme** Module.
+The Functional Tests Module for **Magento_Theme** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/composer.json
index e54095e5ed0c3a36d65758dac72adfbd835de097..5e0e44f3b1f686e6c1c47f78459d9163d9ca322c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme/composer.json
@@ -1,57 +1,41 @@
 {
     "name": "magento/magento2-functional-test-module-theme",
-    "description": "Magento 2 Acceptance Test Module Theme",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-widget": "dev-master",
-        "magento/magento2-functional-test-module-config": "dev-master",
-        "magento/magento2-functional-test-module-media-storage": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Theme",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-media-storage": "100.0.0-dev",
+        "magento/magento2-functional-test-module-require-js": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev",
+        "magento/magento2-functional-test-module-widget": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Theme\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Theme"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Theme"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/README.md
index 477d0cca79123636382e8bfad93d7d1f43305361..4f3da0b95f39d90149c3c1ba2f034127c54ef24e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Translation** Module.
+The Functional Tests Module for **Magento_Translation** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/composer.json
index 7825f0b22d6e75278c54433fa2ca554d1410206b..3c41daeb237053ef4fe3146917c11bf24148ae1c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-translation",
-    "description": "Magento 2 Acceptance Test Module Translation",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-developer": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Translation",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-developer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Translation\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Translation"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Translation"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/README.md
index ca2fc10740951bf1aed6cf80651e3ade717ccc20..0e654f6aa5e8f66aa694a7f86b82aaed7eb19cf0 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Ui** Module.
+The Functional Tests Module for **Magento_Ui** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/composer.json
index 652a4ebed3a70ecbbd0ab4d4b4f8914cdec9cbf0..c8b9594133978c973b8242e74cce1db7570bc68b 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-ui",
-    "description": "Magento 2 Acceptance Test Module Ui",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master",
-        "magento/magento2-functional-test-module-user": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Ui",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-user": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Ui\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Ui"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ui"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/README.md
index 95189beffd42678e471b0cf2c3ed88a50a10bf57..3a7f99729cad3cc607918a3147e1b875c995e53a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Ups** Module.
+The Functional Tests Module for **Magento_Ups** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/composer.json
index 6cb246e0d55a30f2debd9445163d9c72045f60c6..d972a81232963ce64154ad9c8820c200bee35bb9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups/composer.json
@@ -1,55 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-ups",
-    "description": "Magento 2 Acceptance Test Module Ups",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-shipping": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Ups",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Ups\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Ups"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Ups"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/README.md
index a0c3a234569c9446c371d34e10462aa7fa3057cf..645ff970002a148de0a3739e5ef0bc6518beca65 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_UrlRewrite** Module.
+The Functional Tests Module for **Magento_UrlRewrite** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/composer.json
index a8b351fc45b16cea4a2400715f96aeba104fd6d1..b0b8e5ff73a72a9d683a1853f62af29fb0401648 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-url-rewrite",
-    "description": "Magento 2 Acceptance Test Module Url Rewrite",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog-url-rewrite": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-cms-url-rewrite": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Url Rewrite",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-url-rewrite": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms-url-rewrite": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\UrlRewrite\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/UrlRewrite"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/UrlRewrite"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/README.md
index 617eb0c0abe7edab7f343f2f3677b2d705c0580d..77e18cd31e81b23acaf942105d3f71458943cd88 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_User** Module.
+The Functional Tests Module for **Magento_User** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/composer.json
index c40a4c122ed8b44a5dd654432ea99568f583ca7b..5263f08825394ba9ac3db597f5e7bbc143616c7c 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-user",
-    "description": "Magento 2 Acceptance Test Module User",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-security": "dev-master",
-        "magento/magento2-functional-test-module-integration": "dev-master",
-        "magento/magento2-functional-test-module-email": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module User",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-email": "100.0.0-dev",
+        "magento/magento2-functional-test-module-integration": "100.0.0-dev",
+        "magento/magento2-functional-test-module-security": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\User\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/User"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/User"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/LICENSE.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49525fd99da9c51e6d85420266d41cb3d6b7a648
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/LICENSE.txt
@@ -0,0 +1,48 @@
+
+Open Software License ("OSL") v. 3.0
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Open Software License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly. 
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright (C) 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
\ No newline at end of file
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/LICENSE_AFL.txt b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/LICENSE_AFL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f39d641b18a19e56df6c8a3e4038c940fb886b32
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/LICENSE_AFL.txt
@@ -0,0 +1,48 @@
+
+Academic Free License ("AFL") v. 3.0
+
+This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+Licensed under the Academic Free License version 3.0
+
+   1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+         1. to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+         2. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+         3. to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License;
+
+         4. to perform the Original Work publicly; and
+
+         5. to display the Original Work publicly.
+
+   2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+   3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+   4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+   5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+   6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+   7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+   8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+   9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+  10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+  11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+  12. Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+  13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+  14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+  15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+  16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0f87c957487ef8fbf576768636c9f68eb204a601
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/README.md
@@ -0,0 +1,3 @@
+# Magento 2 Functional Tests
+
+The Functional Tests Module for **Magento_Usps** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..a4f4b182caecc2adbbaf27bb01204cb80a8be017
--- /dev/null
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps/composer.json
@@ -0,0 +1,40 @@
+{
+    "name": "magento/magento2-functional-test-module-usps",
+    "description": "Magento 2 Functional Test Module Usps",
+    "type": "magento2-test-module",
+    "version": "100.0.0-dev",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-config": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-shipping": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\FunctionalTest\\Usps\\": ""
+        }
+    },
+    "extra": {
+        "map": [
+            [
+                "*",
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Usps"
+            ]
+        ]
+    }
+}
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/README.md
index 454eb1e9164ee4ba930fb9e717ed8bf215ad193c..9c847f4db2bdb22d814458d1210797f847e9a1f8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Variable** Module.
+The Functional Tests Module for **Magento_Variable** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/composer.json
index 178f0401b9b2e553d2e3f400fd9b72e49f8c5da5..4b38be8f11dfdde5e643ec164c2b33954e6cdbe3 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable/composer.json
@@ -1,51 +1,34 @@
 {
     "name": "magento/magento2-functional-test-module-variable",
-    "description": "Magento 2 Acceptance Test Module Variable",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-email": "dev-master",
-        "magento/magento2-functional-test-module-store": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Variable",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-email": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Variable\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Variable"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Variable"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/README.md
index c993e275c54fa9c0758f6a50791127e19039c2c2..9edda871be5505b5bb158ccb6d64210c4af3a37f 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Vault** Module.
+The Functional Tests Module for **Magento_Vault** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/composer.json
index e1af1518555e4285f23f8c6fb8da3aa5c7014461..c5a28256b7aa5e37a51ad907347303a2c0480bcd 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault/composer.json
@@ -1,54 +1,37 @@
 {
     "name": "magento/magento2-functional-test-module-vault",
-    "description": "Magento 2 Acceptance Test Module Vault",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-payment": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Vault",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-payment": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Vault\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Vault"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Vault"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/README.md
index c48f288e7293b82b7ccce1fc8cdb91280d27c19c..ba933541be888a75f2c3b9e1c2fd2789c7a332c0 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Version** Module.
+The Functional Tests Module for **Magento_Version** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/composer.json
index 82387c516accbda6deeb15850bcd69972e016f05..3e222e5641ab6f982e6d89f7b07a8e92bde2cfbf 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version/composer.json
@@ -1,48 +1,30 @@
 {
     "name": "magento/magento2-functional-test-module-version",
-    "description": "Magento 2 Acceptance Test Module Version",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
+    "description": "Magento 2 Functional Test Module Version",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Version\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Version"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Version"
             ]
         ]
     }
 }
-
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/README.md
index 3c8cf910c0194bdeb10612e9a1cc09a0d29a225c..bb843ce718556fef3daca968aa829284c47360ca 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Webapi** Module.
+The Functional Tests Module for **Magento_Webapi** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/composer.json
index af20f4956e2a04d28c9c93a878d8c5aebfa22d09..00916f722e3d6bcdad2e9943aa2e848e93ec89e8 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi/composer.json
@@ -1,52 +1,35 @@
 {
     "name": "magento/magento2-functional-test-module-webapi",
-    "description": "Magento 2 Acceptance Test Module Webapi",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-authorization": "dev-master",
-        "magento/magento2-functional-test-module-integration": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Webapi",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-authorization": "100.0.0-dev",
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-integration": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Webapi\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Webapi"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Webapi"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/README.md
index 24a7953393052ddcd8625fc0a206d0a0d76acfd7..25f93d69629243408714c20fdb6df6a78e99a69d 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_WebapiSecurity** Module.
+The Functional Tests Module for **Magento_WebapiSecurity** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/composer.json
index 80cfc405e374748f6281d383c185af06a00119cf..f66e3e65d26d7214ed472a1195a333c670b3da22 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity/composer.json
@@ -1,49 +1,32 @@
 {
     "name": "magento/magento2-functional-test-module-webapi-security",
-    "description": "Magento 2 Acceptance Test Module Webapi Security",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-webapi": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Webapi Security",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-webapi": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\WebapiSecurity\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/WebapiSecurity"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WebapiSecurity"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/README.md
index 5166cfc5d4b26bbea43c195313232339a83b9d3c..4f199873079e521e1dc9ee9564753f594701a503 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Weee** Module.
+The Functional Tests Module for **Magento_Weee** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/composer.json
index 7e3f3eac4247d53a7084c2e2eff701cf16fe2d88..9bc06706ee75ea849ea850763b1452456732ece5 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee/composer.json
@@ -1,60 +1,43 @@
 {
     "name": "magento/magento2-functional-test-module-weee",
-    "description": "Magento 2 Acceptance Test Module Weee",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-tax": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-directory": "dev-master",
-        "magento/magento2-functional-test-module-eav": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-page-cache": "dev-master",
-        "magento/magento2-functional-test-module-quote": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Weee",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-directory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-eav": "100.0.0-dev",
+        "magento/magento2-functional-test-module-page-cache": "100.0.0-dev",
+        "magento/magento2-functional-test-module-quote": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-tax": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Weee\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Weee"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Weee"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/README.md
index b6fd0b4513bb11aade945a3f1f99dcd9fc97849a..2a8996c2f332278be709185afbda3146cff0576e 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Widget** Module.
+The Functional Tests Module for **Magento_Widget** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/composer.json
index 7d546965c3a3ff571305032a7aca83e9adbb0357..40445beb03c09ca146d9860bb0c3d37dc17c684a 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget/composer.json
@@ -1,55 +1,38 @@
 {
     "name": "magento/magento2-functional-test-module-widget",
-    "description": "Magento 2 Acceptance Test Module Widget",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-cms": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-email": "dev-master",
-        "magento/magento2-functional-test-module-theme": "dev-master",
-        "magento/magento2-functional-test-module-variable": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Widget",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-cms": "100.0.0-dev",
+        "magento/magento2-functional-test-module-email": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-theme": "100.0.0-dev",
+        "magento/magento2-functional-test-module-variable": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Widget\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Widget"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Widget"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/Cest/StorefrontDeletePersistedWishlistCest.xml b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/Cest/StorefrontDeletePersistedWishlistCest.xml
index b1f452ac565be6f5bf29148c756d51ef24592782..9b21337f94dd9365d2bfa5342f831a1c80e597c9 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/Cest/StorefrontDeletePersistedWishlistCest.xml
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/Cest/StorefrontDeletePersistedWishlistCest.xml
@@ -13,45 +13,44 @@
             <stories value="Delete a persist wishlist for a customer"/>
             <env value="chrome"/>
             <env value="firefox"/>
-            <env value="phantomjs"/>
             <group value="wishlist"/>
         </annotations>
         <before>
-            <createData mergeKey="category" entity="SimpleSubCategory"/>
-            <createData mergeKey="product" entity="SimpleProduct" >
+            <createData stepKey="category" entity="SimpleSubCategory"/>
+            <createData stepKey="product" entity="SimpleProduct" >
                 <required-entity createDataKey="category"/>
             </createData>
-            <createData mergeKey="customer" entity="Simple_US_Customer"/>
-            <createData mergeKey="wishlist" entity="Wishlist">
+            <createData stepKey="customer" entity="Simple_US_Customer"/>
+            <createData stepKey="wishlist" entity="Wishlist">
                 <required-entity createDataKey="customer"/>
                 <required-entity createDataKey="product"/>
             </createData>
         </before>
         <after>
-            <deleteData mergeKey="deleteProduct" createDataKey="product"/>
-            <deleteData mergeKey="deleteCategory" createDataKey="category"/>
-            <deleteData mergeKey="deleteCustomer" createDataKey="customer"/>
+            <deleteData stepKey="deleteProduct" createDataKey="product"/>
+            <deleteData stepKey="deleteCategory" createDataKey="category"/>
+            <deleteData stepKey="deleteCustomer" createDataKey="customer"/>
         </after>
         <test name="StorefrontDeletePersistedWishlistTest">
             <annotations>
                 <title value="Delete a persist wishlist for a customer"/>
                 <description value="Delete a persist wishlist for a customer"/>
             </annotations>
-            <amOnPage mergeKey="amOnSignInPage"  url="{{StorefrontCustomerSignInPage.url}}"/>
-            <fillField  mergeKey="fillEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerSignInFormSection.emailField}}"/>
-            <fillField  mergeKey="fillPassword" userInput="$$customer.password$$" selector="{{StorefrontCustomerSignInFormSection.passwordField}}"/>
-            <waitForElementVisible mergeKey="waitForButton" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
-            <click mergeKey="clickSignInAccountButton" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
-            <see mergeKey="seeFirstName" userInput="$$customer.firstname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <see mergeKey="seeLastName" userInput="$$customer.lastname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <see mergeKey="seeEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
-            <waitForPageLoad mergeKey="15"/>
-            <amOnPage mergeKey="amOnWishlist" url="{{StorefrontCustomerWishlistPage.url}}"/>
-            <see mergeKey="seeWishlist" userInput="$$product.name$$" selector="{{StorefrontCustomerWishlistSection.productItemNameText}}"/>
-            <moveMouseOver mergeKey="mouseOver" selector="{{StorefrontCustomerWishlistSection.productItemNameText}}"/>
-            <waitForElementVisible mergeKey="waitForRemoveButton" selector="{{StorefrontCustomerWishlistSection.removeWishlistButton}}"/>
-            <click mergeKey="clickRemove" selector="{{StorefrontCustomerWishlistSection.removeWishlistButton}}"/>
-            <see mergeKey="seeEmptyWishlist" userInput="You have no items in your wish list" selector="{{StorefrontCustomerWishlistSection.emptyWishlistText}}"/>
+            <amOnPage stepKey="amOnSignInPage"  url="{{StorefrontCustomerSignInPage.url}}"/>
+            <fillField  stepKey="fillEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerSignInFormSection.emailField}}"/>
+            <fillField  stepKey="fillPassword" userInput="$$customer.password$$" selector="{{StorefrontCustomerSignInFormSection.passwordField}}"/>
+            <waitForElementVisible stepKey="waitForButton" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
+            <click stepKey="clickSignInAccountButton" selector="{{StorefrontCustomerSignInFormSection.signInAccountButton}}"/>
+            <see stepKey="seeFirstName" userInput="$$customer.firstname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <see stepKey="seeLastName" userInput="$$customer.lastname$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <see stepKey="seeEmail" userInput="$$customer.email$$" selector="{{StorefrontCustomerDashboardAccountInformationSection.ContactInformation}}" />
+            <waitForPageLoad stepKey="15"/>
+            <amOnPage stepKey="amOnWishlist" url="{{StorefrontCustomerWishlistPage.url}}"/>
+            <see stepKey="seeWishlist" userInput="$$product.name$$" selector="{{StorefrontCustomerWishlistSection.productItemNameText}}"/>
+            <moveMouseOver stepKey="mouseOver" selector="{{StorefrontCustomerWishlistSection.productItemNameText}}"/>
+            <waitForElementVisible stepKey="waitForRemoveButton" selector="{{StorefrontCustomerWishlistSection.removeWishlistButton}}"/>
+            <click stepKey="clickRemove" selector="{{StorefrontCustomerWishlistSection.removeWishlistButton}}"/>
+            <see stepKey="seeEmptyWishlist" userInput="You have no items in your wish list" selector="{{StorefrontCustomerWishlistSection.emptyWishlistText}}"/>
         </test>
     </cest>
 </config>
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/README.md b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/README.md
index 53615d4273f736db0aa83dc2be8b738f5232eb5a..d5b0902bd9cb0a7621dc75456b2a58076926c033 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/README.md
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/README.md
@@ -1,3 +1,3 @@
-# Magento 2 Acceptance Tests
+# Magento 2 Functional Tests
 
-The Acceptance Tests Module for **Magento_Wishlist** Module.
+The Functional Tests Module for **Magento_Wishlist** Module.
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/composer.json
index cfb79284ec5a72cfcf3bd3232e5243ed1b217ba4..70e8df41e731318f13ac57988cc135323a88b2ac 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist/composer.json
@@ -1,57 +1,40 @@
 {
     "name": "magento/magento2-functional-test-module-wishlist",
-    "description": "Magento 2 Acceptance Test Module Wishlist",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-store": "dev-master",
-        "magento/magento2-functional-test-module-customer": "dev-master",
-        "magento/magento2-functional-test-module-catalog": "dev-master",
-        "magento/magento2-functional-test-module-checkout": "dev-master",
-        "magento/magento2-functional-test-module-catalog-inventory": "dev-master",
-        "magento/magento2-functional-test-module-rss": "dev-master",
-        "magento/magento2-functional-test-module-backend": "dev-master",
-        "magento/magento2-functional-test-module-sales": "dev-master",
-        "magento/magento2-functional-test-module-ui": "dev-master"
-    },
+    "description": "Magento 2 Functional Test Module Wishlist",
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-backend": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog": "100.0.0-dev",
+        "magento/magento2-functional-test-module-catalog-inventory": "100.0.0-dev",
+        "magento/magento2-functional-test-module-checkout": "100.0.0-dev",
+        "magento/magento2-functional-test-module-customer": "100.0.0-dev",
+        "magento/magento2-functional-test-module-rss": "100.0.0-dev",
+        "magento/magento2-functional-test-module-sales": "100.0.0-dev",
+        "magento/magento2-functional-test-module-store": "100.0.0-dev",
+        "magento/magento2-functional-test-module-ui": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\Wishlist\\": ""
         }
     },
     "extra": {
         "map": [
             [
                 "*",
-                "tests/functional/Magento/FunctionalTest/Wishlist"
+                "dev/tests/acceptance/tests/functional/Magento/FunctionalTest/Wishlist"
             ]
         ]
     }
diff --git a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WishlistAnalytics/composer.json b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WishlistAnalytics/composer.json
index 19dba845461e7f85927889634087808530377be4..b49a321f44884d12f7e70a0533c65fc0346d9248 100644
--- a/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WishlistAnalytics/composer.json
+++ b/dev/tests/acceptance/tests/functional/Magento/FunctionalTest/WishlistAnalytics/composer.json
@@ -1,42 +1,25 @@
 {
     "name": "magento/magento2-functional-test-module-wishlist-analytics",
     "description": "Magento 2 Acceptance Test Module WishlistAnalytics",
-    "repositories": [
-        {
-            "type" : "composer",
-            "url" : "https://repo.magento.com/"
-        }
-    ],
-    "require": {
-        "php": "~7.0",
-        "codeception/codeception": "2.2|2.3",
-        "allure-framework/allure-codeception": "dev-master",
-        "consolidation/robo": "^1.0.0",
-        "henrikbjorn/lurker": "^1.2",
-        "vlucas/phpdotenv": "~2.4",
-        "magento/magento2-functional-testing-framework": "dev-develop"
-    },
-    "suggest": {
-        "magento/magento2-functional-test-module-wishlist": "dev-master"
-    },
     "type": "magento2-test-module",
-    "version": "dev-master",
+    "version": "100.0.0-dev",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
+    "config": {
+        "sort-packages": true
+    },
+    "require": {
+        "magento/magento2-functional-testing-framework": "1.0.0",
+        "php": "7.0.2|7.0.4|~7.0.6|~7.1.0"
+    },
+    "suggest": {
+        "magento/magento2-functional-test-module-wishlist": "100.0.0-dev"
+    },
     "autoload": {
-        "psr-0": {
-            "Yandex": "vendor/allure-framework/allure-codeception/src/"
-        },
         "psr-4": {
-            "Magento\\FunctionalTestingFramework\\": [
-                "vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework"
-            ],
-            "Magento\\FunctionalTest\\": [
-                "tests/functional/Magento/FunctionalTest",
-                "generated/Magento/FunctionalTest"
-            ]
+            "Magento\\FunctionalTest\\WishlistAnalytics\\": ""
         }
     },
     "extra": {
diff --git a/dev/tests/api-functional/testsuite/Magento/ConfigurableProduct/Api/LinkManagementTest.php b/dev/tests/api-functional/testsuite/Magento/ConfigurableProduct/Api/LinkManagementTest.php
index d899839d43d402b5b8160b086c44aeb822ff7d2f..df4138db30ce0e5739adc9fa49cdfd7e69f7604e 100644
--- a/dev/tests/api-functional/testsuite/Magento/ConfigurableProduct/Api/LinkManagementTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/ConfigurableProduct/Api/LinkManagementTest.php
@@ -57,6 +57,9 @@ class LinkManagementTest extends \Magento\TestFramework\TestCase\WebapiAbstract
 
             $this->assertArrayHasKey('status', $product);
             $this->assertEquals('1', $product['status']);
+
+            $this->assertArrayHasKey('visibility', $product);
+            $this->assertEquals('1', $product['visibility']);
         }
     }
 
diff --git a/dev/tests/functional/composer.json b/dev/tests/functional/composer.json
index f58a38bd01de370bf36f863920407c5665e0e812..05ef221a0940f4564b0b00591f658a25f0578b86 100644
--- a/dev/tests/functional/composer.json
+++ b/dev/tests/functional/composer.json
@@ -1,10 +1,14 @@
 {
+    "config": {
+        "sort-packages": true
+    },
     "require": {
-        "magento/mtf": "1.0.0-rc57",
         "php": "7.0.2|~7.0.6|~7.1.0",
+        "allure-framework/allure-phpunit": "~1.2.0",
+        "magento/mtf": "1.0.0-rc57",
+        "allure-framework/allure-phpunit": "~1.2.0",
         "phpunit/phpunit": "~4.8.0|~5.5.0",
-        "phpunit/phpunit-selenium": ">=1.2",
-        "allure-framework/allure-phpunit": "~1.2.0"
+        "phpunit/phpunit-selenium": ">=1.2"
     },
     "suggest": {
         "netwing/selenium-server-standalone": "dev-master",
diff --git a/dev/tests/functional/etc/events.xml b/dev/tests/functional/etc/events.xml
index 5be0f8e7d4e9c1f45026b17c1a1c30f30514ac09..5f6a771237a8155f9ccb81f5c1be8159eac2fb5f 100644
--- a/dev/tests/functional/etc/events.xml
+++ b/dev/tests/functional/etc/events.xml
@@ -11,6 +11,11 @@
             <tag name="webapi_failed" />
         </observer>
     </preset>
+    <preset name="allure">
+        <observer class="Magento\Mtf\System\Observer\AllureWebapiResponse">
+            <tag name="webapi_failed" />
+        </observer>
+    </preset>
     <preset name="coverage" extends="base">
         <observer class="Magento\Mtf\System\Observer\PageUrl">
             <tag name="click_after"/>
diff --git a/dev/tests/functional/lib/Magento/Mtf/System/Observer/AllureWebapiResponse.php b/dev/tests/functional/lib/Magento/Mtf/System/Observer/AllureWebapiResponse.php
new file mode 100644
index 0000000000000000000000000000000000000000..bda514ad9fa856f95623f0b803116232cc12540f
--- /dev/null
+++ b/dev/tests/functional/lib/Magento/Mtf/System/Observer/AllureWebapiResponse.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Mtf\System\Observer;
+
+use Magento\Mtf\System\Event\Event;
+
+/**
+ * AllureWebapiResponse observer.
+ */
+class AllureWebapiResponse extends AbstractAllureObserver
+{
+    /**
+     * Collect response source artifact to storage.
+     *
+     * @param Event $event
+     * @return void
+     */
+    public function process(Event $event)
+    {
+        $this->addAttachment(
+            json_encode($event->getSubjects()[0]),
+            'webapi-response-' . $event->getFileIdentifier(),
+            'text/json'
+        );
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertFilterProductList.php b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertFilterProductList.php
index ea80e5ac224808cb125054c8f69bb48455516ffd..19de61c698701525369af97ccadd01bb3e4ca3a7 100644
--- a/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertFilterProductList.php
+++ b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertFilterProductList.php
@@ -3,7 +3,6 @@
  * Copyright © Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\LayeredNavigation\Test\Constraint;
 
 use Magento\Catalog\Test\Fixture\Category;
diff --git a/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertProductsCount.php b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertProductsCount.php
new file mode 100644
index 0000000000000000000000000000000000000000..7c9a1f4faef1663af977b2fc3bbca99c012e13b7
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Constraint/AssertProductsCount.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\LayeredNavigation\Test\Constraint;
+
+use Magento\Catalog\Test\Fixture\Category;
+use Magento\Catalog\Test\Page\Category\CatalogCategoryView;
+use Magento\Mtf\Client\BrowserInterface;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assertion that category name and products qty are correct in category layered navigation
+ */
+class AssertProductsCount extends AbstractConstraint
+{
+    /**
+     * Browser instance.
+     *
+     * @var BrowserInterface
+     */
+    private $browser;
+
+    /**
+     * Catalog category view page.
+     *
+     * @var CatalogCategoryView $catalogCategoryView
+     */
+    private $catalogCategoryView;
+
+    /**
+     * Assert that category name and products cont in layered navigation are correct
+     *
+     * @param CatalogCategoryView $catalogCategoryView
+     * @param Category $category
+     * @param BrowserInterface $browser
+     * @param string $productsCount
+     * @return void
+     */
+    public function processAssert(
+        CatalogCategoryView $catalogCategoryView,
+        Category $category,
+        BrowserInterface $browser,
+        $productsCount
+    ) {
+        $this->browser = $browser;
+        $this->catalogCategoryView = $catalogCategoryView;
+        while ($category) {
+            $parentCategory = $category->getDataFieldConfig('parent_id')['source']->getParentCategory();
+            if ($parentCategory && $parentCategory->getData('is_anchor') == 'No') {
+                $this->openCategory($parentCategory);
+                \PHPUnit_Framework_Assert::assertTrue(
+                    $this->catalogCategoryView->getLayeredNavigationBlock()->isCategoryVisible(
+                        $category,
+                        $productsCount
+                    ),
+                    'Category ' . $category->getName() . ' is absent in Layered Navigation or products count is wrong'
+                );
+            }
+            $category = $parentCategory;
+        }
+    }
+
+    /**
+     * Open category.
+     *
+     * @param Category $category
+     * @return void
+     */
+    private function openCategory(Category $category)
+    {
+        $categoryUrlKey = [];
+
+        while ($category) {
+            $categoryUrlKey[] = $category->hasData('url_key')
+                ? strtolower($category->getUrlKey())
+                : trim(strtolower(preg_replace('#[^0-9a-z%]+#i', '-', $category->getName())), '-');
+
+            $category = $category->getDataFieldConfig('parent_id')['source']->getParentCategory();
+            if ($category !== null && 1 == $category->getParentId()) {
+                $category = null;
+            }
+        }
+        $categoryUrlKey = $_ENV['app_frontend_url'] . implode('/', array_reverse($categoryUrlKey)) . '.html';
+
+        $this->browser->open($categoryUrlKey);
+    }
+
+    /**
+     * Assert success message that category is present in layered navigation and product is visible in product grid.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Category is present in layered navigation and product is visible in product grid.';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Repository/Category.xml b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Repository/Category.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7799faf309ccfc3492feecf210cf2d981acdd568
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/Repository/Category.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" ?>
+<!--
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/Magento/Mtf/Repository/etc/repository.xsd">
+    <repository class="Magento\Catalog\Test\Repository\Category">
+        <dataset name="default_non_anchored_subcategory">
+            <field name="name" xsi:type="string">DefaultSubcategory%isolation%</field>
+            <field name="url_key" xsi:type="string">default-subcategory-%isolation%</field>
+            <field name="parent_id" xsi:type="array">
+                <item name="dataset" xsi:type="string">default_category</item>
+            </field>
+            <field name="is_active" xsi:type="string">Yes</field>
+            <field name="is_anchor" xsi:type="string">No</field>
+            <field name="include_in_menu" xsi:type="string">Yes</field>
+        </dataset>
+
+        <dataset name="default_second_level_anchored_subcategory">
+            <field name="name" xsi:type="string">DefaultSubcategory%isolation%</field>
+            <field name="url_key" xsi:type="string">default-subcategory-%isolation%</field>
+            <field name="parent_id" xsi:type="array">
+                <item name="dataset" xsi:type="string">default_non_anchored_subcategory</item>
+            </field>
+            <field name="is_active" xsi:type="string">Yes</field>
+            <field name="is_anchor" xsi:type="string">Yes</field>
+            <field name="include_in_menu" xsi:type="string">Yes</field>
+        </dataset>
+
+        <dataset name="default_third_level_non_anchored_subcategory">
+            <field name="name" xsi:type="string">DefaultSubcategory%isolation%</field>
+            <field name="url_key" xsi:type="string">default-subcategory-%isolation%</field>
+            <field name="parent_id" xsi:type="array">
+                <item name="dataset" xsi:type="string">default_second_level_anchored_subcategory</item>
+            </field>
+            <field name="is_active" xsi:type="string">Yes</field>
+            <field name="is_anchor" xsi:type="string">No</field>
+            <field name="include_in_menu" xsi:type="string">Yes</field>
+        </dataset>
+
+        <dataset name="default_fourth_level_anchored_subcategory">
+            <field name="name" xsi:type="string">DefaultSubcategory%isolation%</field>
+            <field name="url_key" xsi:type="string">default-subcategory-%isolation%</field>
+            <field name="parent_id" xsi:type="array">
+                <item name="dataset" xsi:type="string">default_third_level_non_anchored_subcategory</item>
+            </field>
+            <field name="is_active" xsi:type="string">Yes</field>
+            <field name="is_anchor" xsi:type="string">Yes</field>
+            <field name="include_in_menu" xsi:type="string">Yes</field>
+        </dataset>
+    </repository>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/TestCase/ProductsCountInLayeredNavigationTest.php b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/TestCase/ProductsCountInLayeredNavigationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..179f9ef2579093184c9f452e9272a01b45900e50
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/TestCase/ProductsCountInLayeredNavigationTest.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\LayeredNavigation\Test\TestCase;
+
+use Magento\Catalog\Test\Fixture\Category;
+use Magento\Mtf\TestCase\Injectable;
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
+use Magento\Mtf\Fixture\FixtureFactory;
+
+/**
+ * Preconditions:
+ * 1. Create four categories assigned in ascending order (Default Category->first->second->third->fourth)
+ * first and third categories should not be anchored, second and fourth categories should be anchored
+ * 2. Create configurable product with two configurable options and assign it to category "fourth"
+ *
+ * Steps:
+ * 1. Disable configurable options via massaction or from edit product page
+ * 2. Open created non anchored categories on frontend
+ * 3. Perform assertions
+ *
+ * @group Layered_Navigation
+ * @ZephyrId MAGETWO-82891
+ */
+class ProductsCountInLayeredNavigationTest extends Injectable
+{
+    /**
+     * Product page with a grid
+     *
+     * @var CatalogProductIndex
+     */
+    protected $catalogProductIndex;
+
+    /**
+     * Page to update a product
+     *
+     * @var CatalogProductEdit
+     */
+    protected $editProductPage;
+
+    /**
+     * Fixture factory
+     *
+     * @var FixtureFactory
+     */
+    protected $fixtureFactory;
+
+    /**
+     * Injection data
+     *
+     * @param CatalogProductIndex $catalogProductIndex
+     * @param CatalogProductEdit $editProductPage
+     * @param FixtureFactory $fixtureFactory
+     * @return void
+     */
+    public function __inject(
+        CatalogProductIndex $catalogProductIndex,
+        CatalogProductEdit $editProductPage,
+        FixtureFactory $fixtureFactory
+    ) {
+        $this->catalogProductIndex = $catalogProductIndex;
+        $this->editProductPage = $editProductPage;
+        $this->fixtureFactory = $fixtureFactory;
+    }
+
+    /**
+     * Test category name and products count displaying in layered navigation after configurable options disabling
+     *
+     * @param Category $category
+     * @param boolean $disableFromProductsGreed
+     * @return array
+     */
+    public function test(
+        Category $category,
+        $disableFromProductsGreed = true
+    ) {
+        // Preconditions
+        $category->persist();
+        // Steps
+        $products = $category->getDataFieldConfig('category_products')['source']->getProducts();
+        $configurableOptions = [];
+        /** @var \Magento\ConfigurableProduct\Test\Fixture\ConfigurableProduct\ $product */
+        foreach ($products as $product) {
+            $configurableOptions = array_merge(
+                $configurableOptions,
+                $product->getConfigurableAttributesData()['matrix']
+            );
+        }
+        // Disable configurable options
+        if ($disableFromProductsGreed) {
+            $this->catalogProductIndex->open();
+            $this->catalogProductIndex->getProductGrid()->massaction(
+                array_map(
+                    function ($assignedProduct) {
+                        return ['sku' => $assignedProduct['sku']];
+                    },
+                    $configurableOptions
+                ),
+                ['Change status' => 'Disable']
+            );
+        } else {
+            $productToDisable = $this->fixtureFactory->createByCode(
+                'catalogProductSimple',
+                ['data' => ['status' => 'No']]
+            );
+            foreach ($configurableOptions as $configurableOption) {
+                $filter = ['sku' => $configurableOption['sku']];
+                $this->catalogProductIndex->open();
+                $this->catalogProductIndex->getProductGrid()->searchAndOpen($filter);
+                $this->editProductPage->getProductForm()->fill($productToDisable);
+                $this->editProductPage->getFormPageActions()->save();
+            }
+        }
+        return [
+            'products' => $configurableOptions
+        ];
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/TestCase/ProductsCountInLayeredNavigationTest.xml b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/TestCase/ProductsCountInLayeredNavigationTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41e18e64540970783c931e392c40c80c96c5c7f4
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/LayeredNavigation/Test/TestCase/ProductsCountInLayeredNavigationTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © Magento, Inc. 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\LayeredNavigation\Test\TestCase\ProductsCountInLayeredNavigationTest" summary="Check configurable products count in child categories of non-anchor category" ticketId="MAGETWO-82891">
+        <variation name="ProductsCountInLayeredNavigationTestVariation1" summary="Check configurable products count with disabled by massaction products">
+            <data name="runReindex" xsi:type="boolean">true</data>
+            <data name="flushCache" xsi:type="boolean">true</data>
+            <data name="category/dataset" xsi:type="string">default_fourth_level_anchored_subcategory</data>
+            <data name="category/data/category_products/dataset" xsi:type="string">configurableProduct::product_with_size</data>
+            <data name="productsCount" xsi:type="string">0</data>
+            <data name="disableFromProductsGreed" xsi:type="boolean">true</data>
+            <constraint name="Magento\LayeredNavigation\Test\Constraint\AssertProductsCount" />
+        </variation>
+        <variation name="ProductsCountInLayeredNavigationTestVariation2" summary="Check configurable products count with disabled from edit page products">
+            <data name="runReindex" xsi:type="boolean">true</data>
+            <data name="flushCache" xsi:type="boolean">true</data>
+            <data name="category/dataset" xsi:type="string">default_fourth_level_anchored_subcategory</data>
+            <data name="category/data/category_products/dataset" xsi:type="string">configurableProduct::product_with_size</data>
+            <data name="productsCount" xsi:type="string">0</data>
+            <data name="disableFromProductsGreed" xsi:type="boolean">false</data>
+            <constraint name="Magento\LayeredNavigation\Test\Constraint\AssertProductsCount" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/integration/testsuite/Magento/CatalogSearch/Model/Indexer/FulltextTest.php b/dev/tests/integration/testsuite/Magento/CatalogSearch/Model/Indexer/FulltextTest.php
index 29d1547f2d872f0764fb0ad5dbd10f8efcf02f9e..da2fc4498718b6b07342e9e2c37eced0e88f24b5 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogSearch/Model/Indexer/FulltextTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogSearch/Model/Indexer/FulltextTest.php
@@ -6,12 +6,14 @@
 namespace Magento\CatalogSearch\Model\Indexer;
 
 use Magento\Catalog\Model\Product;
+use Magento\Catalog\Model\Product\Visibility;
 use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection;
 use Magento\TestFramework\Helper\Bootstrap;
 
 /**
  * @magentoDbIsolation disabled
  * @magentoDataFixture Magento/CatalogSearch/_files/indexer_fulltext.php
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class FulltextTest extends \PHPUnit\Framework\TestCase
 {
@@ -186,13 +188,42 @@ class FulltextTest extends \PHPUnit\Framework\TestCase
         $this->assertCount(4, $products);
     }
 
+    /**
+     * Test the case when the last child product of the configurable becomes disabled/out of stock.
+     *
+     * Such behavior should enforce parent product to be deleted from the index as its latest child become unavailable
+     * and the configurable cannot be sold anymore.
+     *
+     * @magentoAppArea adminhtml
+     * @magentoDataFixture Magento/CatalogSearch/_files/product_configurable_with_single_child.php
+     */
+    public function testReindexParentProductWhenChildBeingDisabled()
+    {
+        $this->indexer->reindexAll();
+
+        $visibilityFilter = [
+            Visibility::VISIBILITY_IN_SEARCH,
+            Visibility::VISIBILITY_IN_CATALOG,
+            Visibility::VISIBILITY_BOTH
+        ];
+        $products = $this->search('Configurable', $visibilityFilter);
+        $this->assertCount(1, $products);
+
+        $childProduct = $this->getProductBySku('configurable_option_single_child');
+        $childProduct->setStatus(Product\Attribute\Source\Status::STATUS_DISABLED)->save();
+
+        $products = $this->search('Configurable', $visibilityFilter);
+        $this->assertCount(0, $products);
+    }
+
     /**
      * Search the text and return result collection
      *
      * @param string $text
+     * @param null|array $visibilityFilter
      * @return Product[]
      */
-    protected function search($text)
+    protected function search($text, $visibilityFilter = null)
     {
         $this->resourceFulltext->resetSearchResults();
         $query = $this->queryFactory->get();
@@ -207,6 +238,10 @@ class FulltextTest extends \PHPUnit\Framework\TestCase
             ]
         );
         $collection->addSearchFilter($text);
+        if (null !== $visibilityFilter) {
+            $collection->setVisibility($visibilityFilter);
+        }
+
         foreach ($collection as $product) {
             $products[] = $product;
         }
diff --git a/dev/tests/integration/testsuite/Magento/CatalogSearch/_files/product_configurable_with_single_child.php b/dev/tests/integration/testsuite/Magento/CatalogSearch/_files/product_configurable_with_single_child.php
new file mode 100644
index 0000000000000000000000000000000000000000..5172ea94e53748ed708b6b268e8a79371b072be1
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogSearch/_files/product_configurable_with_single_child.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+use Magento\Catalog\Api\ProductRepositoryInterface;
+use Magento\Catalog\Model\Product;
+use Magento\Catalog\Model\Product\Attribute\Source\Status;
+use Magento\Catalog\Model\Product\Type;
+use Magento\Catalog\Model\Product\Visibility;
+use Magento\Catalog\Setup\CategorySetup;
+use Magento\CatalogInventory\Api\Data\StockItemInterface;
+use Magento\ConfigurableProduct\Helper\Product\Options\Factory;
+use Magento\ConfigurableProduct\Model\Product\Type\Configurable;
+use Magento\Eav\Api\Data\AttributeOptionInterface;
+use Magento\TestFramework\Helper\Bootstrap;
+
+Bootstrap::getInstance()->reinitialize();
+
+require __DIR__ . '/../../../Magento/ConfigurableProduct/_files/configurable_attribute.php';
+
+/** @var ProductRepositoryInterface $productRepository */
+$productRepository = Bootstrap::getObjectManager()
+    ->create(ProductRepositoryInterface::class);
+
+/** @var $installer CategorySetup */
+$installer = Bootstrap::getObjectManager()->create(CategorySetup::class);
+
+/* Create simple products per each option value*/
+/** @var AttributeOptionInterface[] $options */
+$options = $attribute->getOptions();
+
+$attributeValues = [];
+$attributeSetId = $installer->getAttributeSetId('catalog_product', 'Default');
+$productsSku = [1410];
+array_shift($options); //remove the first option which is empty
+
+$option = reset($options);
+
+/** @var $childProduct Product */
+$childProduct = Bootstrap::getObjectManager()->create(Product::class);
+$productSku = array_shift($productsSku);
+$childProduct->setTypeId(Type::TYPE_SIMPLE)
+    ->setAttributeSetId($attributeSetId)
+    ->setName('Configurable Product Option' . $option->getLabel())
+    ->setSku('configurable_option_single_child')
+    ->setPrice(11)
+    ->setTestConfigurable($option->getValue())
+    ->setVisibility(Visibility::VISIBILITY_NOT_VISIBLE)
+    ->setStatus(Status::STATUS_ENABLED);
+$childProduct = $productRepository->save($childProduct);
+
+/** @var StockItemInterface $stockItem */
+$stockItem = $childProduct->getExtensionAttributes()->getStockItem();
+$stockItem->setUseConfigManageStock(1)->setIsInStock(true)->setQty(100)->setIsQtyDecimal(0);
+
+$childProduct = $productRepository->save($childProduct);
+
+$attributeValues[] = [
+    'label' => 'test',
+    'attribute_id' => $attribute->getId(),
+    'value_index' => $option->getValue(),
+];
+
+/** @var $product Product */
+$configurableProduct = Bootstrap::getObjectManager()->create(Product::class);
+
+/** @var Factory $optionsFactory */
+$optionsFactory = Bootstrap::getObjectManager()->create(Factory::class);
+
+$configurableAttributesData = [
+    [
+        'attribute_id' => $attribute->getId(),
+        'code' => $attribute->getAttributeCode(),
+        'label' => $attribute->getStoreLabel(),
+        'position' => '0',
+        'values' => $attributeValues,
+    ],
+];
+
+$configurableOptions = $optionsFactory->create($configurableAttributesData);
+
+$extensionConfigurableAttributes = $configurableProduct->getExtensionAttributes();
+$extensionConfigurableAttributes->setConfigurableProductOptions($configurableOptions);
+$extensionConfigurableAttributes->setConfigurableProductLinks([$childProduct->getId()]);
+
+$configurableProduct->setExtensionAttributes($extensionConfigurableAttributes);
+
+$configurableProduct->setTypeId(Configurable::TYPE_CODE)
+    ->setAttributeSetId($attributeSetId)
+    ->setName('Configurable Product with single child')
+    ->setSku('configurable_with_single_child')
+    ->setVisibility(Visibility::VISIBILITY_BOTH)
+    ->setStatus(Status::STATUS_ENABLED);
+$configurableProduct = $productRepository->save($configurableProduct);
+
+/** @var StockItemInterface $stockItem */
+$stockItem = $configurableProduct->getExtensionAttributes()->getStockItem();
+$stockItem->setUseConfigManageStock(1)->setIsInStock(1);
+
+$productRepository->save($configurableProduct);
diff --git a/dev/tests/integration/testsuite/Magento/CatalogSearch/_files/product_configurable_with_single_child_rollback.php b/dev/tests/integration/testsuite/Magento/CatalogSearch/_files/product_configurable_with_single_child_rollback.php
new file mode 100644
index 0000000000000000000000000000000000000000..85a72789e7fd3ae5941328fbe515ca17e64eb2b0
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/CatalogSearch/_files/product_configurable_with_single_child_rollback.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+use Magento\Catalog\Api\Data\ProductInterface;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\TestFramework\Helper\Bootstrap;
+
+$objectManager = Bootstrap::getObjectManager();
+
+/** @var \Magento\Framework\Registry $registry */
+$registry = $objectManager->get(\Magento\Framework\Registry::class);
+
+$registry->unregister('isSecureArea');
+$registry->register('isSecureArea', true);
+
+/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
+$productRepository = Bootstrap::getObjectManager()
+    ->get(\Magento\Catalog\Api\ProductRepositoryInterface::class);
+
+$productSkus = ['configurable_option_single_child', 'configurable_with_single_child'];
+/** @var SearchCriteriaBuilder $searchCriteriaBuilder */
+$searchCriteriaBuilder = Bootstrap::getObjectManager()->get(SearchCriteriaBuilder::class);
+$searchCriteriaBuilder->addFilter(ProductInterface::SKU, $productSkus, 'in');
+$result = $productRepository->getList($searchCriteriaBuilder->create());
+foreach ($result->getItems() as $product) {
+    $productRepository->delete($product);
+}
+
+require __DIR__ . '/../../../Magento/Framework/Search/_files/configurable_attribute_rollback.php';
+
+$registry->unregister('isSecureArea');
+$registry->register('isSecureArea', false);
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Filesystem/Driver/FileTest.php b/dev/tests/integration/testsuite/Magento/Framework/Filesystem/Driver/FileTest.php
index 26401c782efc4f73ba7c7b56178787e57c14a89c..b74d87fab3a84f35dcc2131523e25a812a8b06c9 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Filesystem/Driver/FileTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Filesystem/Driver/FileTest.php
@@ -7,7 +7,10 @@
  */
 namespace Magento\Framework\Filesystem\Driver;
 
-use Magento\Framework\Filesystem\DriverInterface;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Filesystem;
+use Magento\Framework\Filesystem\Directory\WriteInterface;
+use Magento\TestFramework\Helper\Bootstrap;
 
 class FileTest extends \PHPUnit\Framework\TestCase
 {
@@ -80,4 +83,44 @@ class FileTest extends \PHPUnit\Framework\TestCase
         $this->assertTrue($this->driver->createDirectory($generatedPath));
         $this->assertTrue(is_dir($generatedPath));
     }
+
+    /**
+     * Check, driver can create file with content or without one.
+     *
+     * @dataProvider createFileDataProvider
+     * @param int $result
+     * @param string $fileName
+     * @param string $fileContent
+     * @return void
+     * @throws \Magento\Framework\Exception\FileSystemException
+     */
+    public function testCreateFile(int $result, string $fileName, string $fileContent)
+    {
+        /** @var WriteInterface $directory */
+        $directory = Bootstrap::getObjectManager()->get(Filesystem::class)->getDirectoryWrite(DirectoryList::VAR_DIR);
+        $filePath = $directory->getAbsolutePath() . '/' . $fileName;
+        $this->assertSame($result, $this->driver->filePutContents($filePath, $fileContent));
+        $this->assertTrue($this->driver->deleteFile($filePath));
+    }
+
+    /**
+     * Provides test data for testCreateFile().
+     *
+     * @return array
+     */
+    public function createFileDataProvider()
+    {
+        return [
+            'file_with_content' => [
+                'result' => 11,
+                'fileName' => 'test.txt',
+                'fileContent' => 'testContent',
+            ],
+            'empty_file' => [
+                'result' => 0,
+                'filePath' => 'test.txt',
+                'fileContent' => '',
+            ]
+        ];
+    }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Wishlist/Controller/UpdateTest.php b/dev/tests/integration/testsuite/Magento/Wishlist/Controller/UpdateTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..48f738763b67215fcaf3f997c9ab0f357b089f07
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Wishlist/Controller/UpdateTest.php
@@ -0,0 +1,150 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Wishlist\Controller;
+
+use Magento\Customer\Api\AccountManagementInterface;
+use Magento\Customer\Helper\View;
+use Magento\Customer\Model\Customer;
+use Magento\Customer\Model\Session;
+use Magento\Framework\Data\Form\FormKey;
+use Magento\Framework\Message\ManagerInterface;
+use Magento\Wishlist\Model\Item;
+use Magento\Wishlist\Model\Wishlist;
+use Psr\Log\LoggerInterface;
+use Zend\Http\Request;
+
+/**
+ * Tests updating wishlist item comment.
+ *
+ * @magentoAppIsolation enabled
+ * @magentoDbIsolation enabled
+ * @magentoAppArea frontend
+ */
+class UpdateTest extends \Magento\TestFramework\TestCase\AbstractController
+{
+    /**
+     * @var Session
+     */
+    private $customerSession;
+
+    /**
+     * @var ManagerInterface
+     */
+    private $messages;
+
+    /**
+     * @var View
+     */
+    private $customerViewHelper;
+
+    /**
+     * Description field value for wishlist item.
+     *
+     * @var string
+     */
+    private $description = 'some description';
+
+    /**
+     * Tests updating wishlist item comment.
+     *
+     * @magentoDataFixture Magento/Wishlist/_files/wishlist.php
+     * @dataProvider commentDataProvider
+     * @param string|null $postDescription
+     * @param string $expectedResult
+     * @param boolean $presetComment
+     */
+    public function testUpdateComment($postDescription, $expectedResult, $presetComment)
+    {
+        /** @var Customer $customer */
+        $customer = $this->customerSession->getCustomer();
+        /** @var Wishlist $wishlist */
+        $wishlist = $this->_objectManager
+            ->get(Wishlist::class)
+            ->loadByCustomerId($customer->getId(), true);
+        /** @var Item $item */
+        $item = $wishlist->getItemCollection()->getFirstItem();
+
+        if ($presetComment) {
+            $item->setDescription($this->description);
+            $item->save();
+        }
+
+        $formKey = $this->_objectManager->get(FormKey::class);
+        $this->getRequest()->setPostValue(
+            [
+                'description' => isset($postDescription) ? [$item->getId() => $postDescription] : [],
+                'qty' => isset($postDescription) ? [$item->getId() => 1] : [],
+                'do' => '',
+                'form_key' => $formKey->getFormKey()
+            ]
+        )->setMethod(Request::METHOD_POST);
+        $this->dispatch('wishlist/index/update/wishlist_id/' . $wishlist->getId());
+
+        // Reload item
+        $item = $this->_objectManager->get(Item::class)->load($item->getId());
+        self::assertEquals(
+            $expectedResult,
+            $item->getDescription()
+        );
+    }
+
+    /**
+     * Data provider for testUpdateComment.
+     *
+     * @return array
+     */
+    public function commentDataProvider()
+    {
+
+        return [
+            'test adding comment' => [
+                'postDescription' => $this->description,
+                'expectedResult' => $this->description,
+                'presetComment' => false
+            ],
+            'test removing comment' => [
+                'postDescription' => '',
+                'expectedResult' => '',
+                'presetComment' => true
+            ],
+            'test not changing comment' => [
+                'postDescription' => null,
+                'expectedResult' => $this->description,
+                'presetComment' => true
+            ],
+        ];
+    }
+
+    protected function setUp()
+    {
+        parent::setUp();
+        $logger = $this->createMock(LoggerInterface::class);
+        $this->customerSession = $this->_objectManager->get(
+            Session::class,
+            [$logger]
+        );
+        /** @var AccountManagementInterface $service */
+        $service = $this->_objectManager->create(
+            AccountManagementInterface::class
+        );
+        $customer = $service->authenticate('customer@example.com', 'password');
+        $this->customerSession->setCustomerDataAsLoggedIn($customer);
+
+        $this->customerViewHelper = $this->_objectManager->create(View::class);
+
+        $this->messages = $this->_objectManager->get(
+            ManagerInterface::class
+        );
+    }
+
+    protected function tearDown()
+    {
+        $this->customerSession->logout();
+        $this->customerSession = null;
+        parent::tearDown();
+    }
+}
diff --git a/lib/internal/Magento/Framework/Filesystem/Driver/File.php b/lib/internal/Magento/Framework/Filesystem/Driver/File.php
index 519ca21deadb2ef5e6b0a338c84d7798170bb63e..6f9c24344f6776cba348a872ea550c79f5d78651 100644
--- a/lib/internal/Magento/Framework/Filesystem/Driver/File.php
+++ b/lib/internal/Magento/Framework/Filesystem/Driver/File.php
@@ -528,7 +528,7 @@ class File implements DriverInterface
     public function filePutContents($path, $content, $mode = null)
     {
         $result = @file_put_contents($this->getScheme() . $path, $content, $mode);
-        if (!$result) {
+        if ($result === false) {
             throw new FileSystemException(
                 new \Magento\Framework\Phrase(
                     'The specified "%1" file could not be written %2',
diff --git a/lib/internal/Magento/Framework/Indexer/CacheContext.php b/lib/internal/Magento/Framework/Indexer/CacheContext.php
index df0bed1dc1dcbb4bd78a824311e1b03f1ca93d7f..4a6964477ebd5cdd5121e17a0e3edf4d2b4656b5 100644
--- a/lib/internal/Magento/Framework/Indexer/CacheContext.php
+++ b/lib/internal/Magento/Framework/Indexer/CacheContext.php
@@ -29,15 +29,14 @@ class CacheContext implements \Magento\Framework\DataObject\IdentityInterface
      */
     public function registerEntities($cacheTag, $ids)
     {
-        $this->entities[$cacheTag] =
-            array_merge($this->getRegisteredEntity($cacheTag), $ids);
+        $this->entities[$cacheTag] = array_merge($this->getRegisteredEntity($cacheTag), $ids);
         return $this;
     }
 
     /**
      * Register entity tags
      *
-     * @param string $cacheTag
+     * @param array $cacheTags
      * @return $this
      */
     public function registerTags($cacheTags)
diff --git a/lib/internal/Magento/Framework/View/Design/Theme/ThemeList.php b/lib/internal/Magento/Framework/View/Design/Theme/ThemeList.php
index 826811b55b4bf2f4f85bb3f08e9bf98a4b832c9f..000fba24f0822468a1260b603a055f42bfb74c35 100644
--- a/lib/internal/Magento/Framework/View/Design/Theme/ThemeList.php
+++ b/lib/internal/Magento/Framework/View/Design/Theme/ThemeList.php
@@ -234,7 +234,7 @@ class ThemeList extends \Magento\Framework\Data\Collection implements ListInterf
         $media = $themeConfig->getMedia();
 
         $parentPathPieces = $themeConfig->getParentTheme();
-        if (count($parentPathPieces) == 1) {
+        if (is_array($parentPathPieces) && count($parentPathPieces) == 1) {
             $pathPieces = $pathData['theme_path_pieces'];
             array_pop($pathPieces);
             $parentPathPieces = array_merge($pathPieces, $parentPathPieces);