diff --git a/Automation/src/test/java/Constants.java b/Automation/src/test/java/Constants.java
index eb6c8404b0ab402799ef0c44e580b4c051178a53..9241623fffafecc3a4ef334d703ba8bfa53853d1 100644
--- a/Automation/src/test/java/Constants.java
+++ b/Automation/src/test/java/Constants.java
@@ -2,6 +2,8 @@ import org.apache.commons.lang3.RandomStringUtils;
 
 public class Constants {
     public static final String URL = "http://qa.review.hindawi.com";
+    public static final String jurnalID = "4b0eb00f-37cb-4fad-bd0d-7ba8ee600123";
+    public static final String customManuscriptID = RandomStringUtils.randomNumeric(7);
     public static final String email = "adrian.onofrei+";
     public static final String firstname = "Test Author";
     public static final String lastname = "Test Author";
@@ -16,7 +18,7 @@ public class Constants {
     public static final String emailHE = "adrian.onofrei+HE";
     public static final String affiliationHE = "TS HE affiliation";
     public static final String manusName = RandomStringUtils.randomAlphabetic(16);
-    public static final String manusAbstract = RandomStringUtils.randomAlphabetic(16);
+    public static final String manusAbstract = RandomStringUtils.randomAlphanumeric(50);
     public static final String fileManuscript = "/Users/adionofrei/Documents/Manuscript.pdf";
     public static final String fileSupplementary = "/Users/adionofrei/Documents/Manuscript.pdf";
     public static final String fileCoverLetter = "/Users/adionofrei/Documents/Manuscript.pdf";
diff --git a/Automation/src/test/java/ManuscriptFlow.java b/Automation/src/test/java/ManuscriptFlow.java
index db5c49a8195c8c125f5c3e817dabf4eef76a07bb..6e211a795c50709c96394d0be1e990f0b69f1bc0 100644
--- a/Automation/src/test/java/ManuscriptFlow.java
+++ b/Automation/src/test/java/ManuscriptFlow.java
@@ -1,26 +1,22 @@
-import io.restassured.RestAssured;
-import io.restassured.path.json.JsonPath;
-import io.restassured.response.Response;
-import io.restassured.specification.RequestSpecification;
-import org.json.simple.JSONObject;
+import junit.runner.BaseTestRunner;
 import org.junit.*;
 import org.openqa.selenium.*;
-import org.openqa.selenium.interactions.Actions;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.Select;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.net.URL;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 public class ManuscriptFlow {
     private static WebDriver driver = null;
     private static WebDriverWait wait = null;
     public String URL = Constants.URL;
+    public static String manuscriptId;
 
     @BeforeClass
     public static void setUpClass() throws Exception {
@@ -35,7 +31,7 @@ public class ManuscriptFlow {
         //driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.firefox());
         driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome());
         //driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
-        wait = new WebDriverWait(driver, 10);
+        wait = new WebDriverWait(driver, 20);
         String window = driver.getWindowHandle();
         ((JavascriptExecutor) driver).executeScript("alert('Test')");
         driver.switchTo().alert().accept();
@@ -44,11 +40,11 @@ public class ManuscriptFlow {
 
     @After
     public void tearDown() throws Exception {
-        //driver.quit();
+        driver.quit();
     }
 
     @Test
-    public void manuscriptFlow() throws Exception {
+    public void createNewManuscript() throws Exception {
         /* Add constants.random after testing this function separably */
         Utils.validLogin( driver,  wait,  URL, Constants.email + /*Constants.randomStr*/ "auth1" + "@thinslices.com", Constants.password);
 
@@ -100,12 +96,24 @@ public class ManuscriptFlow {
         Utils.scrollToElement(driver, element);
         element.click();
 
+        try {
+            wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[name='conflicts.hasDataAvailability'][value='yes']")));
+        } catch (NoSuchElementException e) {
+
+        }
+
         driver.findElement(By.cssSelector("[name='conflicts.hasDataAvailability'][value='yes']")).click();
         WebElement element1 = driver.findElement(By.cssSelector("[name='conflicts.hasFunding'][value='yes']"));
 
         Utils.scrollToElement(driver, element1);
         element1.click();
 
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[data-test='submission-next']")));
+        } catch (NoSuchElementException e) {
+
+        }
+
         WebElement element2 = driver.findElement(By.cssSelector("button[data-test='submission-next']"));
 
         Utils.scrollToElement(driver, element2);
@@ -127,20 +135,38 @@ public class ManuscriptFlow {
 
         }
 
+        String mURL = driver.getCurrentUrl();
+        manuscriptId = Utils.mID(mURL);
+
         driver.findElement(By.cssSelector(/*"[data-test='upload-manuscripts']*/"input[type=\"file\"]")).sendKeys(Constants.fileManuscript);
 //        driver.findElement(By.cssSelector("[data-test='upload-supplementary'] input[type=\"file\"]")).sendKeys(Constants.fileSupplementary);
 //        driver.findElement(By.cssSelector("[data-test='upload-coverLetter'] input[type=\"file\"]")).sendKeys(Constants.fileCoverLetter);
 
+
         try {
             wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("button[data-test='submission-next']")));
         } catch (NoSuchElementException e) {
 
         }
 
+        // Confirmation modal
         WebElement element3 = driver.findElement(By.cssSelector("button[data-test='submission-next']"));
+
+        try {
+            wait.until(ExpectedConditions.visibilityOf(element3));
+        } catch (NoSuchElementException e) {
+
+        }
+
         Utils.scrollToElement(driver, element3);
         element3.click();
 
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[contains(.,'AGREE & SUBMIT')]")));
+        } catch (NoSuchElementException e) {
+
+        }
+
         driver.findElement(By.xpath("//button[contains(.,'AGREE & SUBMIT')]")).click();
 
         try {
@@ -151,5 +177,74 @@ public class ManuscriptFlow {
 
         driver.findElement(By.xpath("//button[contains(.,'GO TO DASHBOARD')]")).click();
 
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[data-test-id='fragment-" + manuscriptId + "']")));
+        } catch (NoSuchElementException e) {
+
+        }
+
+        // Check if manuscript is displayed on dashboard
+        assertNotNull("fragment-" + manuscriptId);
+
+        driver.findElement(By.cssSelector("[data-test-id='fragment-" + manuscriptId + "']")).click();
+
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[data-test-id='fragment-status']")));
+        } catch (NoSuchElementException e) {
+
+        }
+
+        // Check if manuscript status is submitted for author
+        assertEquals("Submitted", driver.findElement(By.cssSelector("[data-test-id='fragment-status']")).getText());
+
+    }
+
+    @Test
+    public void eqsApproveManuscript() throws Exception{
+        String manuscriptDT = "[data-test-id='fragment-" + manuscriptId + "']";
+        Utils.validLogin(driver, wait, URL, Constants.adminEmail, Constants.password);
+
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[data-test-id=\"row\"] button[type=\"button\"]")));
+        } catch (NoSuchElementException e) {
+
+        }
+
+        driver.findElement(By.cssSelector("[data-test-id=\"row\"] button[type=\"button\"]")).click();
+        driver.findElement(By.cssSelector("[data-test-id=\"row\"] div[role=\"option\"]:nth-child(1)")).click();
+
+        driver.findElement(By.cssSelector("[data-test-id=\"item\"]:nth-of-type(2)")).click();
+        driver.findElement(By.cssSelector("[data-test-id=\"row\"] div[role=\"option\"]:nth-child(1)")).click();
+
+        driver.findElement(By.cssSelector(manuscriptDT)).click();
+
+        try {
+            wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[data-test-id='button-qa-manuscript-" + manuscriptId + "']")));
+        } catch (NoSuchElementException e) {
+
+        }
+
+        assertEquals("QA", driver.findElement(By.cssSelector("[data-test-id='fragment-status']")).getText());
+
+        driver.findElement(By.cssSelector("[data-test-id='button-qa-manuscript-" + manuscriptId + "']")).click();
+
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[contains(.,'YES')]")));
+        } catch (NoSuchElementException e) {
+
+        }
+
+        assertTrue(driver.getCurrentUrl().contains("eqs-decision"));
+
+        driver.findElement(By.xpath("//button[contains(.,'YES')]")).click();
+
+        try {
+            wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[name='customId'")));
+        } catch (NoSuchElementException e) {
+
+        }
+
+        driver.findElement(By.cssSelector("input[name='customId'")).sendKeys(Constants.customManuscriptID);
+        driver.findElement(By.xpath("//button[contains(.,'OK')]")).click();
     }
 }
