From 73107df7a3c3e079a73a2f983943edc6714cf9f5 Mon Sep 17 00:00:00 2001
From: Ji Lu <jilu1@magento.com>
Date: Tue, 28 Nov 2017 18:23:43 +0200
Subject: [PATCH] MQE-513: added attachment (screenshots/logs) support in
 Allure reporting.

---
 dev/tests/functional/composer.json            |  9 ++++--
 dev/tests/functional/etc/events.xml           | 17 +++++++++++
 .../System/Observer/AllureWebapiResponse.php  | 30 +++++++++++++++++++
 3 files changed, 53 insertions(+), 3 deletions(-)
 create mode 100644 dev/tests/functional/lib/Magento/Mtf/System/Observer/AllureWebapiResponse.php

diff --git a/dev/tests/functional/composer.json b/dev/tests/functional/composer.json
index f58a38bd01d..08ac79f0ab6 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 5be0f8e7d4e..e8f0f63334f 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 00000000000..bda514ad9fa
--- /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'
+        );
+    }
+}
-- 
GitLab