diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/api/ComponentBaseTest.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/api/ComponentBaseTest.java
index 71c8db0..985d161 100644
--- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/api/ComponentBaseTest.java
+++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/api/ComponentBaseTest.java
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -68,7 +68,7 @@
 
     protected static Logger logger = LogManager.getLogger(ComponentBaseTest.class);
 
-    protected static final String REPORT_FOLDER = "target" + File.separator + "ExtentReport" + File.separator;
+    protected static final String REPORT_FOLDER = "target" + File.separator + "ExtentReport" + File.separator + "API" + File.separator;
     private static final String REPORT_FILE_NAME = "SDC_CI_Extent_Report.html";
     public static Config config;
     protected static ITestContext myContext;
@@ -108,7 +108,7 @@
     @BeforeMethod(alwaysRun = true)
     public void setupBeforeTest(java.lang.reflect.Method method, ITestContext context) throws Exception {
         if (!"onboardVNFShotFlow".equals(method.getName()) &&
-            !"onboardPNFFlow".equals(method.getName()) ) {
+                !"onboardPNFFlow".equals(method.getName())) {
             logger.info("ExtentReport instance started from BeforeMethod...");
             ExtentTestManager.startTest(method.getName());
             ExtentTestManager.assignCategory(this.getClass());
@@ -186,7 +186,7 @@
 
 
         List<String> genericCollection = new ArrayList<>();
-        if(resourcesArrayList.get(0) != null) {
+        if (resourcesArrayList.get(0) != null) {
             ComponentTypeEnum componentTypeEnum = resourcesArrayList.get(0).getComponentType();
             resourcesArrayList.stream().filter(Objects::nonNull).
                     filter(s -> s.getName().toLowerCase().startsWith("ci") && !s.getName().toLowerCase().equals("cindervolume")).
diff --git a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java
index 5cb55fd..19533e9 100644
--- a/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java
+++ b/integration-tests/src/test/java/org/onap/sdc/backend/ci/tests/utils/general/FileHandling.java
@@ -312,7 +312,7 @@
 	public static void createDirectory(String directoryPath) {
 		File directory = new File(String.valueOf(directoryPath));
 	    if (! directory.exists()){
-	        directory.mkdir();
+	        directory.mkdirs();
 	    }
 	}
 
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/setup/SetupCDTest.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/setup/SetupCDTest.java
index 9f5a7cc..18b5a71 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/setup/SetupCDTest.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/execute/setup/SetupCDTest.java
@@ -24,11 +24,13 @@
 import ch.qos.logback.classic.LoggerContext;
 import com.aventstack.extentreports.ExtentTest;
 import com.aventstack.extentreports.Status;
+
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.UUID;
+
 import net.lightbody.bmp.core.har.Har;
 import org.json.simple.JSONObject;
 import org.onap.sdc.backend.ci.tests.config.UserCredentialsFromFile;
@@ -75,7 +77,7 @@
     private static final String CREDENTIALS_FILE = "credentials.yaml";
 
     private static final String REPORT_FILE_NAME = "SDC_UI_Extent_Report.html";
-    private static final String REPORT_FOLDER = "target" + File.separator + "ExtentReport" + File.separator;
+    private static final String REPORT_FOLDER = "target" + File.separator + "ExtentReport" + File.separator + "UI" + File.separator;
     private static final String SCREENSHOT_FOLDER = REPORT_FOLDER + "screenshots" + File.separator;
     private static final String HAR_FILES_FOLDER_NAME = "har_files";
     private static final String HAR_FILES_FOLDER = REPORT_FOLDER + HAR_FILES_FOLDER_NAME + File.separator;
@@ -392,7 +394,7 @@
     private void loginWithUser(final UserRoleEnum role) {
         try {
             final String msg = String
-                .format("Login as user '%s', role '%s'", role.getUserId(), role.getUserRole());
+                    .format("Login as user '%s', role '%s'", role.getUserId(), role.getUserRole());
             getExtendTest().log(Status.INFO, msg);
             LOGGER.info(msg);
             loginToSystem(role);
@@ -423,7 +425,7 @@
         LOGGER.info(String.format("Setup before test for role '%s'", role.name()));
         if (!getWindowTest().getPreviousRole().equalsIgnoreCase(role.name())) {
             LOGGER.info(String.format("Logging in with new role '%s'. Previous role was: '%s'.", role.name(),
-                getWindowTest().getPreviousRole()));
+                    getWindowTest().getPreviousRole()));
             navigateAndLogin(role);
         }
     }
diff --git a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java
index bb058e4..b7f199d 100644
--- a/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java
+++ b/integration-tests/src/test/java/org/onap/sdc/frontend/ci/tests/utilities/FileHandling.java
@@ -304,7 +304,7 @@
     public static void createDirectory(String directoryPath) {
         File directory = new File(String.valueOf(directoryPath));
         if (!directory.exists()) {
-            directory.mkdir();
+            directory.mkdirs();
         }
     }
 
diff --git a/integration-tests/src/test/resources/ci/conf/sdc-conf.yaml b/integration-tests/src/test/resources/ci/conf/sdc-conf.yaml
index cea230e..5303e3b 100644
--- a/integration-tests/src/test/resources/ci/conf/sdc-conf.yaml
+++ b/integration-tests/src/test/resources/ci/conf/sdc-conf.yaml
@@ -5,7 +5,7 @@
 remoteTesting: true
 useBrowserMobProxy: false
 captureTraffic: false
-downloadAutomationFolder: target/automationDownloadDir
+downloadAutomationFolder: /tmp/sdc-integration-tests/downloadAutomation
 uiSimulator: true
 
 #### Local Front end testing
diff --git a/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml b/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml
index a9d5661..47dc9f6 100644
--- a/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml
+++ b/integration-tests/src/test/resources/ci/testSuites/frontend/onapUiSanity.xml
@@ -1,30 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="uitests" configfailurepolicy="continue" parallel="methods" thread-count="1"
-  data-provider-thread-count="1">
+       data-provider-thread-count="1">
 
-  <parameter name="makeDistribution" value="false"/>
+    <parameter name="makeDistribution" value="false"/>
 
-  <test name="uiSanity">
-    <classes>
-      <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.Vf">
-        <methods>
-          <include name="changeInstanceNameInVfTest"/>
-        </methods>
-      </class>
-      <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.Service">
-        <methods>
-          <include name="updateService"/>
-        </methods>
-      </class>
-      <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.OnboardingFlowsUi">
-        <methods>
-          <include name="onapOnboardVNFflow"/>
-          <include name="onapOnboardVSPValidationsSanityFlow"/>
-          <include name="onboardPNFSoftwareInformationFlow"/>
-        </methods>
-      </class>
-      <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.GAB"/>
-    </classes>
-  </test>
+    <test name="uiSanity">
+        <classes>
+            <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.Vf">
+                <methods>
+                    <include name="changeInstanceNameInVfTest"/>
+                </methods>
+            </class>
+            <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.Service">
+                <methods>
+                    <include name="updateService"/>
+                </methods>
+            </class>
+            <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.OnboardingFlowsUi">
+                <methods>
+                    <include name="onapOnboardVNFflow"/>
+                    <include name="onapOnboardVSPValidationsSanityFlow"/>
+                    <include name="onboardPNFSoftwareInformationFlow"/>
+                </methods>
+            </class>
+            <class name="org.onap.sdc.frontend.ci.tests.execute.sanity.GAB"/>
+        </classes>
+    </test>
 </suite>