diff --git a/Automation/src/test/java/Utils.java b/Automation/src/test/java/Utils.java
index 7d10e9b50dd5f7bb91ba721c06512cf1e28ecec9..1a7c06793c5566002c48abbc8fcd2f611134c0f3 100644
--- a/Automation/src/test/java/Utils.java
+++ b/Automation/src/test/java/Utils.java
@@ -4,6 +4,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 import sun.misc.Unsafe;
 
 import java.lang.reflect.Field;
+import java.util.regex.*;
 
 
 public class Utils {
@@ -92,5 +93,29 @@ public class Utils {
                     .executeScript("arguments[0].scrollIntoView(true);", el);
         }
     }
+
+    public static String mID(String url)
+    {
+        String txt=url;
+
+        String fragmentID = txt.split("/versions/")[1].split("/")[0];
+
+//        String re1=".*?";	// Non-greedy match on filler
+//        String re2="[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}";	// Uninteresting: guid
+//        String re3=".*?";	// Non-greedy match on filler
+//        String re4="([A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12})";	// SQL GUID 1
+//
+//        Pattern p = Pattern.compile(re1+re2+re3+re4,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
+//        Matcher m = p.matcher(txt);
+//        if (m.find())
+//        {
+//            String guid1=m.group(1);
+//            System.out.print(guid1+"\n");
+//
+//        }
+//        String guid=m.group(1);
+
+        return fragmentID;
+    }
 }