diff --git a/dev/tests/functional/composer.json b/dev/tests/functional/composer.json
index f58a38bd01de370bf36f863920407c5665e0e812..08ac79f0ab6003357be659637f25ef51e009367c 100644
--- a/dev/tests/functional/composer.json
+++ b/dev/tests/functional/composer.json
@@ -1,10 +1,13 @@
 {
+    "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",
         "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..e8f0f63334fd3129cfc7fba3d7524e94863b9ccd 100644
--- a/dev/tests/functional/etc/events.xml
+++ b/dev/tests/functional/etc/events.xml
@@ -10,6 +10,9 @@
         <observer class="Magento\Mtf\System\Observer\WebapiResponse">
             <tag name="webapi_failed" />
         </observer>
+        <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">
@@ -32,15 +35,29 @@
             <tag name="exception"/>
             <tag name="failure"/>
         </observer>
+        <observer class="Magento\Mtf\System\Observer\AllureSourceCode">
+            <tag name="exception"/>
+            <tag name="failure"/>
+        </observer>
         <observer class="Magento\Mtf\System\Observer\Screenshot">
             <tag name="exception"/>
             <tag name="failure"/>
         </observer>
+        <observer class="Magento\Mtf\System\Observer\AllureScreenshot">
+            <tag name="exception"/>
+            <tag name="failure"/>
+        </observer>
         <observer class="Magento\Mtf\System\Observer\CurlResponse">
             <tag name="curl_failed"/>
         </observer>
+        <observer class="Magento\Mtf\System\Observer\AllureCurlResponse">
+            <tag name="curl_failed"/>
+        </observer>
         <observer class="Magento\Mtf\System\Observer\WebapiResponse">
             <tag name="webapi_failed" />
         </observer>
+        <observer class="Magento\Mtf\System\Observer\AllureWebapiResponse">
+            <tag name="webapi_failed" />
+        </observer>
     </preset>
 </config>
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'
+        );
+    }
+}