From 3835efd9c0f10fd75aee91a8d9afdb17a2548e88 Mon Sep 17 00:00:00 2001 From: Adi Onofrei <adrian.onofrei@thinslices.com> Date: Wed, 19 Sep 2018 17:34:16 +0300 Subject: [PATCH] test(Automation): Add test for approve EQS manuscript --- Automation/src/test/java/Constants.java | 4 +- Automation/src/test/java/ManuscriptFlow.java | 115 +++++++++++++++++-- Automation/src/test/java/Utils.java | 25 ++++ 3 files changed, 133 insertions(+), 11 deletions(-) diff --git a/Automation/src/test/java/Constants.java b/Automation/src/test/java/Constants.java index eb6c8404b..9241623ff 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 db5c49a81..6e211a795 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 7d10e9b50..1a7c06793 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; + } } -- GitLab