From d582317a05c4d938241a63abae6036892d5ebc89 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Wed, 16 Dec 2015 22:49:32 +0000 Subject: [PATCH 01/17] Initial WebDriver tests (work in progress) --- selenium/pom.xml | 41 + .../vivoweb/vivo/selenium/DriverFactory.java | 37 + .../vivoweb/vivo/selenium/SeleniumUtils.java | 27 + .../org/vivoweb/vivo/selenium/VIVOSuite.java | 40 + .../selenium/suites/AddNonPersonThings.java | 29 + .../selenium/tests/AbstractSeleniumTest.java | 109 ++ .../selenium/tests/CreateOrganization.java | 1680 +++++++++++++++++ .../selenium/tests/RebuildSearchIndex.java | 39 + selenium/test-user-model.owl | 58 + 9 files changed, 2060 insertions(+) create mode 100644 selenium/pom.xml create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/SeleniumUtils.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOSuite.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java create mode 100644 selenium/test-user-model.owl diff --git a/selenium/pom.xml b/selenium/pom.xml new file mode 100644 index 00000000..2e5e9ae1 --- /dev/null +++ b/selenium/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + org.vivoweb + vivo-selenium + 1.9.0-SNAPSHOT + pom + + VIVO Selenium Tests + + + + + maven-install-plugin + 2.5.2 + + true + + + + + + + + org.seleniumhq.selenium + selenium-java + 2.48.2 + test + + + junit + junit + 4.12 + test + + + diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java new file mode 100644 index 00000000..1e24e282 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java @@ -0,0 +1,37 @@ +package org.vivoweb.vivo.selenium; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +public final class DriverFactory { + private static WebDriver driver = null; + private static Object closeToken = null; + + public static WebDriver getDriver() { + if (driver == null) { + driver = new FirefoxDriver(); + } + + return driver; + } + + public static void close() { + if (closeToken == null && driver != null) { + driver.quit(); + driver = null; + } + } + + public static void close(Object token) { + if (closeToken == token || (closeToken != null && closeToken.equals(token))) { + if (driver != null) { + driver.quit(); + driver = null; + } + } + } + + public static void setCloseToken(Object token) { + closeToken = token; + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/SeleniumUtils.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/SeleniumUtils.java new file mode 100644 index 00000000..e1ff5474 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/SeleniumUtils.java @@ -0,0 +1,27 @@ +package org.vivoweb.vivo.selenium; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +public final class SeleniumUtils { + private static String baseUrl = "http://localhost:8080/vivo"; + + public static void setBaseUrl(String baseUrl) { + SeleniumUtils.baseUrl = baseUrl; + } + + public static String makeUrl(String urlPart) { + if (urlPart.startsWith("/")) { + return baseUrl + urlPart; + } else { + return baseUrl + "/" + urlPart; + } + } + + public static void navigate(WebDriver driver, String urlPart) { + driver.navigate().to(makeUrl(urlPart)); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOSuite.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOSuite.java new file mode 100644 index 00000000..c16cd3f9 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOSuite.java @@ -0,0 +1,40 @@ +package org.vivoweb.vivo.selenium; + +import org.junit.runner.Runner; +import org.junit.runner.notification.RunNotifier; +import org.junit.runners.Suite; +import org.junit.runners.model.InitializationError; +import org.junit.runners.model.RunnerBuilder; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +import java.util.List; + +public class VIVOSuite extends Suite { + public VIVOSuite(Class klass, RunnerBuilder builder) throws InitializationError { + super(klass, builder); + } + + public VIVOSuite(RunnerBuilder builder, Class[] classes) throws InitializationError { + super(builder, classes); + } + + protected VIVOSuite(Class klass, Class[] suiteClasses) throws InitializationError { + super(klass, suiteClasses); + } + + protected VIVOSuite(RunnerBuilder builder, Class klass, Class[] suiteClasses) throws InitializationError { + super(builder, klass, suiteClasses); + } + + protected VIVOSuite(Class klass, List runners) throws InitializationError { + super(klass, runners); + } + + @Override + protected void runChild(Runner runner, RunNotifier notifier) { + // Set Driver factory, can run multiple times + super.runChild(runner, notifier); + } + +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java new file mode 100644 index 00000000..114f3386 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -0,0 +1,29 @@ +package org.vivoweb.vivo.selenium.suites; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Suite.SuiteClasses; +import org.vivoweb.vivo.selenium.DriverFactory; +import org.vivoweb.vivo.selenium.VIVOSuite; +import org.vivoweb.vivo.selenium.tests.CreateOrganization; +import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; + +@RunWith(VIVOSuite.class) +@SuiteClasses( + { + RebuildSearchIndex.class, + CreateOrganization.class + } +) +public class AddNonPersonThings { + @BeforeClass + public static void setup() { + DriverFactory.setCloseToken(AddNonPersonThings.class); + } + + @AfterClass + public static void shutdown() { + DriverFactory.close(AddNonPersonThings.class); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java new file mode 100644 index 00000000..2b803c5f --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java @@ -0,0 +1,109 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Select; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.vivoweb.vivo.selenium.DriverFactory; +import org.vivoweb.vivo.selenium.SeleniumUtils; + +public class AbstractSeleniumTest { + protected WebDriver driver; + + protected void assertTitle(String title) { + Assert.assertEquals(title, driver.getTitle()); + } + + protected void clickAndWait(By by) { + driver.findElement(by).click(); + } + + protected void deleteAllVisibleCookies() { + driver.manage().deleteAllCookies(); + } + + protected void logIn(String email, String password) { + clickAndWait(By.linkText("Log in")); // clickAndWait,link=Log in + assertTitle("Log in to VIVO"); // aseertTitle,Log in to VIVO + + type(By.id("loginName"), email); // type,id=loginName,testAdmin@cornell.edu + type(By.id("loginPassword"), password); // type,id=loginPassword,Password + + clickAndWait(By.name("loginForm")); // clickAndWait,name=loginForm + assertTitle("VIVO"); // assertTitle,VIVO + } + + protected void logOut() { + Actions actions = new Actions(driver); + actions.moveToElement( driver.findElement(By.id("user-menu")) ).perform(); + driver.findElement(By.linkText("Log out")).click(); + } + + protected void open(String urlPart) { + SeleniumUtils.navigate(driver, urlPart); + } + + protected void selectByLabel(By by, String label) { + Select select = new Select(driver.findElement(by)); + select.selectByVisibleText(label); + + } + + protected void type(By by, String text) { + driver.findElement(by).sendKeys(text); + } + + protected void typeTinyMCE(String text) { +// tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.') + + driver.switchTo().frame("literal_ifr"); + WebElement element = driver.findElement(By.cssSelector("body")); + element.click(); + element.sendKeys(text); + driver.switchTo().defaultContent(); + } + + protected void verifyTextPresent(String text) { + Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); + } + + protected boolean waitForElementPresent(By by) { + return waitForElementPresent(by, 30); + } + + protected boolean waitForElementPresent(By by, int timeout) { + WebDriverWait wait = new WebDriverWait(driver, timeout); + return wait.until(ExpectedConditions.presenceOfElementLocated(by)) != null; + } + + protected boolean waitForTextPresent(String text) { + return waitForTextPresent(text, 30); + } + + protected boolean waitForTextPresent(String text, int timeout) { + WebDriverWait wait = new WebDriverWait(driver, timeout); + return wait.until(ExpectedConditions.presenceOfElementLocated(xpathForTextPresent(text))) != null; + } + + protected By xpathForTextPresent(String text) { + return By.xpath("//*[text()[contains(.,'" + text + "')]]"); + } + + @Before + public void setup() { + driver = DriverFactory.getDriver(); + } + + @After + public void cleanup() { + DriverFactory.close(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java new file mode 100644 index 00000000..96eac167 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java @@ -0,0 +1,1680 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebElement; + +public class CreateOrganization extends AbstractSeleniumTest { + @Test + public void createOrganization() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + logIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "College (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + verifyTextPresent("Create a new College"); + verifyTextPresent("Name"); + + clickAndWait(By.linkText("Cancel")); + + assertTitle("VIVO Site Administration"); + + selectByLabel(By.id("VClassURI"), "College (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + verifyTextPresent("Create a new College"); + verifyTextPresent("Name"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Primate College of America"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//h2[@id='overview']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("The Primate College of America is a privately-funded college for the study of primates."); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-offers > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "B.S. Bachelor of Science (Academic Degree)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[12]")); + clickAndWait(By.cssSelector("a.add-hasPredecessorOrganization > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("typeOfNew"), "College (vivo)"); + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Primate College of New York"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.cssSelector("a.add-assigns > img.add-individual")); + + assertTitle("Edit"); + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Primate Habitat Research Grant"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.cssSelector("a.add-sponsors > img.add-individual")); + + assertTitle("Edit"); + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Primate Student of the Year"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-relatedBy > img.add-individual")); + + assertTitle("Edit"); + type(By.id("award"), "Best Primate College"); + clickAndWait(By.xpath("//input[@value='Create Entry']")); + + assertTitle("Primate College of America"); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[14]")); + + clickAndWait(By.cssSelector("a.add-hasEquipment > img.add-individual")); + + assertTitle("Edit"); + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Portable Primate Habitat"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.cssSelector("a.add-subcontractsGrant > img.add-individual")); + + assertTitle("Edit"); + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Primate Survival Planning Grant"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[4]")); + clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); + + assertTitle("Edit"); + selectByLabel(By.id("typeOfNew"), "Laboratory (vivo)"); + + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Primate Research Laboratory"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); + + assertTitle("Edit"); + selectByLabel(By.id("typeOfNew"), "Library (vivo)"); + + clickAndWait(By.id("offerCreate")); + + assertTitle("Edit"); + type(By.id("label"), "Primate History Library"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("#relatedBy-Position > a.add-relatedBy > img.add-individual")); + + assertTitle("Edit"); + type(By.id("positionTitle"), "Dr."); + + selectByLabel(By.id("positionType"), "Faculty Administrative Position"); + + type(By.id("person"), "Person"); + type(By.id("firstName"), "Polly"); + type(By.id("startField-year"), "1999"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-RO_0000053 > img.add-individual")); + + assertTitle("Edit"); + type(By.id("typeSelector"), "Company"); + type(By.id("activity"), "Primates-r-us"); + type(By.id("roleLabel"), "Founder"); + type(By.id("startField-year"), "2010"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-affiliatedOrganization > img.add-individual")); + + assertTitle("Edit"); + selectByLabel(By.id("objectVar"), "Primates-r-us (Company)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("(//img[@alt='add'])[13]")); + + assertTitle("Edit"); + + selectByLabel(By.id("typeSelector"), "Consortium"); + type(By.id("activity"), "Primate Colleges of the World"); + type(By.id("roleLabel"), "Member"); + type(By.id("startField-year"), "2009"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-hasCollaborator > img.add-individual")); + + assertTitle("Edit"); + + type(By.id("object"), "Primate His"); +// WebElement element; +// element.sendKeys(Keys.ARROW_DOWN); +// element.click(); + +// try {Thread.sleep(100000); } catch (Exception e) { } + } +} +/* + + +*/ + + +/* + +click +id=ui-active-menuitem + + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + +clickAndWait +xpath=(//img[@alt='add'])[14] + + + +assertTitle +Edit + + + +select +typeSelector +label=Service + + +type +id=activity +Primate Heart Health + + +type +roleLabel +Founder + + +type +startField-year +2010 + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + + +click +//div[@id='wrapper-content']/ul/li[6] + + + +clickAndWait +css=a.add-publisherOf > img.add-individual + + + +assertTitle +Edit + + + +select +id=typeOfNew +label=Database (vivo) + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +Primate Info + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=#publicationsGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual + + + +assertTitle +Edit + + + +select +typeSelector +label=Invited Talk + + +type +id=presentation +Primate Health and Fitness + + +type +roleLabel +Organizer + + +type +startField-year +2008 + + +clickAndWait +css=input.submit + + + +assertTitle +Primate College of America + + + + +click +//div[@id='wrapper-content']/ul/li[10] + + + +clickAndWait +css=#serviceGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual + + + +assertTitle +Edit + + + +select +typeSelector +label=Event + + +type +id=activity +Primate Health Check + + +type +roleLabel +Sponsor + + +type +startField-year +2008 + + +type +endField-year +2010 + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + + +click +//div[@id='wrapper-content']/ul/li[12] + + + +clickAndWait +css=a.add-RO_0001025 > img.add-individual + + + +assertTitle +Edit + + + +type +id=object + + + +sendKeys +id=object +northern Afr + + +pause +5000 + + + +sendKeys +id=object +${KEY_DOWN} + + +click +id=ui-active-menuitem + + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + + +clickAndWait +xpath=(//img[@alt='add'])[34] + + + +assertTitle +Edit + + + +type +id=emailAddress +info@primates.edu + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=article.property > #ARG_2000028 > a.add-ARG_2000028 > img.add-individual + + + +assertTitle +Edit + + + +type +id=telephoneNumber +555-555-5555 + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +xpath=(//h3[@id='ARG_2000028']/a)[2] + + + +assertTitle +Edit + + + +type +id=telephoneNumber +555-555-5554 + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +xpath=(//img[@alt='add'])[35] + + + +assertTitle +Edit + + + +type +id=streetAddressOne +1234 Northern African Nation + + +type +id=city +Morocco City + + +type +id=postalCode +1234567890 + + +type +id=countryEditMode +Morocco + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + + +click +css=li.nonSelectedGroupTab.clickable + + + +clickAndWait +css=a.add-dateTimeInterval > img.add-individual + + + +assertTitle +Edit + + + +type +startField-year +1959 + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + + +clickAndWait +//h3[@id='abbreviation']/a/img + + + +assertTitle +Edit + + + +waitForElementPresent +tinymce + + + +runScript +tinyMCE.activeEditor.setContent('PCoA') + + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + +click +//div[@id='wrapper-content']/ul/li[8] + + + +clickAndWait +//h3[@id='freetextKeyword']/a/img + + + +assertTitle +Edit + + + +waitForElementPresent +tinymce + + + +runScript +tinyMCE.activeEditor.setContent('Gorillas') + + + +clickAndWait +submit + + + +assertTitle +Primate College of America + + + + +click +css=li.nonSelectedGroupTab.clickable + + + +clickAndWait +xpath=(//img[@alt='add'])[14] + + + +assertTitle +Edit + + + +select +id=typeSelector +label=Workshop + + +type +id=activity +New Primate Students + + +type +id=startField-year +2003 + + +type +id=endField-year +2006 + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +xpath=(//img[@alt='add'])[15] + + + +assertTitle +Edit + + + +select +id=typeSelector +label=Performance + + +type +id=activity +Primates in the Wild + + +type +id=startField-year +1997 + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +click +//div[@id='wrapper-content']/ul/li[6] + + + +clickAndWait +css=a.add-featuredIn > img.add-individual + + + +assertTitle +Edit + + + +select +id=typeOfNew +label=Blog Posting (vivo) + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +Primate Happenings + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=a.add-assigneeFor > img.add-individual + + + +assertTitle +Edit + + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +USA222333444555 + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=a.add-translatorOf > img.add-individual + + + +assertTitle +Edit + + + +select +id=objectVar +label=Primate Happenings (Blog Posting) + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +click +//div[@id='wrapper-content']/ul/li[8] + + + +clickAndWait +css=#researchGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual + + + +assertTitle +Edit + + + +type +id=grant + + + +sendKeys +id=grant +primate hab + + +pause +5000 + + + +sendKeys +id=grant +${KEY_DOWN} + + +click +id=ui-active-menuitem + + + +clickAndWait +css=input.submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=a.add-ERO_0001520 > img.add-individual + + + +assertTitle +Edit + + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +Human and Ape Brain Comparison + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +click +//div[@id='wrapper-content']/ul/li[10] + + + +clickAndWait +css=a.add-ERO_0000037 > img.add-individual + + + +assertTitle +Edit + + + +select +id=typeOfNew +label=Transport Service (obo) + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +Gorilla Moving Company + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=#serviceGroup > article.property > #offers > a.add-offers > img.add-individual + + + +assertTitle +Edit + + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +Introduction to Primates + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +click +//div[@id='wrapper-content']/ul/li[12] + + + +clickAndWait +css=a.add-hasSuccessorOrganization > img.add-individual + + + +assertTitle +Edit + + + +select +id=typeOfNew +label=University (vivo) + + +clickAndWait +id=offerCreate + + + +assertTitle +Edit + + + +type +id=label +Primate University of America + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + +clickAndWait +css=a.add-governingAuthorityFor > img.add-individual + + + +assertTitle +Edit + + + +type +id=object + + + +sendKeys +id=object +primate colleges of the wor + + +pause +5000 + + + +sendKeys +id=object +${KEY_DOWN} + + +click +id=ui-active-menuitem + + + +clickAndWait +id=submit + + + +assertTitle +Primate College of America + + + + + +click +css=li.nonSelectedGroupTab.clickable + + + +verifyTextPresent +PCoA + + + +verifyTextPresent +1959 - + + + +verifyElementPresent +link=B.S. Bachelor of Science + + + +verifyElementPresent +link=Primate Student of the Year + + + +verifyElementPresent +link=Best Primate College + + + + +click +css=li.nonSelectedGroupTab.clickable + + + +verifyTextPresent +faculty administrative position + + + +verifyElementPresent +link=Person, Polly + + + +verifyTextPresent +Person, Polly, Dr. 1999 - + + + +verifyElementPresent +link=Primate History Library + + + +verifyElementPresent +link=Primate Research Laboratory + + + +verifyElementPresent +link=Primates-r-us + + + +verifyTextPresent +Primates-r-us Founder 2010 - + + + +verifyElementPresent +link=Primate History Library + + + +verifyElementPresent +link=Primates-r-us + + + +verifyElementPresent +link=Primate Colleges of the World + + + +verifyTextPresent +Primate Colleges of the World Member 2009 - + + + +verifyElementPresent +link=Primate Heart Health + + + +verifyTextPresent +Primate Heart Health Founder 2010 - + + + +verifyElementPresent +link=New Primate Students + + + +verifyTextPresent +New Primate Students 2003 - 2006 + + + +verifyElementPresent +link=Primates in the Wild + + + +verifyTextPresent +Primates in the Wild 1997 - + + + + +click +//div[@id='wrapper-content']/ul/li[6] + + + +verifyElementPresent +link=Primate Info + + + +verifyTextPresent +invited talk + + + +verifyElementPresent +link=Primate Health and Fitness + + + +verifyTextPresent +Primate Health and Fitness, Organizer 2008 + + + +verifyElementPresent +link=Primate Happenings + + + +verifyElementPresent +link=USA222333444555 + + + + +click +//div[@id='wrapper-content']/ul/li[8] + + + +verifyElementPresent +link=Primate Habitat Research Grant + + + +verifyElementPresent +link=Primate Habitat Research Grant + + + +verifyElementPresent +link=Primate Survival Planning Grant + + + +verifyElementPresent +link=Human and Ape Brain Comparison + + + +verifyTextPresent +Gorillas + + + + +click +//div[@id='wrapper-content']/ul/li[10] + + + +verifyElementPresent +link=Gorilla Moving Company + + + +verifyElementPresent +link=Primate Health Check + + + +verifyTextPresent +Primate Health Check Sponsor 2008 - 2010 + + + +verifyElementPresent +link=Portable Primate Habitat + + + +verifyElementPresent +link=Introduction to Primates + + + + +click +//div[@id='wrapper-content']/ul/li[12] + + + +verifyTextPresent +555-555-5555 + + + +verifyTextPresent +555-555-5554 + + + +verifyTextPresent +info@primates.edu + + + +verifyTextPresent +1234 Northern African Nation + + + +verifyTextPresent +Morocco City + + + +verifyTextPresent +1234567890 + + + +verifyTextPresent +Morocco + + + +verifyElementPresent +link=northern Africa + + + +verifyElementPresent +link=Primate College of New York + + + +verifyElementPresent +link=Primate University of America + + + +verifyElementPresent +link=Primate Colleges of the World + + + + +click +//div[@id='wrapper-content']/ul/li[14] + + + +verifyTextPresent +PCoA + + + +verifyTextPresent +1959 - + + + +verifyElementPresent +link=B.S. Bachelor of Science + + + +verifyElementPresent +link=Primate Student of the Year + + + +verifyElementPresent +link=Best Primate College + + + +verifyTextPresent +faculty administrative position + + + +verifyElementPresent +link=Person, Polly + + + +verifyTextPresent +Person, Polly, Dr. 1999 - + + + +verifyElementPresent +link=Primate History Library + + + +verifyElementPresent +link=Primate Research Laboratory + + + +verifyElementPresent +link=Primates-r-us + + + +verifyTextPresent +Primates-r-us Founder 2010 - + + + +verifyElementPresent +link=Primate History Library + + + +verifyElementPresent +link=Primates-r-us + + + +verifyElementPresent +link=Primate Colleges of the World + + + +verifyTextPresent +Primate Colleges of the World Member 2009 - + + + +verifyElementPresent +link=Primate Heart Health + + + +verifyTextPresent +Primate Heart Health Founder 2010 - + + + +verifyElementPresent +link=New Primate Students + + + +verifyTextPresent +New Primate Students 2003 - 2006 + + + +verifyElementPresent +link=Primates in the Wild + + + +verifyTextPresent +Primates in the Wild 1997 - + + + +verifyElementPresent +link=Primate Info + + + +verifyTextPresent +invited talk + + + +verifyElementPresent +link=Primate Health and Fitness + + + +verifyTextPresent +Primate Health and Fitness, Organizer 2008 + + + +verifyElementPresent +link=Primate Happenings + + + +verifyElementPresent +link=USA222333444555 + + + +verifyElementPresent +link=Primate Happenings + + + +verifyElementPresent +link=Primate Habitat Research Grant + + + +verifyElementPresent +link=Primate Habitat Research Grant + + + +verifyElementPresent +link=Primate Survival Planning Grant + + + +verifyElementPresent +link=Human and Ape Brain Comparison + + + +verifyTextPresent +Gorillas + + + +verifyElementPresent +link=Gorilla Moving Company + + + +verifyElementPresent +link=Primate Health Check + + + +verifyTextPresent +Primate Health Check Sponsor 2008 - 2010 + + + +verifyElementPresent +link=Portable Primate Habitat + + + +verifyElementPresent +link=Introduction to Primates + + + +verifyTextPresent +555-555-5555 + + + +verifyTextPresent +555-555-5554 + + + +verifyTextPresent +info@primates.edu + + + +verifyTextPresent +1234 Northern African Nation + + + +verifyTextPresent +Morocco City + + + +verifyTextPresent +1234567890 + + + +verifyTextPresent +Morocco + + + +verifyElementPresent +link=northern Africa + + + +verifyElementPresent +link=Primate College of New York + + + +verifyElementPresent +link=Primate University of America + + + +verifyElementPresent +link=Primate Colleges of the World + + + + +clickAndWait +link=Home + + + +clickAndWait +link=Log out + + + +assertTitle +VIVO + + + + + +*/ \ No newline at end of file diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java new file mode 100644 index 00000000..ce4ece4c --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java @@ -0,0 +1,39 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.vivoweb.vivo.selenium.DriverFactory; +import org.vivoweb.vivo.selenium.SeleniumUtils; + +public class RebuildSearchIndex extends AbstractSeleniumTest { + @Test + public void rebuildSearchIndexTest() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); // assertTitle,VIVO + + logIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); // clickAndWait,link=Site Admin + assertTitle("VIVO Site Administration"); // assertTitle,VIVO Site Administration + + clickAndWait(By.linkText("Rebuild search index")); // clickAndWait,link=Rebuild search index + assertTitle("Rebuild Search Index"); // assertTitle,Rebuild Search Index + + clickAndWait(By.name("rebuild")); // clickAndWait,name=rebuild + assertTitle("Rebuild Search Index"); // assertTitle, Rebuild Search Index + + waitForTextPresent("Reset the search index and re-populate it."); // waitForTextPresent,Reset the search index and re-populate it. + + logOut(); // clickAndWait,Log out + } +} diff --git a/selenium/test-user-model.owl b/selenium/test-user-model.owl new file mode 100644 index 00000000..a84b1370 --- /dev/null +++ b/selenium/test-user-model.owl @@ -0,0 +1,58 @@ + + + + + testAdmin@cornell.edu + testAdmin + Test + Admin + DC647EB65E6711E155375218212B3964 + ACTIVE + 1 + 0 + + + + + johnCurator@cornell.edu + johnCurator + John + Curator + DC647EB65E6711E155375218212B3964 + ACTIVE + 1 + 0 + + + + + sallyEditor@cornell.edu + sallyEditor + Sally + Editor + DC647EB65E6711E155375218212B3964 + ACTIVE + 1 + 0 + + + + + joeUser@cornell.edu + joeUser + Joe + User + DC647EB65E6711E155375218212B3964 + ACTIVE + 1 + 0 + + + + From d8fad2b5ab8e59d330ee25ce900f42a46d5b81dd Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 18 Dec 2015 22:20:01 +0000 Subject: [PATCH 02/17] Continued WebDriver work in progress --- .../main/webResources/META-INF/context.xml | 2 +- .../vivoweb/vivo/selenium/DriverFactory.java | 1 + .../selenium/suites/AddNonPersonThings.java | 4 +- .../selenium/tests/AbstractSeleniumTest.java | 47 + .../selenium/tests/CreateOrganization.java | 1822 ++++------------- .../selenium/tests/DeleteOrganization.java | 482 +++++ 6 files changed, 887 insertions(+), 1471 deletions(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java diff --git a/installer/webapp/src/main/webResources/META-INF/context.xml b/installer/webapp/src/main/webResources/META-INF/context.xml index 415042c5..f4af100a 100644 --- a/installer/webapp/src/main/webResources/META-INF/context.xml +++ b/installer/webapp/src/main/webResources/META-INF/context.xml @@ -1,4 +1,4 @@ - + 4) { + throw nse; + } + } + + count++; + } + +// WebDriverWait wait = new WebDriverWait(driver, 5); +// WebElement autoComplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ui-autocomplete"))); + + if (keys != null && keys.length > 0) { + for (Keys key : keys) { + element.sendKeys(key); + } + } + + WebElement selected = driver.findElement(By.id("ui-active-menuitem")); + if (selected != null) { + selected.click(); + } + } + protected void typeTinyMCE(String text) { // tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.') @@ -71,6 +114,10 @@ public class AbstractSeleniumTest { driver.switchTo().defaultContent(); } + protected void verifyElementPresent(By by) { + Assert.assertNotNull(driver.findElement(by)); + } + protected void verifyTextPresent(String text) { Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java index 96eac167..7db18ada 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java @@ -193,7 +193,6 @@ public class CreateOrganization extends AbstractSeleniumTest { assertTitle("Primate College of America"); clickAndWait(By.xpath("(//img[@alt='add'])[13]")); - assertTitle("Edit"); selectByLabel(By.id("typeSelector"), "Consortium"); @@ -205,1476 +204,361 @@ public class CreateOrganization extends AbstractSeleniumTest { assertTitle("Primate College of America"); clickAndWait(By.cssSelector("a.add-hasCollaborator > img.add-individual")); - assertTitle("Edit"); - type(By.id("object"), "Primate His"); -// WebElement element; -// element.sendKeys(Keys.ARROW_DOWN); -// element.click(); + typeAutoCompleteSelect(By.id("object"), "Primate His", Keys.ARROW_DOWN); -// try {Thread.sleep(100000); } catch (Exception e) { } + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("(//img[@alt='add'])[14]")); + assertTitle("Edit"); + + type(By.id("typeSelector"), "Service"); + type(By.id("activity"), "Primate Heart Health"); + type(By.id("roleLabel"), "Founder"); + type(By.id("startField-year"), "2010"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[6]")); + clickAndWait(By.cssSelector("a.add-publisherOf > img.add-individual")); + assertTitle("Edit"); + +// type(By.id("typeOfNew"), "Database (vivo)"); + selectByLabel(By.id("typeOfNew"), "Database (vivo)"); + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Primate Info"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("#publicationsGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual")); + assertTitle("Edit"); + + type(By.id("typeSelector"), "Invited Talk"); + type(By.id("presentation"), "Primate Health and Fitness"); + type(By.id("roleLabel"), "Organizer"); + type(By.id("startField-year"), "2008"); + + clickAndWait(By.cssSelector("input.submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[10]")); + clickAndWait(By.cssSelector("#serviceGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual")); + assertTitle("Edit"); + + type(By.id("typeSelector"), "Event"); + type(By.id("activity"), "Primate Health Check"); + type(By.id("roleLabel"), "Sponsor"); + type(By.id("startField-year"), "2008"); + type(By.id("endField-year"), "2010"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[12]")); + clickAndWait(By.cssSelector("a.add-RO_0001025 > img.add-individual")); + assertTitle("Edit"); + + typeAutoCompleteSelect(By.id("object"), "northern Afr", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("(//img[@alt='add'])[34]")); + assertTitle("Edit"); + + type(By.id("emailAddress"), "info@primates.edu"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("article.property > #ARG_2000028 > a.add-ARG_2000028 > img.add-individual")); + assertTitle("Edit"); + + type(By.id("telephoneNumber"), "555-555-5555"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("(//h3[@id='ARG_2000028']/a)[2]")); + assertTitle("Edit"); + + type(By.id("telephoneNumber"), "555-555-5554"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("(//img[@alt='add'])[35]")); + assertTitle("Edit"); + + type(By.id("streetAddressOne"), "1234 Northern African Nation"); + type(By.id("city"), "Morocco City"); + type(By.id("postalCode"), "1234567890"); + type(By.id("countryEditMode"), "Morocco"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.cssSelector("a.add-dateTimeInterval > img.add-individual")); + assertTitle("Edit"); + + type(By.id("startField-year"), "1959"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//h3[@id='abbreviation']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("PCoA"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.xpath("//h3[@id='freetextKeyword']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("Gorillas"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.xpath("(//img[@alt='add'])[14]")); + assertTitle("Edit"); + + type(By.id("typeSelector"), "Workshop"); + type(By.id("activity"), "New Primate Students "); + type(By.id("startField-year"), "2006"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("(//img[@alt='add'])[15]")); + assertTitle("Edit"); + + type(By.id("typeSelector"), "Performance"); + type(By.id("activity"), "Primates in the Wild"); + type(By.id("startField-year"), "1997"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[6]")); + clickAndWait(By.cssSelector("a.add-featuredIn > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("typeOfNew"), "Blog Posting (vivo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Primate Happenings"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-assigneeFor > img.add-individual")); + assertTitle("Edit"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "USA222333444555"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-translatorOf > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Happenings (Blog Posting)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.cssSelector("#researchGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual")); + assertTitle("Edit"); + + typeAutoCompleteSelect(By.id("grant"), "primate hab", Keys.ARROW_DOWN); + + clickAndWait(By.cssSelector("input.submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-ERO_0001520 > img.add-individual")); + assertTitle("Edit"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Human and Ape Brain Comparison"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[10]")); + clickAndWait(By.cssSelector("a.add-ERO_0000037 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("typeOfNew"), "Transport Service (obo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Gorilla Moving Company"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("#serviceGroup > article.property > #offers > a.add-offers > img.add-individual")); + assertTitle("Edit"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Introduction to Primates"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[12]")); + clickAndWait(By.cssSelector("a.add-hasSuccessorOrganization > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("typeOfNew"), "University (vivo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Primate University of America"); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + clickAndWait(By.cssSelector("a.add-governingAuthorityFor > img.add-individual")); + assertTitle("Edit"); + + typeAutoCompleteSelect(By.id("object"), "primate colleges of the wor", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate College of America"); + + // Verify everything entered is displaying properly + + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + verifyTextPresent("PCoA"); + verifyTextPresent("1959 -"); + verifyElementPresent(By.linkText("B.S. Bachelor of Science")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + verifyElementPresent(By.linkText("Best Primate College")); + + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + verifyTextPresent("faculty administrative position"); + verifyElementPresent(By.linkText("Person, Polly")); + verifyTextPresent("Person, Polly, Dr. 1999 -"); + verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Primates-r-us")); + verifyTextPresent("Primates-r-us Founder 2010 -"); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyTextPresent("Primate Colleges of the World Member 2009 -"); + verifyElementPresent(By.linkText("Primate Heart Health")); + verifyTextPresent("Primate Heart Health Founder 2010 -"); + verifyElementPresent(By.linkText("New Primate Students")); + verifyTextPresent("New Primate Students 2003 - 2006"); + verifyElementPresent(By.linkText("Primates in the Wild")); + verifyTextPresent("Primates in the Wild 1997 -"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[6]")); + verifyElementPresent(By.linkText("Primate Info")); + verifyTextPresent("invited talk"); + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyTextPresent("Primate Health and Fitness, Organizer 2008"); + verifyElementPresent(By.linkText("Primate Happenings")); + verifyElementPresent(By.linkText("USA222333444555")); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + verifyElementPresent(By.linkText("Primate Habitat Research Grant")); + verifyElementPresent(By.linkText("Primate Survival Planning Grant")); + verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); + verifyTextPresent("Gorillas"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[10]")); + verifyElementPresent(By.linkText("Gorilla Moving Company")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyTextPresent("Primate Health Check Sponsor 2008 - 2010"); + verifyElementPresent(By.linkText("Portable Primate Habitat")); + verifyElementPresent(By.linkText("Introduction to Primates")); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[12]")); + verifyTextPresent("555-555-5555"); + verifyTextPresent("555-555-5554"); + verifyTextPresent("info@primates.edu"); + verifyTextPresent("1234 Northern African Nation"); + verifyTextPresent("Morocco City"); + verifyTextPresent("1234567890"); + verifyTextPresent("Morocco"); + verifyElementPresent(By.linkText("northern Africa")); + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[14]")); + verifyTextPresent("PCoA"); + verifyTextPresent("1959 -"); + verifyElementPresent(By.linkText("B.S. Bachelor of Science")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + verifyElementPresent(By.linkText("Best Primate College")); + verifyTextPresent("faculty administrative position"); + verifyElementPresent(By.linkText("Person, Polly")); + verifyTextPresent("Person, Polly, Dr. 1999 -"); + verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Primates-r-us")); + verifyTextPresent("Primates-r-us Founder 2010 -"); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyTextPresent("Primate Colleges of the World Member 2009 -"); + verifyElementPresent(By.linkText("Primate Heart Health")); + verifyTextPresent("Primate Heart Health Founder 2010 -"); + verifyElementPresent(By.linkText("New Primate Students")); + verifyTextPresent("New Primate Students 2003 - 2006"); + verifyElementPresent(By.linkText("Primates in the Wild")); + verifyTextPresent("Primates in the Wild 1997 -"); + verifyElementPresent(By.linkText("Primate Info")); + verifyTextPresent("invited talk"); + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyTextPresent("Primate Health and Fitness, Organizer 2008"); + verifyElementPresent(By.linkText("Primate Happenings")); + verifyElementPresent(By.linkText("USA222333444555")); + verifyElementPresent(By.linkText("Primate Habitat Research Grant")); + verifyElementPresent(By.linkText("Primate Survival Planning Grant")); + verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); + verifyTextPresent("Gorillas"); + verifyElementPresent(By.linkText("Gorilla Moving Company")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyTextPresent("Primate Health Check Sponsor 2008 - 2010"); + verifyElementPresent(By.linkText("Portable Primate Habitat")); + verifyElementPresent(By.linkText("Introduction to Primates")); + verifyTextPresent("555-555-5555"); + verifyTextPresent("555-555-5554"); + verifyTextPresent("info@primates.edu"); + verifyTextPresent("1234 Northern African Nation"); + verifyTextPresent("Morocco City"); + verifyTextPresent("1234567890"); + verifyTextPresent("Morocco"); + verifyElementPresent(By.linkText("northern Africa")); + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + + logOut(); } } -/* - - -*/ - - -/* - -click -id=ui-active-menuitem - - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - -clickAndWait -xpath=(//img[@alt='add'])[14] - - - -assertTitle -Edit - - - -select -typeSelector -label=Service - - -type -id=activity -Primate Heart Health - - -type -roleLabel -Founder - - -type -startField-year -2010 - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - - -click -//div[@id='wrapper-content']/ul/li[6] - - - -clickAndWait -css=a.add-publisherOf > img.add-individual - - - -assertTitle -Edit - - - -select -id=typeOfNew -label=Database (vivo) - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -Primate Info - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=#publicationsGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual - - - -assertTitle -Edit - - - -select -typeSelector -label=Invited Talk - - -type -id=presentation -Primate Health and Fitness - - -type -roleLabel -Organizer - - -type -startField-year -2008 - - -clickAndWait -css=input.submit - - - -assertTitle -Primate College of America - - - - -click -//div[@id='wrapper-content']/ul/li[10] - - - -clickAndWait -css=#serviceGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual - - - -assertTitle -Edit - - - -select -typeSelector -label=Event - - -type -id=activity -Primate Health Check - - -type -roleLabel -Sponsor - - -type -startField-year -2008 - - -type -endField-year -2010 - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - - -click -//div[@id='wrapper-content']/ul/li[12] - - - -clickAndWait -css=a.add-RO_0001025 > img.add-individual - - - -assertTitle -Edit - - - -type -id=object - - - -sendKeys -id=object -northern Afr - - -pause -5000 - - - -sendKeys -id=object -${KEY_DOWN} - - -click -id=ui-active-menuitem - - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - - -clickAndWait -xpath=(//img[@alt='add'])[34] - - - -assertTitle -Edit - - - -type -id=emailAddress -info@primates.edu - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=article.property > #ARG_2000028 > a.add-ARG_2000028 > img.add-individual - - - -assertTitle -Edit - - - -type -id=telephoneNumber -555-555-5555 - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -xpath=(//h3[@id='ARG_2000028']/a)[2] - - - -assertTitle -Edit - - - -type -id=telephoneNumber -555-555-5554 - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -xpath=(//img[@alt='add'])[35] - - - -assertTitle -Edit - - - -type -id=streetAddressOne -1234 Northern African Nation - - -type -id=city -Morocco City - - -type -id=postalCode -1234567890 - - -type -id=countryEditMode -Morocco - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - - -click -css=li.nonSelectedGroupTab.clickable - - - -clickAndWait -css=a.add-dateTimeInterval > img.add-individual - - - -assertTitle -Edit - - - -type -startField-year -1959 - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - - -clickAndWait -//h3[@id='abbreviation']/a/img - - - -assertTitle -Edit - - - -waitForElementPresent -tinymce - - - -runScript -tinyMCE.activeEditor.setContent('PCoA') - - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - -click -//div[@id='wrapper-content']/ul/li[8] - - - -clickAndWait -//h3[@id='freetextKeyword']/a/img - - - -assertTitle -Edit - - - -waitForElementPresent -tinymce - - - -runScript -tinyMCE.activeEditor.setContent('Gorillas') - - - -clickAndWait -submit - - - -assertTitle -Primate College of America - - - - -click -css=li.nonSelectedGroupTab.clickable - - - -clickAndWait -xpath=(//img[@alt='add'])[14] - - - -assertTitle -Edit - - - -select -id=typeSelector -label=Workshop - - -type -id=activity -New Primate Students - - -type -id=startField-year -2003 - - -type -id=endField-year -2006 - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -xpath=(//img[@alt='add'])[15] - - - -assertTitle -Edit - - - -select -id=typeSelector -label=Performance - - -type -id=activity -Primates in the Wild - - -type -id=startField-year -1997 - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -click -//div[@id='wrapper-content']/ul/li[6] - - - -clickAndWait -css=a.add-featuredIn > img.add-individual - - - -assertTitle -Edit - - - -select -id=typeOfNew -label=Blog Posting (vivo) - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -Primate Happenings - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=a.add-assigneeFor > img.add-individual - - - -assertTitle -Edit - - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -USA222333444555 - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=a.add-translatorOf > img.add-individual - - - -assertTitle -Edit - - - -select -id=objectVar -label=Primate Happenings (Blog Posting) - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -click -//div[@id='wrapper-content']/ul/li[8] - - - -clickAndWait -css=#researchGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual - - - -assertTitle -Edit - - - -type -id=grant - - - -sendKeys -id=grant -primate hab - - -pause -5000 - - - -sendKeys -id=grant -${KEY_DOWN} - - -click -id=ui-active-menuitem - - - -clickAndWait -css=input.submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=a.add-ERO_0001520 > img.add-individual - - - -assertTitle -Edit - - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -Human and Ape Brain Comparison - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -click -//div[@id='wrapper-content']/ul/li[10] - - - -clickAndWait -css=a.add-ERO_0000037 > img.add-individual - - - -assertTitle -Edit - - - -select -id=typeOfNew -label=Transport Service (obo) - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -Gorilla Moving Company - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=#serviceGroup > article.property > #offers > a.add-offers > img.add-individual - - - -assertTitle -Edit - - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -Introduction to Primates - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -click -//div[@id='wrapper-content']/ul/li[12] - - - -clickAndWait -css=a.add-hasSuccessorOrganization > img.add-individual - - - -assertTitle -Edit - - - -select -id=typeOfNew -label=University (vivo) - - -clickAndWait -id=offerCreate - - - -assertTitle -Edit - - - -type -id=label -Primate University of America - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - -clickAndWait -css=a.add-governingAuthorityFor > img.add-individual - - - -assertTitle -Edit - - - -type -id=object - - - -sendKeys -id=object -primate colleges of the wor - - -pause -5000 - - - -sendKeys -id=object -${KEY_DOWN} - - -click -id=ui-active-menuitem - - - -clickAndWait -id=submit - - - -assertTitle -Primate College of America - - - - - -click -css=li.nonSelectedGroupTab.clickable - - - -verifyTextPresent -PCoA - - - -verifyTextPresent -1959 - - - - -verifyElementPresent -link=B.S. Bachelor of Science - - - -verifyElementPresent -link=Primate Student of the Year - - - -verifyElementPresent -link=Best Primate College - - - - -click -css=li.nonSelectedGroupTab.clickable - - - -verifyTextPresent -faculty administrative position - - - -verifyElementPresent -link=Person, Polly - - - -verifyTextPresent -Person, Polly, Dr. 1999 - - - - -verifyElementPresent -link=Primate History Library - - - -verifyElementPresent -link=Primate Research Laboratory - - - -verifyElementPresent -link=Primates-r-us - - - -verifyTextPresent -Primates-r-us Founder 2010 - - - - -verifyElementPresent -link=Primate History Library - - - -verifyElementPresent -link=Primates-r-us - - - -verifyElementPresent -link=Primate Colleges of the World - - - -verifyTextPresent -Primate Colleges of the World Member 2009 - - - - -verifyElementPresent -link=Primate Heart Health - - - -verifyTextPresent -Primate Heart Health Founder 2010 - - - - -verifyElementPresent -link=New Primate Students - - - -verifyTextPresent -New Primate Students 2003 - 2006 - - - -verifyElementPresent -link=Primates in the Wild - - - -verifyTextPresent -Primates in the Wild 1997 - - - - - -click -//div[@id='wrapper-content']/ul/li[6] - - - -verifyElementPresent -link=Primate Info - - - -verifyTextPresent -invited talk - - - -verifyElementPresent -link=Primate Health and Fitness - - - -verifyTextPresent -Primate Health and Fitness, Organizer 2008 - - - -verifyElementPresent -link=Primate Happenings - - - -verifyElementPresent -link=USA222333444555 - - - - -click -//div[@id='wrapper-content']/ul/li[8] - - - -verifyElementPresent -link=Primate Habitat Research Grant - - - -verifyElementPresent -link=Primate Habitat Research Grant - - - -verifyElementPresent -link=Primate Survival Planning Grant - - - -verifyElementPresent -link=Human and Ape Brain Comparison - - - -verifyTextPresent -Gorillas - - - - -click -//div[@id='wrapper-content']/ul/li[10] - - - -verifyElementPresent -link=Gorilla Moving Company - - - -verifyElementPresent -link=Primate Health Check - - - -verifyTextPresent -Primate Health Check Sponsor 2008 - 2010 - - - -verifyElementPresent -link=Portable Primate Habitat - - - -verifyElementPresent -link=Introduction to Primates - - - - -click -//div[@id='wrapper-content']/ul/li[12] - - - -verifyTextPresent -555-555-5555 - - - -verifyTextPresent -555-555-5554 - - - -verifyTextPresent -info@primates.edu - - - -verifyTextPresent -1234 Northern African Nation - - - -verifyTextPresent -Morocco City - - - -verifyTextPresent -1234567890 - - - -verifyTextPresent -Morocco - - - -verifyElementPresent -link=northern Africa - - - -verifyElementPresent -link=Primate College of New York - - - -verifyElementPresent -link=Primate University of America - - - -verifyElementPresent -link=Primate Colleges of the World - - - - -click -//div[@id='wrapper-content']/ul/li[14] - - - -verifyTextPresent -PCoA - - - -verifyTextPresent -1959 - - - - -verifyElementPresent -link=B.S. Bachelor of Science - - - -verifyElementPresent -link=Primate Student of the Year - - - -verifyElementPresent -link=Best Primate College - - - -verifyTextPresent -faculty administrative position - - - -verifyElementPresent -link=Person, Polly - - - -verifyTextPresent -Person, Polly, Dr. 1999 - - - - -verifyElementPresent -link=Primate History Library - - - -verifyElementPresent -link=Primate Research Laboratory - - - -verifyElementPresent -link=Primates-r-us - - - -verifyTextPresent -Primates-r-us Founder 2010 - - - - -verifyElementPresent -link=Primate History Library - - - -verifyElementPresent -link=Primates-r-us - - - -verifyElementPresent -link=Primate Colleges of the World - - - -verifyTextPresent -Primate Colleges of the World Member 2009 - - - - -verifyElementPresent -link=Primate Heart Health - - - -verifyTextPresent -Primate Heart Health Founder 2010 - - - - -verifyElementPresent -link=New Primate Students - - - -verifyTextPresent -New Primate Students 2003 - 2006 - - - -verifyElementPresent -link=Primates in the Wild - - - -verifyTextPresent -Primates in the Wild 1997 - - - - -verifyElementPresent -link=Primate Info - - - -verifyTextPresent -invited talk - - - -verifyElementPresent -link=Primate Health and Fitness - - - -verifyTextPresent -Primate Health and Fitness, Organizer 2008 - - - -verifyElementPresent -link=Primate Happenings - - - -verifyElementPresent -link=USA222333444555 - - - -verifyElementPresent -link=Primate Happenings - - - -verifyElementPresent -link=Primate Habitat Research Grant - - - -verifyElementPresent -link=Primate Habitat Research Grant - - - -verifyElementPresent -link=Primate Survival Planning Grant - - - -verifyElementPresent -link=Human and Ape Brain Comparison - - - -verifyTextPresent -Gorillas - - - -verifyElementPresent -link=Gorilla Moving Company - - - -verifyElementPresent -link=Primate Health Check - - - -verifyTextPresent -Primate Health Check Sponsor 2008 - 2010 - - - -verifyElementPresent -link=Portable Primate Habitat - - - -verifyElementPresent -link=Introduction to Primates - - - -verifyTextPresent -555-555-5555 - - - -verifyTextPresent -555-555-5554 - - - -verifyTextPresent -info@primates.edu - - - -verifyTextPresent -1234 Northern African Nation - - - -verifyTextPresent -Morocco City - - - -verifyTextPresent -1234567890 - - - -verifyTextPresent -Morocco - - - -verifyElementPresent -link=northern Africa - - - -verifyElementPresent -link=Primate College of New York - - - -verifyElementPresent -link=Primate University of America - - - -verifyElementPresent -link=Primate Colleges of the World - - - - -clickAndWait -link=Home - - - -clickAndWait -link=Log out - - - -assertTitle -VIVO - - - - - -*/ \ No newline at end of file diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java new file mode 100644 index 00000000..312249a0 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java @@ -0,0 +1,482 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteOrganization extends AbstractSeleniumTest { + @Test + public void deleteOrganization() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + logIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primate College of America")); + assertTitle("Primate College of America"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + + try { Thread.sleep(50000); } catch (Exception e) { } + + logOut(); + } +} +/* + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Organization + + + + assertTitle + Organization + + + + clickAndWait + link=Primate College of New York + + + + assertTitle + Primate College of New York + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Organization + + + + assertTitle + Organization + + + + clickAndWait + link=Primate Colleges of the World + + + + assertTitle + Primate Colleges of the World + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Organization + + + + assertTitle + Organization + + + + clickAndWait + link=Primate History Library + + + + assertTitle + Primate History Library + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Organization + + + + assertTitle + Organization + + + + clickAndWait + link=Primate Research Laboratory + + + + assertTitle + Primate Research Laboratory + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Organization + + + + assertTitle + Organization + + + + clickAndWait + link=Primate University of America + + + + assertTitle + Primate University of America + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Organization + + + + assertTitle + Organization + + + + clickAndWait + link=Primates-r-us + + + + assertTitle + Primates-r-us + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + */ \ No newline at end of file From 6aeccfffbba7ee5f6cb94cde26df5aaeed80a6cf Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Sun, 20 Dec 2015 15:37:59 +0000 Subject: [PATCH 03/17] Continued WebDriver work in progress --- .../CreateOrganization.html | 1 + .../selenium/tests/AbstractSeleniumTest.java | 29 +- .../selenium/tests/CreateOrganization.java | 9 +- .../selenium/tests/DeleteOrganization.java | 574 ++++-------------- 4 files changed, 154 insertions(+), 459 deletions(-) diff --git a/legacy/utilities/acceptance-tests/suites/AddNonPersonThings/CreateOrganization.html b/legacy/utilities/acceptance-tests/suites/AddNonPersonThings/CreateOrganization.html index 37ddb521..d07a4b9d 100644 --- a/legacy/utilities/acceptance-tests/suites/AddNonPersonThings/CreateOrganization.html +++ b/legacy/utilities/acceptance-tests/suites/AddNonPersonThings/CreateOrganization.html @@ -719,6 +719,7 @@ id=object ${KEY_DOWN} + click id=ui-active-menuitem diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java index 427d2247..ea2d4578 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java @@ -1,9 +1,11 @@ package org.vivoweb.vivo.selenium.tests; +import org.apache.commons.lang3.StringUtils; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.NoSuchElementException; @@ -20,6 +22,17 @@ import org.vivoweb.vivo.selenium.SeleniumUtils; public class AbstractSeleniumTest { protected WebDriver driver; + public void assertConfirmation(String text) { + WebDriverWait wait = new WebDriverWait(driver, 2); + wait.until(ExpectedConditions.alertIsPresent()); + Alert alert = driver.switchTo().alert(); + if (!StringUtils.isEmpty(text)) { + Assert.assertTrue(text.equalsIgnoreCase(alert.getText())); + } + alert.accept(); + driver.switchTo().defaultContent(); + } + protected void assertTitle(String title) { Assert.assertEquals(title, driver.getTitle()); } @@ -60,7 +73,9 @@ public class AbstractSeleniumTest { } protected void type(By by, String text) { - driver.findElement(by).sendKeys(text); + WebElement element = driver.findElement(by); + element.click(); + element.sendKeys(text); } protected void typeAutoCompleteSelect(By by, String text, Keys... keys) { @@ -77,11 +92,12 @@ public class AbstractSeleniumTest { } catch (InterruptedException e) { throw new RuntimeException(e); } catch (NoSuchElementException nse) { - for (int i = 0; i < text.length(); i++) { - element.sendKeys(Keys.BACK_SPACE); - } + element.clear(); +// for (int i = 0; i < text.length(); i++) { +// element.sendKeys(Keys.BACK_SPACE); +// } - if (count > 4) { + if (count > 10) { throw nse; } } @@ -119,7 +135,8 @@ public class AbstractSeleniumTest { } protected void verifyTextPresent(String text) { - Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); + Assert.assertTrue(driver.findElement(By.xpath("//body")).getText().contains(text)); +// Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); } protected boolean waitForElementPresent(By by) { diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java index 7db18ada..5b544f9c 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java @@ -330,13 +330,14 @@ public class CreateOrganization extends AbstractSeleniumTest { clickAndWait(By.id("submit")); assertTitle("Primate College of America"); - clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[14]")); clickAndWait(By.xpath("(//img[@alt='add'])[14]")); assertTitle("Edit"); type(By.id("typeSelector"), "Workshop"); type(By.id("activity"), "New Primate Students "); - type(By.id("startField-year"), "2006"); + type(By.id("startField-year"), "2003"); + type(By.id("endField-year"), "2006"); clickAndWait(By.id("submit")); assertTitle("Primate College of America"); @@ -453,14 +454,14 @@ public class CreateOrganization extends AbstractSeleniumTest { // Verify everything entered is displaying properly - clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[2]")); verifyTextPresent("PCoA"); verifyTextPresent("1959 -"); verifyElementPresent(By.linkText("B.S. Bachelor of Science")); verifyElementPresent(By.linkText("Primate Student of the Year")); verifyElementPresent(By.linkText("Best Primate College")); - clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[4]")); verifyTextPresent("faculty administrative position"); verifyElementPresent(By.linkText("Person, Polly")); verifyTextPresent("Person, Polly, Dr. 1999 -"); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java index 312249a0..23b885cc 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java @@ -13,6 +13,9 @@ public class DeleteOrganization extends AbstractSeleniumTest { logIn("testAdmin@cornell.edu", "Password"); + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + clickAndWait(By.linkText("Organization")); assertTitle("Organization"); @@ -26,457 +29,130 @@ public class DeleteOrganization extends AbstractSeleniumTest { assertTitle("Individual Editing Form"); clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - try { Thread.sleep(50000); } catch (Exception e) { } + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primate College of New York")); + assertTitle("Primate College of New York"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primate Colleges of the World")); + assertTitle("Primate Colleges of the World"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primate History Library")); + assertTitle("Primate History Library"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primate Research Laboratory")); + assertTitle("Primate Research Laboratory"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primate University of America")); + assertTitle("Primate University of America"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + clickAndWait(By.linkText("Primates-r-us")); + assertTitle("Primates-r-us"); + + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); logOut(); } } -/* - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Organization - - - - assertTitle - Organization - - - - clickAndWait - link=Primate College of New York - - - - assertTitle - Primate College of New York - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Organization - - - - assertTitle - Organization - - - - clickAndWait - link=Primate Colleges of the World - - - - assertTitle - Primate Colleges of the World - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Organization - - - - assertTitle - Organization - - - - clickAndWait - link=Primate History Library - - - - assertTitle - Primate History Library - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Organization - - - - assertTitle - Organization - - - - clickAndWait - link=Primate Research Laboratory - - - - assertTitle - Primate Research Laboratory - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Organization - - - - assertTitle - Organization - - - - clickAndWait - link=Primate University of America - - - - assertTitle - Primate University of America - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Organization - - - - assertTitle - Organization - - - - clickAndWait - link=Primates-r-us - - - - assertTitle - Primates-r-us - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - */ \ No newline at end of file From 39b7d7bdfb5dc75a71ea923a50194817450fd152 Mon Sep 17 00:00:00 2001 From: Benjamin Gross Date: Wed, 23 Dec 2015 11:13:40 -0700 Subject: [PATCH 04/17] hide past positions in 'research area of' list view --- .../config/listViewConfig-researchAreaOf.xml | 18 ++++++++++++++++- .../propStatement-researchAreaOf.ftl | 20 ++++++++++--------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml b/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml index b833abdf..b3a6d9b4 100644 --- a/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml +++ b/webapp/src/main/webapp/config/listViewConfig-researchAreaOf.xml @@ -22,6 +22,7 @@ ?org ?orgLabel ?title + ?dateTimeEnd WHERE { ?subject ?property ?person . OPTIONAL { ?person core:relatedBy ?position . @@ -42,8 +43,13 @@ ?org a foaf:Organization . ?org rdfs:label ?orgLabel } + OPTIONAL { ?position core:dateTimeInterval ?dateTimeInterval . + ?dateTimeInterval core:end ?dateTimeEndValue . + ?dateTimeEndValue core:dateTime ?dateTimeEnd . + FILTER ( ?dateTimeEnd < now() ) + } } - ORDER BY (fn:lower-case(?personName)) + ORDER BY (fn:lower-case(?personName)) (bound(?dateTimeEnd)) desc(?dateTimeEnd) @@ -59,6 +65,9 @@ ?position core:relates ?org . ?org a foaf:Organization . ?org rdfs:label ?orgName . + ?position core:dateTimeInterval ?dateTimeInterval . + ?dateTimeInterval core:end ?endDate . + ?endDate core:dateTime ?endDateValue . } WHERE { { ?subject ?property ?person @@ -84,6 +93,13 @@ ?position core:relates ?org . ?org a foaf:Organization . ?org rdfs:label ?orgName + } UNION { + ?subject ?property ?person . + ?person core:relatedBy ?position . + ?position a core:Position . + ?position core:dateTimeInterval ?dateTimeInterval . + ?dateTimeInterval core:end ?endDate . + ?endDate core:dateTime ?endDateValue } } diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-researchAreaOf.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-researchAreaOf.ftl index 3059fd1b..8dc33bcc 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-researchAreaOf.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/propStatement-researchAreaOf.ftl @@ -14,15 +14,17 @@ <#local linkedIndividual> ${statement.personName!} - <#if statement.title?has_content > - <#local posnTitle = statement.title> - <#elseif statement.posnLabel?has_content> - <#local posnTitle = statement.posnLabel> - - <#if statement.org??> - <#local orgString> - ${statement.orgLabel!""} - + <#if !(statement.dateTimeEnd?has_content)> + <#if statement.title?has_content > + <#local posnTitle = statement.title> + <#elseif statement.posnLabel?has_content> + <#local posnTitle = statement.posnLabel> + + <#if statement.org??> + <#local orgString> + ${statement.orgLabel!""} + + <@s.join [ linkedIndividual, posnTitle!, orgString! ] /> From b5b2845c6d3a791e5be82bad3cb51df4d75a249e Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Thu, 7 Jan 2016 21:55:53 +0000 Subject: [PATCH 05/17] Selenium WebDriver test updates --- .../selenium/suites/AddNonPersonThings.java | 22 +- .../selenium/tests/AbstractSeleniumTest.java | 74 +--- .../tests/AbstractVIVOSeleniumTest.java | 95 +++++ .../vivo/selenium/tests/CreateCourses.java | 237 +++++++++++ .../selenium/tests/CreateOrganization.java | 99 ++--- .../vivo/selenium/tests/DeleteActivities.java | 51 +++ .../vivo/selenium/tests/DeleteCourses.java | 40 ++ .../vivo/selenium/tests/DeleteEquipment.java | 38 ++ .../vivo/selenium/tests/DeleteEvents.java | 86 ++++ .../vivo/selenium/tests/DeleteLocations.java | 370 ++++++++++++++++++ .../selenium/tests/DeleteOrganization.java | 88 +---- .../vivo/selenium/tests/DeleteResearch.java | 183 +++++++++ .../selenium/tests/RebuildSearchIndex.java | 16 +- 13 files changed, 1197 insertions(+), 202 deletions(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index 6541bce9..1b707849 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -6,17 +6,29 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite.SuiteClasses; import org.vivoweb.vivo.selenium.DriverFactory; import org.vivoweb.vivo.selenium.VIVOSuite; +import org.vivoweb.vivo.selenium.tests.CreateCourses; import org.vivoweb.vivo.selenium.tests.CreateOrganization; +import org.vivoweb.vivo.selenium.tests.DeleteActivities; +import org.vivoweb.vivo.selenium.tests.DeleteCourses; +import org.vivoweb.vivo.selenium.tests.DeleteEquipment; +import org.vivoweb.vivo.selenium.tests.DeleteEvents; import org.vivoweb.vivo.selenium.tests.DeleteOrganization; +import org.vivoweb.vivo.selenium.tests.DeleteResearch; import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; @RunWith(VIVOSuite.class) @SuiteClasses( - { - RebuildSearchIndex.class, - CreateOrganization.class, - DeleteOrganization.class - } + { + RebuildSearchIndex.class, + CreateOrganization.class, + CreateCourses.class, + DeleteActivities.class, + DeleteCourses.class, + DeleteEvents.class, + DeleteResearch.class, + DeleteEquipment.class, + DeleteOrganization.class + } ) public class AddNonPersonThings { @BeforeClass diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java index ea2d4578..222665b4 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java @@ -4,15 +4,10 @@ import org.apache.commons.lang3.StringUtils; import org.junit.After; import org.junit.Assert; import org.junit.Before; -import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; -import org.openqa.selenium.Keys; -import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.Select; import org.openqa.selenium.support.ui.WebDriverWait; @@ -45,23 +40,6 @@ public class AbstractSeleniumTest { driver.manage().deleteAllCookies(); } - protected void logIn(String email, String password) { - clickAndWait(By.linkText("Log in")); // clickAndWait,link=Log in - assertTitle("Log in to VIVO"); // aseertTitle,Log in to VIVO - - type(By.id("loginName"), email); // type,id=loginName,testAdmin@cornell.edu - type(By.id("loginPassword"), password); // type,id=loginPassword,Password - - clickAndWait(By.name("loginForm")); // clickAndWait,name=loginForm - assertTitle("VIVO"); // assertTitle,VIVO - } - - protected void logOut() { - Actions actions = new Actions(driver); - actions.moveToElement( driver.findElement(By.id("user-menu")) ).perform(); - driver.findElement(By.linkText("Log out")).click(); - } - protected void open(String urlPart) { SeleniumUtils.navigate(driver, urlPart); } @@ -74,52 +52,9 @@ public class AbstractSeleniumTest { protected void type(By by, String text) { WebElement element = driver.findElement(by); - element.click(); element.sendKeys(text); } - protected void typeAutoCompleteSelect(By by, String text, Keys... keys) { - WebElement element = driver.findElement(by); - - int count = 0; - WebElement autoComplete = null; - while (autoComplete == null) { - element.sendKeys(text); - - try { - Thread.sleep(500); - autoComplete = driver.findElement(By.className("ui-autocomplete")); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } catch (NoSuchElementException nse) { - element.clear(); -// for (int i = 0; i < text.length(); i++) { -// element.sendKeys(Keys.BACK_SPACE); -// } - - if (count > 10) { - throw nse; - } - } - - count++; - } - -// WebDriverWait wait = new WebDriverWait(driver, 5); -// WebElement autoComplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ui-autocomplete"))); - - if (keys != null && keys.length > 0) { - for (Keys key : keys) { - element.sendKeys(key); - } - } - - WebElement selected = driver.findElement(By.id("ui-active-menuitem")); - if (selected != null) { - selected.click(); - } - } - protected void typeTinyMCE(String text) { // tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.') @@ -134,8 +69,13 @@ public class AbstractSeleniumTest { Assert.assertNotNull(driver.findElement(by)); } - protected void verifyTextPresent(String text) { - Assert.assertTrue(driver.findElement(By.xpath("//body")).getText().contains(text)); + protected void verifyTextPresent(String... text) { + if (text != null) { + String bodyText = driver.findElement(By.xpath("//body")).getText(); + for (String str : text) { + Assert.assertTrue(bodyText.contains(str)); + } + } // Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java new file mode 100644 index 00000000..28331063 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -0,0 +1,95 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.apache.commons.lang3.StringUtils; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Alert; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.NoSuchElementException; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Select; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.vivoweb.vivo.selenium.DriverFactory; +import org.vivoweb.vivo.selenium.SeleniumUtils; + +public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { + protected void vivoAutoCompleteSelect(By by, String text, Keys... keys) { + WebElement element = driver.findElement(by); + + int count = 0; + WebElement autoComplete = null; + while (autoComplete == null) { + element.sendKeys(text); + + try { + Thread.sleep(500); + autoComplete = driver.findElement(By.className("ui-autocomplete")); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } catch (NoSuchElementException nse) { + element.clear(); +// for (int i = 0; i < text.length(); i++) { +// element.sendKeys(Keys.BACK_SPACE); +// } + + if (count > 10) { + throw nse; + } + } + + count++; + } + +// WebDriverWait wait = new WebDriverWait(driver, 5); +// WebElement autoComplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ui-autocomplete"))); + + if (keys != null && keys.length > 0) { + for (Keys key : keys) { + element.sendKeys(key); + } + } + + WebElement selected = driver.findElement(By.id("ui-active-menuitem")); + if (selected != null) { + selected.click(); + } + } + + protected void vivoDeleteIndividual() { + clickAndWait(By.linkText("Edit this individual")); + assertTitle("Individual Control Panel"); + + clickAndWait(By.xpath("//input[@value='Edit This Individual']")); + assertTitle("Individual Editing Form"); + + clickAndWait(By.name("_delete")); + assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + + assertTitle("VIVO Site Administration"); + } + + protected void vivoLogIn(String email, String password) { + clickAndWait(By.linkText("Log in")); // clickAndWait,link=Log in + assertTitle("Log in to VIVO"); // aseertTitle,Log in to VIVO + + type(By.id("loginName"), email); // type,id=loginName,testAdmin@cornell.edu + type(By.id("loginPassword"), password); // type,id=loginPassword,Password + + clickAndWait(By.name("loginForm")); // clickAndWait,name=loginForm + assertTitle("VIVO"); // assertTitle,VIVO + } + + protected void vivoLogOut() { + Actions actions = new Actions(driver); + actions.moveToElement( driver.findElement(By.id("user-menu")) ).perform(); + driver.findElement(By.linkText("Log out")).click(); + } + + +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java new file mode 100644 index 00000000..d62e8b13 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java @@ -0,0 +1,237 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class CreateCourses extends AbstractVIVOSeleniumTest { + @Test + public void createCourses() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Course (vivo)"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + verifyTextPresent("Create a new Course"); + + clickAndWait(By.linkText("Cancel")); + assertTitle("VIVO Site Administration"); + + selectByLabel(By.id("VClassURI"), "Course (vivo)"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + verifyTextPresent("Create a new Course"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Introduction to Primate Health"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//h3[@id='description']/a/img")); + assertTitle("Edit"); + verifyTextPresent("Add new entry for: description"); + + typeTinyMCE("Learn the basics about the general health of primates."); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.cssSelector("a.add-offeredBy > img.add-individual")); + assertTitle("Edit"); + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//h3[@id='prerequisiteFor']/a/img")); + assertTitle("Edit"); + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//h3[@id='geographicFocus']/a/img")); + assertTitle("Edit"); + + vivoAutoCompleteSelect(By.id("object"), "Afri"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//h3[@id='dateTimeInterval']/a")); + assertTitle("Edit"); + + verifyTextPresent("Create date time value for Introduction to Primate Health"); + + type(By.id("startField-year"), "2007"); + type(By.id("startField-month"), "9"); + type(By.id("startField-day"), "1"); + + type(By.id("endField-year"), "2007"); + type(By.id("endField-month"), "12"); + type(By.id("endField-day"), "15"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + + clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Health Check (Event)"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//h3[@id='hasSubjectArea']/a/img")); + assertTitle("Edit"); + + clickAndWait(By.id("showAddFormButton")); + + clickAndWait(By.linkText("Select or create a VIVO-defined concept.")); + assertTitle("Edit"); + + type(By.id("relatedIndLabel"), "Animal Health"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + clickAndWait(By.linkText("Return to Profile Page")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.cssSelector("a.add-BFO_0000050 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Health and Fitness (Invited Talk)"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("(//img[@alt='add'])[7]")); + assertTitle("Edit"); + + selectByLabel(By.id("typeOfNew"), "Seminar Series (vivo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Primate Health Talks"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + // Test publication tab entry + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + + clickAndWait(By.xpath("//h3[@id='presents']/a/img")); + assertTitle("Edit"); + + selectByLabel(By.id("typeOfNew"), "Webpage (bibo)"); + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + verifyTextPresent("Create "related documents" entry for Introduction to Primate Health"); + + type(By.id("label"), "http://primatehealthintro.cornell.edu"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.cssSelector("a.add-RO_0002234 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Happenings (Blog Posting)"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[6]")); + clickAndWait(By.xpath("//h3[@id='contactInformation']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: contact information"); + + typeTinyMCE("ME Tarzan at metarzan@primates.edu or 555-555-5553"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("(//h3[@id='RO_0001025']/a)[2]")); + assertTitle("Edit"); + + vivoAutoCompleteSelect(By.id("label"), "lib"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.cssSelector("a.add-RO_0001025 > img.add-individual")); + assertTitle("Edit"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Primate Memorial Building"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.xpath("//h3[@id='courseCredits']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("9"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.cssSelector("a.add-hasPrerequisite > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Introduction to Primates"); + + clickAndWait(By.id("submit")); + assertTitle("Introduction to Primate Health"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + verifyTextPresent( + "Introduction to Primate Health", + "Course", + "Learn the basics about the general health of primates.", + "Primate College of America", + "September 1, 2007 - December 15, 2007", + "ME Tarzan at metarzan@primates.edu or 555-555-5553", + "9"); + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyElementPresent(By.linkText("Primate Health Talks")); + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("Introduction to Primate Health")); + verifyElementPresent(By.linkText("Africa")); + verifyElementPresent(By.linkText("Primate Happenings")); + verifyElementPresent(By.linkText("http://primatehealthintro.cornell.edu")); + verifyElementPresent(By.linkText("Primate Memorial Building")); + verifyElementPresent(By.linkText("Liberia")); + verifyElementPresent(By.linkText("Introduction to Primates")); + + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java index 5b544f9c..61bbc96c 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java @@ -3,9 +3,8 @@ package org.vivoweb.vivo.selenium.tests; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.Keys; -import org.openqa.selenium.WebElement; -public class CreateOrganization extends AbstractSeleniumTest { +public class CreateOrganization extends AbstractVIVOSeleniumTest { @Test public void createOrganization() { deleteAllVisibleCookies(); @@ -13,7 +12,7 @@ public class CreateOrganization extends AbstractSeleniumTest { open("/"); assertTitle("VIVO"); - logIn("testAdmin@cornell.edu", "Password"); + vivoLogIn("testAdmin@cornell.edu", "Password"); clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -206,7 +205,7 @@ public class CreateOrganization extends AbstractSeleniumTest { clickAndWait(By.cssSelector("a.add-hasCollaborator > img.add-individual")); assertTitle("Edit"); - typeAutoCompleteSelect(By.id("object"), "Primate His", Keys.ARROW_DOWN); + vivoAutoCompleteSelect(By.id("object"), "Primate His", Keys.ARROW_DOWN); clickAndWait(By.id("submit")); assertTitle("Primate College of America"); @@ -264,7 +263,7 @@ public class CreateOrganization extends AbstractSeleniumTest { clickAndWait(By.cssSelector("a.add-RO_0001025 > img.add-individual")); assertTitle("Edit"); - typeAutoCompleteSelect(By.id("object"), "northern Afr", Keys.ARROW_DOWN); + vivoAutoCompleteSelect(By.id("object"), "northern Afr", Keys.ARROW_DOWN); clickAndWait(By.id("submit")); assertTitle("Primate College of America"); @@ -389,7 +388,7 @@ public class CreateOrganization extends AbstractSeleniumTest { clickAndWait(By.cssSelector("#researchGroup > article.property > #RO_0000053 > a.add-RO_0000053 > img.add-individual")); assertTitle("Edit"); - typeAutoCompleteSelect(By.id("grant"), "primate hab", Keys.ARROW_DOWN); + vivoAutoCompleteSelect(By.id("grant"), "primate hab", Keys.ARROW_DOWN); clickAndWait(By.cssSelector("input.submit")); assertTitle("Primate College of America"); @@ -447,7 +446,7 @@ public class CreateOrganization extends AbstractSeleniumTest { clickAndWait(By.cssSelector("a.add-governingAuthorityFor > img.add-individual")); assertTitle("Edit"); - typeAutoCompleteSelect(By.id("object"), "primate colleges of the wor", Keys.ARROW_DOWN); + vivoAutoCompleteSelect(By.id("object"), "primate colleges of the wor", Keys.ARROW_DOWN); clickAndWait(By.id("submit")); assertTitle("Primate College of America"); @@ -455,34 +454,37 @@ public class CreateOrganization extends AbstractSeleniumTest { // Verify everything entered is displaying properly clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[2]")); - verifyTextPresent("PCoA"); - verifyTextPresent("1959 -"); + verifyTextPresent( + "PCoA", + "1959 -" + ); verifyElementPresent(By.linkText("B.S. Bachelor of Science")); verifyElementPresent(By.linkText("Primate Student of the Year")); verifyElementPresent(By.linkText("Best Primate College")); clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[4]")); - verifyTextPresent("faculty administrative position"); + verifyTextPresent( + "faculty administrative position", + "Person, Polly, Dr. 1999 -", + "Primates-r-us Founder 2010 -", + "Primate Colleges of the World Member 2009 -", + "Primate Heart Health Founder 2010 -", + "New Primate Students 2003 - 2006", + "Primates in the Wild 1997 -" + ); verifyElementPresent(By.linkText("Person, Polly")); - verifyTextPresent("Person, Polly, Dr. 1999 -"); verifyElementPresent(By.linkText("Primate History Library")); verifyElementPresent(By.linkText("Primate Research Laboratory")); verifyElementPresent(By.linkText("Primates-r-us")); - verifyTextPresent("Primates-r-us Founder 2010 -"); verifyElementPresent(By.linkText("Primate Colleges of the World")); - verifyTextPresent("Primate Colleges of the World Member 2009 -"); verifyElementPresent(By.linkText("Primate Heart Health")); - verifyTextPresent("Primate Heart Health Founder 2010 -"); verifyElementPresent(By.linkText("New Primate Students")); - verifyTextPresent("New Primate Students 2003 - 2006"); verifyElementPresent(By.linkText("Primates in the Wild")); - verifyTextPresent("Primates in the Wild 1997 -"); clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[6]")); + verifyTextPresent("invited talk", "Primate Health and Fitness, Organizer 2008"); verifyElementPresent(By.linkText("Primate Info")); - verifyTextPresent("invited talk"); verifyElementPresent(By.linkText("Primate Health and Fitness")); - verifyTextPresent("Primate Health and Fitness, Organizer 2008"); verifyElementPresent(By.linkText("Primate Happenings")); verifyElementPresent(By.linkText("USA222333444555")); @@ -493,73 +495,76 @@ public class CreateOrganization extends AbstractSeleniumTest { verifyTextPresent("Gorillas"); clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[10]")); + verifyTextPresent("Primate Health Check Sponsor 2008 - 2010"); verifyElementPresent(By.linkText("Gorilla Moving Company")); verifyElementPresent(By.linkText("Primate Health Check")); - verifyTextPresent("Primate Health Check Sponsor 2008 - 2010"); verifyElementPresent(By.linkText("Portable Primate Habitat")); verifyElementPresent(By.linkText("Introduction to Primates")); clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[12]")); - verifyTextPresent("555-555-5555"); - verifyTextPresent("555-555-5554"); - verifyTextPresent("info@primates.edu"); - verifyTextPresent("1234 Northern African Nation"); - verifyTextPresent("Morocco City"); - verifyTextPresent("1234567890"); - verifyTextPresent("Morocco"); + verifyTextPresent( + "555-555-5555", + "555-555-5554", + "info@primates.edu", + "1234 Northern African Nation", + "Morocco City", + "1234567890", + "Morocco"); verifyElementPresent(By.linkText("northern Africa")); verifyElementPresent(By.linkText("Primate College of New York")); verifyElementPresent(By.linkText("Primate University of America")); verifyElementPresent(By.linkText("Primate Colleges of the World")); clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[14]")); - verifyTextPresent("PCoA"); - verifyTextPresent("1959 -"); + verifyTextPresent( + "PCoA", + "1959 -", + "faculty administrative position", + "Person, Polly, Dr. 1999 -", + "Primates-r-us Founder 2010 -", + "Primate Colleges of the World Member 2009 -", + "Primate Heart Health Founder 2010 -", + "New Primate Students 2003 - 2006", + "Primates in the Wild 1997 -", + "invited talk", + "Primate Health and Fitness, Organizer 2008", + "Gorillas", + "Primate Health Check Sponsor 2008 - 2010", + "555-555-5555", + "555-555-5554", + "info@primates.edu", + "1234 Northern African Nation", + "Morocco City", + "1234567890", + "Morocco" + ); verifyElementPresent(By.linkText("B.S. Bachelor of Science")); verifyElementPresent(By.linkText("Primate Student of the Year")); verifyElementPresent(By.linkText("Best Primate College")); - verifyTextPresent("faculty administrative position"); verifyElementPresent(By.linkText("Person, Polly")); - verifyTextPresent("Person, Polly, Dr. 1999 -"); verifyElementPresent(By.linkText("Primate History Library")); verifyElementPresent(By.linkText("Primate Research Laboratory")); verifyElementPresent(By.linkText("Primates-r-us")); - verifyTextPresent("Primates-r-us Founder 2010 -"); verifyElementPresent(By.linkText("Primate Colleges of the World")); - verifyTextPresent("Primate Colleges of the World Member 2009 -"); verifyElementPresent(By.linkText("Primate Heart Health")); - verifyTextPresent("Primate Heart Health Founder 2010 -"); verifyElementPresent(By.linkText("New Primate Students")); - verifyTextPresent("New Primate Students 2003 - 2006"); verifyElementPresent(By.linkText("Primates in the Wild")); - verifyTextPresent("Primates in the Wild 1997 -"); verifyElementPresent(By.linkText("Primate Info")); - verifyTextPresent("invited talk"); verifyElementPresent(By.linkText("Primate Health and Fitness")); - verifyTextPresent("Primate Health and Fitness, Organizer 2008"); verifyElementPresent(By.linkText("Primate Happenings")); verifyElementPresent(By.linkText("USA222333444555")); verifyElementPresent(By.linkText("Primate Habitat Research Grant")); verifyElementPresent(By.linkText("Primate Survival Planning Grant")); verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); - verifyTextPresent("Gorillas"); verifyElementPresent(By.linkText("Gorilla Moving Company")); verifyElementPresent(By.linkText("Primate Health Check")); - verifyTextPresent("Primate Health Check Sponsor 2008 - 2010"); verifyElementPresent(By.linkText("Portable Primate Habitat")); verifyElementPresent(By.linkText("Introduction to Primates")); - verifyTextPresent("555-555-5555"); - verifyTextPresent("555-555-5554"); - verifyTextPresent("info@primates.edu"); - verifyTextPresent("1234 Northern African Nation"); - verifyTextPresent("Morocco City"); - verifyTextPresent("1234567890"); - verifyTextPresent("Morocco"); verifyElementPresent(By.linkText("northern Africa")); verifyElementPresent(By.linkText("Primate College of New York")); verifyElementPresent(By.linkText("Primate University of America")); verifyElementPresent(By.linkText("Primate Colleges of the World")); - logOut(); + vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java new file mode 100644 index 00000000..922e5621 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java @@ -0,0 +1,51 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteActivities extends AbstractVIVOSeleniumTest { + @Test + public void deleteActivities() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Project")); + assertTitle("Project"); + + clickAndWait(By.linkText("Human and Ape Brain Comparison")); + assertTitle("Human and Ape Brain Comparison"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Service")); + assertTitle("Service"); + + clickAndWait(By.linkText("Gorilla Moving Company")); + assertTitle("Gorilla Moving Company"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Service")); + assertTitle("Service"); + + clickAndWait(By.linkText("Primate Heart Health")); + assertTitle("Primate Heart Health"); + + vivoDeleteIndividual(); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java new file mode 100644 index 00000000..2a6800cd --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java @@ -0,0 +1,40 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteCourses extends AbstractVIVOSeleniumTest { + @Test + public void deleteCourses() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); +/* + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Course")); + assertTitle("Course"); + + clickAndWait(By.linkText("Introduction to Primate Health")); + assertTitle("Introduction to Primate Health"); + + vivoDeleteIndividual(); +*/ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Course")); + assertTitle("Course"); + + clickAndWait(By.linkText("Introduction to Primates")); + assertTitle("Introduction to Primates"); + + vivoDeleteIndividual(); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java new file mode 100644 index 00000000..c53e3694 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java @@ -0,0 +1,38 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteEquipment extends AbstractVIVOSeleniumTest { + @Test + public void deleteEquipment() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Equipment")); + assertTitle("Equipment"); + + clickAndWait(By.linkText("Portable Primate Habitat")); + assertTitle("Portable Primate Habitat"); + + vivoDeleteIndividual(); +/* + clickAndWait(By.linkText("Equipment")); + assertTitle("Equipment"); + + clickAndWait(By.linkText("Primate Feeder")); + assertTitle("Primate Feeder"); + + vivoDeleteIndividual(); +*/ + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java new file mode 100644 index 00000000..a0cba0de --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java @@ -0,0 +1,86 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteEvents extends AbstractVIVOSeleniumTest { + @Test + public void deleteEvents() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Event")); + assertTitle("Event"); + + clickAndWait(By.linkText("New Primate Students")); + assertTitle("New Primate Students"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Event")); + assertTitle("Event"); + + clickAndWait(By.linkText("Primate Health and Fitness")); + assertTitle("Primate Health and Fitness"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Event")); + assertTitle("Event"); + + clickAndWait(By.linkText("Primate Health Check")); + assertTitle("Primate Health Check"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Event")); + assertTitle("Event"); +/* + clickAndWait(By.linkText("Primate Health Conference")); + assertTitle("Primate Health Conference"); + + vivoDeleteIndividual(); +*/ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Event")); + assertTitle("Event"); + + clickAndWait(By.linkText("Primates in the Wild")); + assertTitle("Primates in the Wild"); + + vivoDeleteIndividual(); +/* + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Seminar Series")); + assertTitle("Seminar Series"); + + clickAndWait(By.linkText("Primate Health Talks")); + assertTitle("Primate Health Talks"); + + vivoDeleteIndividual(); +*/ + // Where is Introduction to Primates?? + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java new file mode 100644 index 00000000..d0acc385 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java @@ -0,0 +1,370 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteLocations extends AbstractVIVOSeleniumTest { + @Test + public void deleteLocations() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + vivoLogOut(); + } +} +/* + + + clickAndWait + link=Building + + + + assertTitle + Building + + + + clickAndWait + link=Jane Memorial Building + + + + assertTitle + Jane Memorial Building + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value="Edit This Individual"] + + + + assertTitle + Individual Editing Form + + + + clickAndWait + _delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + clickAndWait + link=Building + + + + assertTitle + Building + + + + clickAndWait + link=Primate Memorial Building + + + + assertTitle + Primate Memorial Building + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Facility + + + + assertTitle + Facility + + + + clickAndWait + link=Lab Admin Office + + + + assertTitle + Lab Admin Office + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Facility + + + + assertTitle + Facility + + + + clickAndWait + link=Primate Research Lab Room 123 + + + + assertTitle + Primate Research Lab Room 123 + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + clickAndWait + link=Facility + + + + assertTitle + Facility + + + + clickAndWait + link=State Fair Park + + + + assertTitle + State Fair Park + + + + clickAndWait + link=Edit this individual + + + + assertTitle + Individual Control Panel + + + + clickAndWait + //input[@value='Edit This Individual'] + + + + assertTitle + Individual Editing Form + + + + click + name=_delete + + + + assertConfirmation + Are you SURE you want to delete this individual? If in doubt, CANCEL. + + + + waitForPageToLoad + 5000 + + + + assertTitle + VIVO Site Administration + + + + clickAndWait + link=Index + + + + assertTitle + Index of Contents + + + + */ \ No newline at end of file diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java index 23b885cc..a9c9a786 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java @@ -3,7 +3,7 @@ package org.vivoweb.vivo.selenium.tests; import org.junit.Test; import org.openqa.selenium.By; -public class DeleteOrganization extends AbstractSeleniumTest { +public class DeleteOrganization extends AbstractVIVOSeleniumTest { @Test public void deleteOrganization() { deleteAllVisibleCookies(); @@ -11,7 +11,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { open("/"); assertTitle("VIVO"); - logIn("testAdmin@cornell.edu", "Password"); + vivoLogIn("testAdmin@cornell.edu", "Password"); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -22,16 +22,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primate College of America")); assertTitle("Primate College of America"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); - - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); - - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - - assertTitle("VIVO Site Administration"); + vivoDeleteIndividual(); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -42,16 +33,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primate College of New York")); assertTitle("Primate College of New York"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); - - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); - - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - - assertTitle("VIVO Site Administration"); + vivoDeleteIndividual(); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -62,16 +44,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primate Colleges of the World")); assertTitle("Primate Colleges of the World"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); - - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); - - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - - assertTitle("VIVO Site Administration"); + vivoDeleteIndividual(); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -82,16 +55,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primate History Library")); assertTitle("Primate History Library"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); - - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); - - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - - assertTitle("VIVO Site Administration"); + vivoDeleteIndividual(); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -102,16 +66,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primate Research Laboratory")); assertTitle("Primate Research Laboratory"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); - - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); - - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - - assertTitle("VIVO Site Administration"); + vivoDeleteIndividual(); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -122,16 +77,7 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primate University of America")); assertTitle("Primate University of America"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); - - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); - - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); - - assertTitle("VIVO Site Administration"); + vivoDeleteIndividual(); clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -142,17 +88,19 @@ public class DeleteOrganization extends AbstractSeleniumTest { clickAndWait(By.linkText("Primates-r-us")); assertTitle("Primates-r-us"); - clickAndWait(By.linkText("Edit this individual")); - assertTitle("Individual Control Panel"); + vivoDeleteIndividual(); - clickAndWait(By.xpath("//input[@value='Edit This Individual']")); - assertTitle("Individual Editing Form"); + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); - clickAndWait(By.name("_delete")); - assertConfirmation("Are you SURE you want to delete this individual? If in doubt, CANCEL."); + clickAndWait(By.linkText("Person")); + assertTitle("Person"); - assertTitle("VIVO Site Administration"); + clickAndWait(By.linkText("Person, Polly")); + assertTitle("Person, Polly"); - logOut(); + vivoDeleteIndividual(); + + vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java new file mode 100644 index 00000000..4b923d88 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java @@ -0,0 +1,183 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class DeleteResearch extends AbstractVIVOSeleniumTest { + @Test + public void deleteResearch() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Article")); + assertTitle("Article"); + + clickAndWait(By.linkText("Primate Happenings")); + assertTitle("Primate Happenings"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Award or Honor")); + assertTitle("Award or Honor"); + + clickAndWait(By.linkText("Best Primate College")); + assertTitle("Best Primate College"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Award or Honor")); + assertTitle("Award or Honor"); + + clickAndWait(By.linkText("Primate Student of the Year")); + assertTitle("Primate Student of the Year"); + + vivoDeleteIndividual(); +/* + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Book")); + assertTitle("Book"); + + clickAndWait(By.linkText("PHC Proceedings")); + assertTitle("PHC Proceedings"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Animal Health")); + assertTitle("Animal Health"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Ape Health")); + assertTitle("Ape Health"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Elderly Care")); + assertTitle("Elderly Care"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Primate Diet")); + assertTitle("Primate Diet"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Primate Health")); + assertTitle("Primate Health"); + + vivoDeleteIndividual(); +*/ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Database")); + assertTitle("Database"); + + clickAndWait(By.linkText("Primate Info")); + assertTitle("Primate Info"); + + vivoDeleteIndividual(); +/* + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Grant")); + assertTitle("Grant"); + + clickAndWait(By.linkText("Primate Elderly Care")); + assertTitle("Primate Elderly Care"); + + vivoDeleteIndividual(); +*/ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Grant")); + assertTitle("Grant"); + + clickAndWait(By.linkText("Primate Habitat Research Grant")); + assertTitle("Primate Habitat Research Grant"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Grant")); + assertTitle("Grant"); + + clickAndWait(By.linkText("Primate Survival Planning Grant")); + assertTitle("Primate Survival Planning Grant"); + + vivoDeleteIndividual(); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Patent")); + assertTitle("Patent"); + + clickAndWait(By.linkText("USA222333444555")); + assertTitle("USA222333444555"); + + vivoDeleteIndividual(); +/* + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Webpage")); + assertTitle("Webpage"); + + clickAndWait(By.linkText("http://primatehealthintro.cornell.edu")); + assertTitle("http://primatehealthintro.cornell.edu"); + + vivoDeleteIndividual(); +*/ + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java index ce4ece4c..81224146 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java @@ -1,19 +1,9 @@ package org.vivoweb.vivo.selenium.tests; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.interactions.Actions; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; -import org.vivoweb.vivo.selenium.DriverFactory; -import org.vivoweb.vivo.selenium.SeleniumUtils; -public class RebuildSearchIndex extends AbstractSeleniumTest { +public class RebuildSearchIndex extends AbstractVIVOSeleniumTest { @Test public void rebuildSearchIndexTest() { deleteAllVisibleCookies(); @@ -21,7 +11,7 @@ public class RebuildSearchIndex extends AbstractSeleniumTest { open("/"); assertTitle("VIVO"); // assertTitle,VIVO - logIn("testAdmin@cornell.edu", "Password"); + vivoLogIn("testAdmin@cornell.edu", "Password"); clickAndWait(By.linkText("Site Admin")); // clickAndWait,link=Site Admin assertTitle("VIVO Site Administration"); // assertTitle,VIVO Site Administration @@ -34,6 +24,6 @@ public class RebuildSearchIndex extends AbstractSeleniumTest { waitForTextPresent("Reset the search index and re-populate it."); // waitForTextPresent,Reset the search index and re-populate it. - logOut(); // clickAndWait,Log out + vivoLogOut(); // clickAndWait,Log out } } From c62844c4c139aace25479f4bb7a5652ee872681e Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 8 Jan 2016 18:04:57 +0000 Subject: [PATCH 06/17] Updates to the Selenium WebDriver tests. --- .../tests/AbstractVIVOSeleniumTest.java | 10 ++++++++++ .../vivo/selenium/tests/CreateCourses.java | 19 ++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java index 28331063..cb5b1b12 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -33,6 +33,7 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { } catch (InterruptedException e) { throw new RuntimeException(e); } catch (NoSuchElementException nse) { + System.out.println("Failure number: " + count); element.clear(); // for (int i = 0; i < text.length(); i++) { // element.sendKeys(Keys.BACK_SPACE); @@ -53,6 +54,15 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { for (Keys key : keys) { element.sendKeys(key); } + } else { + // If no key presses specified, use default action to select the first entry in the autocomplete + element.sendKeys(Keys.ARROW_DOWN); + } + + try { + Thread.sleep(250); + } catch (InterruptedException e) { + throw new RuntimeException(e); } WebElement selected = driver.findElement(By.id("ui-active-menuitem")); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java index d62e8b13..3dcde579 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java @@ -2,6 +2,7 @@ package org.vivoweb.vivo.selenium.tests; import org.junit.Test; import org.openqa.selenium.By; +import org.openqa.selenium.Keys; public class CreateCourses extends AbstractVIVOSeleniumTest { @Test @@ -68,7 +69,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.xpath("//h3[@id='geographicFocus']/a/img")); assertTitle("Edit"); - vivoAutoCompleteSelect(By.id("object"), "Afri"); + vivoAutoCompleteSelect(By.id("object"), "Afri", Keys.ARROW_DOWN); clickAndWait(By.id("submit")); assertTitle("Introduction to Primate Health"); @@ -89,7 +90,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.id("submit")); assertTitle("Introduction to Primate Health"); - clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[@groupname='viewAll']")); clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); assertTitle("Edit"); @@ -104,7 +105,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.id("showAddFormButton")); - clickAndWait(By.linkText("Select or create a VIVO-defined concept.")); + clickAndWait(By.linkText("Select or create a VIVO-defined concept. ")); assertTitle("Edit"); type(By.id("relatedIndLabel"), "Animal Health"); @@ -137,7 +138,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { assertTitle("Introduction to Primate Health"); // Test publication tab entry - clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[@groupname='publications']")); clickAndWait(By.xpath("//h3[@id='presents']/a/img")); assertTitle("Edit"); @@ -148,7 +149,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.id("offerCreate")); assertTitle("Edit"); - verifyTextPresent("Create "related documents" entry for Introduction to Primate Health"); + verifyTextPresent("Create \"related documents\" entry for Introduction to Primate Health"); type(By.id("label"), "http://primatehealthintro.cornell.edu"); @@ -163,7 +164,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.id("submit")); assertTitle("Introduction to Primate Health"); - clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[6]")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[@groupname='contact']")); clickAndWait(By.xpath("//h3[@id='contactInformation']/a/img")); assertTitle("Edit"); @@ -177,7 +178,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.xpath("(//h3[@id='RO_0001025']/a)[2]")); assertTitle("Edit"); - vivoAutoCompleteSelect(By.id("label"), "lib"); + vivoAutoCompleteSelect(By.id("object"), "lib", Keys.ARROW_DOWN); clickAndWait(By.id("submit")); assertTitle("Introduction to Primate Health"); @@ -193,7 +194,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.id("submit")); assertTitle("Introduction to Primate Health"); - clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[@groupname='viewAll']")); clickAndWait(By.xpath("//h3[@id='courseCredits']/a/img")); assertTitle("Edit"); @@ -210,7 +211,7 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { clickAndWait(By.id("submit")); assertTitle("Introduction to Primate Health"); - clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[@groupname='viewAll']")); verifyTextPresent( "Introduction to Primate Health", "Course", From 98a52c1306dae23b5869096ac1f037427489f4be Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 15 Jan 2016 16:49:33 +0000 Subject: [PATCH 07/17] Updates to the Selenium WebDriver tests. --- .../selenium/suites/AddNonPersonThings.java | 6 + .../selenium/tests/AbstractSeleniumTest.java | 6 + .../tests/AbstractVIVOSeleniumTest.java | 37 ++- .../vivo/selenium/tests/CreateActivity.java | 211 +++++++++++++++++ .../vivo/selenium/tests/CreateEvent.java | 220 ++++++++++++++++++ .../vivo/selenium/tests/DeleteCourses.java | 6 +- .../vivo/selenium/tests/DeleteEvents.java | 10 +- .../vivo/selenium/tests/DeleteLocations.java | 69 +----- .../vivo/selenium/tests/DeleteResearch.java | 63 ++--- 9 files changed, 517 insertions(+), 111 deletions(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index 1b707849..7493f676 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -6,12 +6,15 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite.SuiteClasses; import org.vivoweb.vivo.selenium.DriverFactory; import org.vivoweb.vivo.selenium.VIVOSuite; +import org.vivoweb.vivo.selenium.tests.CreateActivity; import org.vivoweb.vivo.selenium.tests.CreateCourses; +import org.vivoweb.vivo.selenium.tests.CreateEvent; import org.vivoweb.vivo.selenium.tests.CreateOrganization; import org.vivoweb.vivo.selenium.tests.DeleteActivities; import org.vivoweb.vivo.selenium.tests.DeleteCourses; import org.vivoweb.vivo.selenium.tests.DeleteEquipment; import org.vivoweb.vivo.selenium.tests.DeleteEvents; +import org.vivoweb.vivo.selenium.tests.DeleteLocations; import org.vivoweb.vivo.selenium.tests.DeleteOrganization; import org.vivoweb.vivo.selenium.tests.DeleteResearch; import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; @@ -22,8 +25,11 @@ import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; RebuildSearchIndex.class, CreateOrganization.class, CreateCourses.class, + CreateActivity.class, + CreateEvent.class, DeleteActivities.class, DeleteCourses.class, + DeleteLocations.class, DeleteEvents.class, DeleteResearch.class, DeleteEquipment.class, diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java index 222665b4..eb8a7f19 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java @@ -44,6 +44,12 @@ public class AbstractSeleniumTest { SeleniumUtils.navigate(driver, urlPart); } + protected void pause(long timeout) { + try { + Thread.sleep(timeout); + } catch (InterruptedException e) { + } + } protected void selectByLabel(By by, String label) { Select select = new Select(driver.findElement(by)); select.selectByVisibleText(label); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java index cb5b1b12..66db3ca4 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -34,21 +34,21 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { throw new RuntimeException(e); } catch (NoSuchElementException nse) { System.out.println("Failure number: " + count); - element.clear(); -// for (int i = 0; i < text.length(); i++) { -// element.sendKeys(Keys.BACK_SPACE); -// } - - if (count > 10) { - throw nse; - } } - count++; - } + if (autoComplete != null && !autoComplete.isDisplayed()) { + autoComplete = null; + } -// WebDriverWait wait = new WebDriverWait(driver, 5); -// WebElement autoComplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ui-autocomplete"))); + if (autoComplete == null) { + element.clear(); + if (count > 10) { + throw new NoSuchElementException("Auto complete is not visible"); + } + + count++; + } + } if (keys != null && keys.length > 0) { for (Keys key : keys) { @@ -71,6 +71,19 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { } } + protected void vivoDeleteIndividual(String category, String individual) { + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText(category)); + assertTitle(category); + + clickAndWait(By.linkText(individual)); + assertTitle(individual); + + vivoDeleteIndividual(); + } + protected void vivoDeleteIndividual() { clickAndWait(By.linkText("Edit this individual")); assertTitle("Individual Control Panel"); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java new file mode 100644 index 00000000..ae58b5b4 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java @@ -0,0 +1,211 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; + +public class CreateActivity extends AbstractVIVOSeleniumTest { + @Test + public void createActivity() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Grant (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + verifyTextPresent("Create a new Grant"); + + clickAndWait(By.linkText("Cancel")); + assertTitle("VIVO Site Administration"); + + selectByLabel(By.id("VClassURI"), "Grant (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + verifyTextPresent("Create a new Grant"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Primate Elderly Care"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[@groupname='viewAll']")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.cssSelector("a.add-relates > img.add-individual")); + assertTitle("Edit"); + + vivoAutoCompleteSelect(By.id("organization"), "primate colleges of the wor", Keys.ARROW_DOWN); + + clickAndWait(By.cssSelector("input.submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.cssSelector("a.add-assignedBy > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + selectByLabel(By.id("objectVar"), "Primate Research Laboratory (Laboratory)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='abstract']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: abstract"); + typeTinyMCE("Purpose of grant is to determine the appropriate environment, physical activity, and diet for primates as they age."); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='grantSubcontractedThrough']/a")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Colleges of the World (Consortium)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='totalAwardAmount']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: total award amount"); + typeTinyMCE("$1,234,567"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='grantDirectCosts']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("$999,999"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='sponsorAwardId']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("1234-5678"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='geographicFocus']/a/img")); + assertTitle("Edit"); + + vivoAutoCompleteSelect(By.id("object"), "Afri", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='dateTimeInterval']/a/img")); + assertTitle("Edit"); + + type(By.id("startField-year"), "2010"); + type(By.id("startField-month"), "9"); + type(By.id("startField-day"), "1"); + + type(By.id("endField-year"), "2012"); + type(By.id("endField-month"), "8"); + type(By.id("endField-day"), "31"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='localAwardId']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: local award ID"); + typeTinyMCE("P999-1234"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.cssSelector("a.add-fundingVehicleFor > img.add-individual")); + assertTitle("Edit"); + + vivoAutoCompleteSelect(By.id("object"), "primate health chec", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.xpath("//h3[@id='hasSubjectArea']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Manage Concepts"); + + clickAndWait(By.id("showAddFormButton")); + clickAndWait(By.linkText("Select or create a VIVO-defined concept. ")); + + assertTitle("Edit"); + + type(By.id("relatedIndLabel"), "Elderly Care"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + clickAndWait(By.linkText("Return to Profile Page")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Habitat Research Grant"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.cssSelector("a.add-BFO_0000050 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Survival Planning Grant"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + clickAndWait(By.cssSelector("a.add-supportedInformationResource")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Info (Database)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Elderly Care"); + + verifyTextPresent( + "Primate Elderly Care", + "Grant", + "Purpose of grant is to determine the appropriate environment, physical activity, and diet for primates as they age.", + "September 1, 2010 - August 31, 2012", + "$1,234,567", + "$999,999", + "1234-5678", + "P999-1234" + + ); + + verifyElementPresent(By.linkText("Elderly Care")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyElementPresent(By.linkText("Africa")); + verifyElementPresent(By.linkText("Primate Habitat Research Grant")); + verifyElementPresent(By.linkText("Primate Survival Planning Grant")); + verifyElementPresent(By.linkText("Primate Info")); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java new file mode 100644 index 00000000..ea499ec7 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java @@ -0,0 +1,220 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; + +public class CreateEvent extends AbstractVIVOSeleniumTest { + @Test + public void createEvent() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Conference (bibo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Conference"); + + clickAndWait(By.linkText("Cancel")); + assertTitle("VIVO Site Administration"); + + selectByLabel(By.id("VClassURI"), "Conference (bibo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Conference"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Primate Health Conference"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + clickAndWait(By.xpath("//h3[@id='description']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: description"); + typeTinyMCE("First annual conference for those interested in the general health of primates."); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//h3[@id='hasProceedings']/a/img")); + assertTitle("Edit"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "PHC Proceedings"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + // Wait for index to catch up + pause(4000); + + clickAndWait(By.linkText("Index")); + clickAndWait(By.linkText("Conference")); + assertTitle("Conference"); + + clickAndWait(By.linkText("Primate Health Conference")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//h3[@id='contactInformation']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: contact information"); + typeTinyMCE("info@primateconf.org"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//h3[@id='geographicFocus']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + vivoAutoCompleteSelect(By.id("object"), "Kenya", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("(//h3[@id='RO_0001025']/a)[2]")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + verifyTextPresent("Geographic Location Name"); + + vivoAutoCompleteSelect(By.id("object"), "Cong", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.cssSelector("a.add-RO_0001025 > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + selectByLabel(By.id("typeOfNew"), "Facility (vivo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "State Fair Park"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//h3[@id='dateTimeInterval']/a/img")); + assertTitle("Edit"); + + type(By.id("startField-year"), "2011"); + type(By.id("startField-month"), "1"); + type(By.id("startField-day"), "5"); + + type(By.id("endField-year"), "2011"); + type(By.id("endField-month"), "1"); + type(By.id("endField-day"), "9"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//h3[@id='presents']/a/img")); + assertTitle("Edit"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + selectByLabel(By.id("objectVar"), "Primate Health Check (Event)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.cssSelector("a.add-hasSubjectArea > img.add-individual")); + assertTitle("Edit"); + + clickAndWait(By.id("showAddFormButton")); + clickAndWait(By.linkText("Select or create a VIVO-defined concept. ")); + + assertTitle("Edit"); + vivoAutoCompleteSelect(By.id("relatedIndLabel"), "Anim", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + clickAndWait(By.linkText("Return to Profile Page")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("//h3[@id='abbreviation']/a/img")); + assertTitle("Edit"); + + typeTinyMCE("PrimHConf"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.cssSelector("a.add-BFO_0000050 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Health and Fitness (Invited Talk)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.xpath("(//img[@alt='add'])[6]")); + assertTitle("Edit"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + clickAndWait(By.cssSelector("a.add-RO_0002234 > img.add-individual")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Happenings (Blog Posting)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health Conference"); + + verifyTextPresent( + "Primate Health Conference", + "Conference", + "First annual conference for those interested in the general health of primates.", + "PrimHConf", + "January 5, 2011 - January 9, 2011", + "info@primateconf.org" + ); + + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyElementPresent(By.linkText("Primate Health Talks")); + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("PHC Proceedings")); + verifyElementPresent(By.linkText("Kenya")); + verifyElementPresent(By.linkText("Primate Happenings")); + verifyElementPresent(By.linkText("http://primatehealthintro.cornell.edu")); + verifyElementPresent(By.linkText("State Fair Park")); + verifyElementPresent(By.linkText("Congo")); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java index 2a6800cd..ca6d48d8 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java @@ -12,7 +12,8 @@ public class DeleteCourses extends AbstractVIVOSeleniumTest { assertTitle("VIVO"); vivoLogIn("testAdmin@cornell.edu", "Password"); -/* + + /* From CreateCourses */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -23,7 +24,8 @@ public class DeleteCourses extends AbstractVIVOSeleniumTest { assertTitle("Introduction to Primate Health"); vivoDeleteIndividual(); -*/ + /* */ + clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java index a0cba0de..8a0c2bd6 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java @@ -46,17 +46,18 @@ public class DeleteEvents extends AbstractVIVOSeleniumTest { vivoDeleteIndividual(); +/* From CreateEvent */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); clickAndWait(By.linkText("Event")); assertTitle("Event"); -/* + clickAndWait(By.linkText("Primate Health Conference")); assertTitle("Primate Health Conference"); vivoDeleteIndividual(); -*/ +/* */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -67,7 +68,8 @@ public class DeleteEvents extends AbstractVIVOSeleniumTest { assertTitle("Primates in the Wild"); vivoDeleteIndividual(); -/* + + /* From CreateCourses */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -78,7 +80,7 @@ public class DeleteEvents extends AbstractVIVOSeleniumTest { assertTitle("Primate Health Talks"); vivoDeleteIndividual(); -*/ + /* */ // Where is Introduction to Primates?? vivoLogOut(); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java index d0acc385..d15dc9ab 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java @@ -13,9 +13,13 @@ public class DeleteLocations extends AbstractVIVOSeleniumTest { vivoLogIn("testAdmin@cornell.edu", "Password"); +/* from CreateCourses */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); + vivoDeleteIndividual("Building", "Primate Memorial Building"); +/* */ + vivoLogOut(); } } @@ -86,71 +90,6 @@ public class DeleteLocations extends AbstractVIVOSeleniumTest { link=Index - - clickAndWait - link=Building - - - - assertTitle - Building - - - - clickAndWait - link=Primate Memorial Building - - - - assertTitle - Primate Memorial Building - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - assertTitle Index of Contents diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java index 4b923d88..06664f2b 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java @@ -45,7 +45,7 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("Primate Student of the Year"); vivoDeleteIndividual(); -/* +/* From CreateEvent */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -56,18 +56,8 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("PHC Proceedings"); vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - - clickAndWait(By.linkText("Animal Health")); - assertTitle("Animal Health"); - - vivoDeleteIndividual(); - +/* */ +/* clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -85,17 +75,6 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { clickAndWait(By.linkText("Concept")); assertTitle("Concept"); - clickAndWait(By.linkText("Elderly Care")); - assertTitle("Elderly Care"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - clickAndWait(By.linkText("Primate Diet")); assertTitle("Primate Diet"); @@ -112,6 +91,31 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { vivoDeleteIndividual(); */ + /* From CreateActivity */ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Elderly Care")); + assertTitle("Elderly Care"); + + vivoDeleteIndividual(); + /* */ + + /* From CreateCourses */ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + clickAndWait(By.linkText("Animal Health")); + assertTitle("Animal Health"); + + vivoDeleteIndividual(); + /* */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -122,7 +126,8 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("Primate Info"); vivoDeleteIndividual(); -/* + + /* Delete grant from createActivity */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -133,7 +138,8 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("Primate Elderly Care"); vivoDeleteIndividual(); -*/ + /* */ + clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -166,7 +172,8 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("USA222333444555"); vivoDeleteIndividual(); -/* + + /* From CreateCourses */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -177,7 +184,7 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("http://primatehealthintro.cornell.edu"); vivoDeleteIndividual(); -*/ + /* */ vivoLogOut(); } } From 0236f3c42db5e29ae82dee107ae32e7f44d905f9 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 15 Jan 2016 17:29:16 +0000 Subject: [PATCH 08/17] Updates to the Selenium WebDriver tests. --- .../org/vivoweb/vivo/selenium/tests/CreateEvent.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java index ea499ec7..53b38e05 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java @@ -67,16 +67,6 @@ public class CreateEvent extends AbstractVIVOSeleniumTest { clickAndWait(By.id("submit")); assertTitle("Primate Health Conference"); - // Wait for index to catch up - pause(4000); - - clickAndWait(By.linkText("Index")); - clickAndWait(By.linkText("Conference")); - assertTitle("Conference"); - - clickAndWait(By.linkText("Primate Health Conference")); - assertTitle("Primate Health Conference"); - clickAndWait(By.xpath("//h3[@id='contactInformation']/a/img")); assertTitle("Edit"); From 41a7ed36821aec56b15a33d5f10e246bdffc9db2 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 15 Jan 2016 20:23:27 +0000 Subject: [PATCH 09/17] Updates to the Selenium WebDriver tests. --- .../selenium/suites/AddNonPersonThings.java | 4 + .../tests/AbstractVIVOSeleniumTest.java | 4 +- .../vivo/selenium/tests/CreateEquipment.java | 131 ++++++++++++++++++ .../vivo/selenium/tests/CreateTopic.java | 94 +++++++++++++ .../vivo/selenium/tests/DeleteEquipment.java | 4 +- .../vivo/selenium/tests/DeleteResearch.java | 4 +- 6 files changed, 235 insertions(+), 6 deletions(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index 7493f676..1b753e36 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -8,8 +8,10 @@ import org.vivoweb.vivo.selenium.DriverFactory; import org.vivoweb.vivo.selenium.VIVOSuite; import org.vivoweb.vivo.selenium.tests.CreateActivity; import org.vivoweb.vivo.selenium.tests.CreateCourses; +import org.vivoweb.vivo.selenium.tests.CreateEquipment; import org.vivoweb.vivo.selenium.tests.CreateEvent; import org.vivoweb.vivo.selenium.tests.CreateOrganization; +import org.vivoweb.vivo.selenium.tests.CreateTopic; import org.vivoweb.vivo.selenium.tests.DeleteActivities; import org.vivoweb.vivo.selenium.tests.DeleteCourses; import org.vivoweb.vivo.selenium.tests.DeleteEquipment; @@ -27,6 +29,8 @@ import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; CreateCourses.class, CreateActivity.class, CreateEvent.class, + CreateTopic.class, + CreateEquipment.class, DeleteActivities.class, DeleteCourses.class, DeleteLocations.class, diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java index 66db3ca4..1e198c3b 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -28,7 +28,7 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { element.sendKeys(text); try { - Thread.sleep(500); + Thread.sleep(1000); autoComplete = driver.findElement(By.className("ui-autocomplete")); } catch (InterruptedException e) { throw new RuntimeException(e); @@ -42,7 +42,7 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { if (autoComplete == null) { element.clear(); - if (count > 10) { + if (count > 5) { throw new NoSuchElementException("Auto complete is not visible"); } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java new file mode 100644 index 00000000..7cb9e6ce --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java @@ -0,0 +1,131 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; + +public class CreateEquipment extends AbstractVIVOSeleniumTest { + @Test + public void createEquipment() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Equipment (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Equipment"); + + clickAndWait(By.linkText("Cancel")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Equipment (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Equipment"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Primate Feeder"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Feeder"); + + clickAndWait(By.xpath("//div[@id='wrapper-content']/ul/li[8]")); + + clickAndWait(By.xpath("//h3[@id='equipmentFor']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + selectByLabel(By.id("objectVar"), "Primate Research Laboratory (Laboratory)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Feeder"); + + clickAndWait(By.cssSelector("a.add-RO_0001025 > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + selectByLabel(By.id("typeOfNew"), "Facility (vivo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + verifyTextPresent("Create \"housed in facility\" entry for Primate Feeder"); + type(By.id("label"), "Primate Research Lab Room 123"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Feeder"); + + clickAndWait(By.xpath("//h3[@id='freetextKeyword']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("Add new entry for: keywords"); + + typeTinyMCE("Animal Diet"); + + clickAndWait(By.id("submit")); + + clickAndWait(By.linkText("Primate Research Lab Room 123")); + assertTitle("Primate Research Lab Room 123"); + + clickAndWait(By.xpath("(//img[@alt='add'])[3]")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Heart Health (Service)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Research Lab Room 123"); + + clickAndWait(By.xpath("(//img[@alt='add'])[4]")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate University of America (University)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Research Lab Room 123"); + + clickAndWait(By.xpath("(//img[@alt='add'])[5]")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Health Check (Event)"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Research Lab Room 123"); + + clickAndWait(By.cssSelector("a.add-BFO_0000050 > img.add-individual")); + assertTitle("Edit"); + + vivoAutoCompleteSelect(By.id("object"), "United State", Keys.ARROW_DOWN); + + clickAndWait(By.id("submit")); + assertTitle("Primate Research Lab Room 123"); + + verifyElementPresent(By.linkText("Primate Feeder")); + verifyElementPresent(By.linkText("Primate Heart Health")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyElementPresent(By.linkText("United States of America")); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java new file mode 100644 index 00000000..09023800 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java @@ -0,0 +1,94 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; + +public class CreateTopic extends AbstractVIVOSeleniumTest { + @Test + public void createTopic() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Concept (skos)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Concept"); + + clickAndWait(By.linkText("Cancel")); + assertTitle("VIVO Site Administration"); + + selectByLabel(By.id("VClassURI"), "Concept (skos)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Concept"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Primate Health"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health"); + + clickAndWait(By.cssSelector("li.nonSelectedGroupTab.clickable")); + + clickAndWait(By.xpath("//h3[@id='broader']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + selectByLabel(By.id("objectVar"), "Animal Health"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health"); + + clickAndWait(By.xpath("//h3[@id='narrower']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + verifyTextPresent("Create \"narrower concept\" entry for Primate Health"); + type(By.id("label"), "Primate Diet"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health"); + + clickAndWait(By.xpath("//h3[@id='related']/a/img")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + verifyTextPresent("Create \"related concept\" entry for Primate Health"); + type(By.id("label"), "Ape Health"); + + clickAndWait(By.id("submit")); + assertTitle("Primate Health"); + + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("Primate Diet")); + verifyElementPresent(By.linkText("Ape Health")); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java index c53e3694..88bdcfaa 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java @@ -23,7 +23,7 @@ public class DeleteEquipment extends AbstractVIVOSeleniumTest { assertTitle("Portable Primate Habitat"); vivoDeleteIndividual(); -/* +/* From CreateEquipment */ clickAndWait(By.linkText("Equipment")); assertTitle("Equipment"); @@ -31,7 +31,7 @@ public class DeleteEquipment extends AbstractVIVOSeleniumTest { assertTitle("Primate Feeder"); vivoDeleteIndividual(); -*/ +/* */ vivoLogOut(); } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java index 06664f2b..523538d2 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java @@ -57,7 +57,7 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { vivoDeleteIndividual(); /* */ -/* +/* From CreateTopic */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -90,7 +90,7 @@ public class DeleteResearch extends AbstractVIVOSeleniumTest { assertTitle("Primate Health"); vivoDeleteIndividual(); -*/ +/* */ /* From CreateActivity */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); From b66df2453d8dd586250fb99605f863306121aa56 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 15 Jan 2016 20:49:14 +0000 Subject: [PATCH 10/17] Updates to the Selenium WebDriver tests. --- .../selenium/suites/AddNonPersonThings.java | 2 + .../tests/AbstractVIVOSeleniumTest.java | 16 +-- .../vivo/selenium/tests/CreateLocation.java | 118 ++++++++++++++++++ .../vivo/selenium/tests/DeleteEquipment.java | 3 + .../vivo/selenium/tests/DeleteLocations.java | 65 +--------- 5 files changed, 137 insertions(+), 67 deletions(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index 1b753e36..cf53bf6d 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -10,6 +10,7 @@ import org.vivoweb.vivo.selenium.tests.CreateActivity; import org.vivoweb.vivo.selenium.tests.CreateCourses; import org.vivoweb.vivo.selenium.tests.CreateEquipment; import org.vivoweb.vivo.selenium.tests.CreateEvent; +import org.vivoweb.vivo.selenium.tests.CreateLocation; import org.vivoweb.vivo.selenium.tests.CreateOrganization; import org.vivoweb.vivo.selenium.tests.CreateTopic; import org.vivoweb.vivo.selenium.tests.DeleteActivities; @@ -31,6 +32,7 @@ import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; CreateEvent.class, CreateTopic.class, CreateEquipment.class, + CreateLocation.class, DeleteActivities.class, DeleteCourses.class, DeleteLocations.class, diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java index 1e198c3b..cf824fc5 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -28,21 +28,23 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { element.sendKeys(text); try { - Thread.sleep(1000); - autoComplete = driver.findElement(By.className("ui-autocomplete")); + int findElementCount = 0; + while (autoComplete == null && findElementCount < 6) { + Thread.sleep(250); + autoComplete = driver.findElement(By.className("ui-autocomplete")); + if (autoComplete != null && !autoComplete.isDisplayed()) { + autoComplete = null; + } + } } catch (InterruptedException e) { throw new RuntimeException(e); } catch (NoSuchElementException nse) { System.out.println("Failure number: " + count); } - if (autoComplete != null && !autoComplete.isDisplayed()) { - autoComplete = null; - } - if (autoComplete == null) { element.clear(); - if (count > 5) { + if (count > 3) { throw new NoSuchElementException("Auto complete is not visible"); } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java new file mode 100644 index 00000000..55f66520 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java @@ -0,0 +1,118 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; + +public class CreateLocation extends AbstractVIVOSeleniumTest { + @Test + public void createLocation() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + verifyTextPresent("Data Input"); + + selectByLabel(By.id("VClassURI"), "Building (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Building"); + + clickAndWait(By.linkText("Cancel")); + assertTitle("VIVO Site Administration"); + + selectByLabel(By.id("VClassURI"), "Building (vivo)"); + + clickAndWait(By.xpath("//input[@value='Add individual of this class']")); + assertTitle("Edit"); + + verifyTextPresent("Create a new Building"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + verifyTextPresent("Please enter a value in the Name field."); + + type(By.id("label"), "Jane Memorial Building"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + clickAndWait(By.cssSelector("a.add-BFO_0000051 > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("There are no entries in the system from which to select."); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + verifyTextPresent("Create \"rooms\" entry for Jane Memorial Building"); + type(By.id("label"), "Lab Admin Office"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + clickAndWait(By.cssSelector("a.add-BFO_0000050 > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + selectByLabel(By.id("typeOfNew"), "Geographic Location (vivo)"); + + clickAndWait(By.id("offerCreate")); + assertTitle("Edit"); + + type(By.id("label"), "Primate Quad"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + clickAndWait(By.cssSelector("a.add-RO_0001015 > img.add-individual")); + assertTitle("Edit"); + + verifyTextPresent("If you don't find the appropriate entry on the selection list above:"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + clickAndWait(By.xpath("(//img[@alt='add'])[3]")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Heart Health (Service)"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + clickAndWait(By.xpath("(//h3[@id='RO_0001015']/a)[3]")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate University of America (University)"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + clickAndWait(By.xpath("(//img[@alt='add'])[5]")); + assertTitle("Edit"); + + selectByLabel(By.id("objectVar"), "Primate Health Check (Event)"); + + clickAndWait(By.id("submit")); + assertTitle("Jane Memorial Building"); + + verifyElementPresent(By.linkText("Portable Primate Habitat")); + verifyElementPresent(By.linkText("Primate Heart Health")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyElementPresent(By.linkText("Lab Admin Office")); + verifyElementPresent(By.linkText("Primate Quad")); + + vivoLogOut(); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java index 88bdcfaa..5c910f99 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java @@ -24,6 +24,9 @@ public class DeleteEquipment extends AbstractVIVOSeleniumTest { vivoDeleteIndividual(); /* From CreateEquipment */ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + clickAndWait(By.linkText("Equipment")); assertTitle("Equipment"); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java index d15dc9ab..20c0451e 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java @@ -19,72 +19,17 @@ public class DeleteLocations extends AbstractVIVOSeleniumTest { vivoDeleteIndividual("Building", "Primate Memorial Building"); /* */ +/* from CreateLocation */ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + vivoDeleteIndividual("Building", "Jane Memorial Building"); +/* */ vivoLogOut(); } } /* - - clickAndWait - link=Building - - - - assertTitle - Building - - - - clickAndWait - link=Jane Memorial Building - - - - assertTitle - Jane Memorial Building - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value="Edit This Individual"] - - - - assertTitle - Individual Editing Form - - - - clickAndWait - _delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - clickAndWait link=Index From addfd09a61d3ab730d35f848dc2dd43079c7592d Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 15 Jan 2016 21:32:58 +0000 Subject: [PATCH 11/17] Updates to the Selenium WebDriver tests. --- .../tests/AbstractVIVOSeleniumTest.java | 45 +++- .../vivo/selenium/tests/DeleteLocations.java | 245 ++---------------- 2 files changed, 56 insertions(+), 234 deletions(-) diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java index cf824fc5..8debca4a 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -27,19 +27,21 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { while (autoComplete == null) { element.sendKeys(text); - try { - int findElementCount = 0; - while (autoComplete == null && findElementCount < 6) { - Thread.sleep(250); - autoComplete = driver.findElement(By.className("ui-autocomplete")); - if (autoComplete != null && !autoComplete.isDisplayed()) { - autoComplete = null; - } + int findElementCount = 0; + while (autoComplete == null && findElementCount < 6) { + try { + Thread.sleep(250); + + autoComplete = driver.findElement(By.className("ui-autocomplete")); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } catch (NoSuchElementException nse) { + System.out.println("Failure number: " + count); + } + + if (autoComplete != null && !autoComplete.isDisplayed()) { + autoComplete = null; } - } catch (InterruptedException e) { - throw new RuntimeException(e); - } catch (NoSuchElementException nse) { - System.out.println("Failure number: " + count); } if (autoComplete == null) { @@ -80,6 +82,25 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { clickAndWait(By.linkText(category)); assertTitle(category); + WebElement individualLink = null; + int pageCount = 1; + do { + try { + individualLink = driver.findElement(By.linkText(individual)); + } catch (NoSuchElementException nse) { + } + + if (individualLink == null) { + pageCount++; + try { + clickAndWait(By.linkText(Integer.toString(pageCount, 10))); + } catch (NoSuchElementException nse) { + break; + } + + } + } while (individualLink == null); + clickAndWait(By.linkText(individual)); assertTitle(individual); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java index 20c0451e..78a14958 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java @@ -19,236 +19,37 @@ public class DeleteLocations extends AbstractVIVOSeleniumTest { vivoDeleteIndividual("Building", "Primate Memorial Building"); /* */ +/* from CreateEquipment */ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + vivoDeleteIndividual("Facility", "Primate Research Lab Room 123"); +/* */ +/* from CreateEvent */ + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + vivoDeleteIndividual("Facility", "State Fair Park"); +/* */ /* from CreateLocation */ clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); vivoDeleteIndividual("Building", "Jane Memorial Building"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + vivoDeleteIndividual("Facility", "Lab Admin Office"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + vivoDeleteIndividual("Geographic Location", "Primate Quad"); /* */ vivoLogOut(); } } /* - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Facility - - - - assertTitle - Facility - - - - clickAndWait - link=Lab Admin Office - - - - assertTitle - Lab Admin Office - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Facility - - - - assertTitle - Facility - - - - clickAndWait - link=Primate Research Lab Room 123 - - - - assertTitle - Primate Research Lab Room 123 - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - - clickAndWait - link=Facility - - - - assertTitle - Facility - - - - clickAndWait - link=State Fair Park - - - - assertTitle - State Fair Park - - - - clickAndWait - link=Edit this individual - - - - assertTitle - Individual Control Panel - - - - clickAndWait - //input[@value='Edit This Individual'] - - - - assertTitle - Individual Editing Form - - - - click - name=_delete - - - - assertConfirmation - Are you SURE you want to delete this individual? If in doubt, CANCEL. - - - - waitForPageToLoad - 5000 - - - - assertTitle - VIVO Site Administration - - - - clickAndWait - link=Index - - - - assertTitle - Index of Contents - - - +Primate Quad */ \ No newline at end of file From d19d0f27c8fbbd1a025ff92ca495984d4712e1c7 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Mon, 18 Jan 2016 16:35:06 +0000 Subject: [PATCH 12/17] Updates to the Selenium WebDriver tests. --- .../selenium/suites/AddNonPersonThings.java | 7 + .../vivo/selenium/tests/CheckPublicView.java | 458 ++++++++++++++++++ .../tests/VerifyAllThingsSearchable.java | 143 ++++++ 3 files changed, 608 insertions(+) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index cf53bf6d..127f80d9 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -6,6 +6,7 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite.SuiteClasses; import org.vivoweb.vivo.selenium.DriverFactory; import org.vivoweb.vivo.selenium.VIVOSuite; +import org.vivoweb.vivo.selenium.tests.CheckPublicView; import org.vivoweb.vivo.selenium.tests.CreateActivity; import org.vivoweb.vivo.selenium.tests.CreateCourses; import org.vivoweb.vivo.selenium.tests.CreateEquipment; @@ -21,6 +22,7 @@ import org.vivoweb.vivo.selenium.tests.DeleteLocations; import org.vivoweb.vivo.selenium.tests.DeleteOrganization; import org.vivoweb.vivo.selenium.tests.DeleteResearch; import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; +import org.vivoweb.vivo.selenium.tests.VerifyAllThingsSearchable; @RunWith(VIVOSuite.class) @SuiteClasses( @@ -33,6 +35,11 @@ import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; CreateTopic.class, CreateEquipment.class, CreateLocation.class, + RebuildSearchIndex.class, + VerifyAllThingsSearchable.class, + CheckPublicView.class, +// CheckIndexView.class, +// TestMenuManagement.class, DeleteActivities.class, DeleteCourses.class, DeleteLocations.class, diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java new file mode 100644 index 00000000..8ba20dd6 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java @@ -0,0 +1,458 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class CheckPublicView extends AbstractVIVOSeleniumTest { + @Test + public void checkPublicView() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Project")); + assertTitle("Project"); + + clickAndWait(By.linkText("Human and Ape Brain Comparison")); + assertTitle("Human and Ape Brain Comparison"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Research Project")); + assertTitle("Research Project"); + + clickAndWait(By.linkText("Human and Ape Brain Comparison")); + assertTitle("Human and Ape Brain Comparison"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Service")); + assertTitle("Service"); + + clickAndWait(By.linkText("Primate Heart Health")); + assertTitle("Primate Heart Health"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Service")); + assertTitle("Service"); + + clickAndWait(By.linkText("Gorilla Moving Company")); + assertTitle("Gorilla Moving Company"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Transport Service")); + assertTitle("Transport Service"); + + clickAndWait(By.linkText("Gorilla Moving Company")); + assertTitle("Gorilla Moving Company"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Course")); + assertTitle("Course"); + + clickAndWait(By.linkText("Introduction to Primate Health")); + assertTitle("Introduction to Primate Health"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Course")); + assertTitle("Course"); + + clickAndWait(By.linkText("Introduction to Primates")); + assertTitle("Introduction to Primates"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Conference")); + assertTitle("Conference"); + + clickAndWait(By.linkText("Primate Health Conference")); + assertTitle("Primate Health Conference"); + + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("PHC Proceedings")); + + verifyTextPresent( + "has subject area", + "Animal Health", + "description" + ); + + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Invited Talk")); + assertTitle("Invited Talk"); + + clickAndWait(By.linkText("Primate Health and Fitness")); + assertTitle("Primate Health and Fitness"); + + verifyElementPresent(By.linkText("Introduction to Primate Health")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Performance")); + assertTitle("Performance"); + + clickAndWait(By.linkText("Primates in the Wild")); + assertTitle("Primates in the Wild"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Presentation")); + assertTitle("Presentation"); + + clickAndWait(By.linkText("Primate Health and Fitness")); + assertTitle("Primate Health and Fitness"); + + verifyElementPresent(By.linkText("Introduction to Primate Health")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Seminar Series")); + assertTitle("Seminar Series"); + + clickAndWait(By.linkText("Primate Health Talks")); + assertTitle("Primate Health Talks"); + + verifyElementPresent(By.linkText("Introduction to Primate Health")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Workshop")); + assertTitle("Workshop"); + + clickAndWait(By.linkText("New Primate Students")); + assertTitle("New Primate Students"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("College")); + assertTitle("College"); + + clickAndWait(By.linkText("Primate College of America")); + assertTitle("Primate College of America"); + + verifyElementPresent(By.linkText("B.S. Bachelor of Science")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("College")); + assertTitle("College"); + + clickAndWait(By.linkText("Primate College of New York")); + assertTitle("Primate College of New York"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Company")); + assertTitle("Company"); + + clickAndWait(By.linkText("Primates-r-us")); + assertTitle("Primates-r-us"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Consortium")); + assertTitle("Consortium"); + + clickAndWait(By.linkText("Primate Colleges of the World")); + assertTitle("Primate Colleges of the World"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Laboratory")); + assertTitle("Laboratory"); + + clickAndWait(By.linkText("Primate Research Laboratory")); + assertTitle("Primate Research Laboratory"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Library")); + assertTitle("Library"); + + clickAndWait(By.linkText("Primate History Library")); + assertTitle("Primate History Library"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("University")); + assertTitle("University"); + + clickAndWait(By.linkText("Primate University of America")); + assertTitle("Primate University of America"); + + verifyElementPresent(By.linkText("Jane Memorial Building")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Organization")); + assertTitle("Organization"); + + verifyElementPresent(By.linkText("Primate College of America")); + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primates-r-us")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Equipment")); + assertTitle("Equipment"); + + clickAndWait(By.linkText("Portable Primate Habitat")); + assertTitle("Portable Primate Habitat"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Equipment")); + assertTitle("Equipment"); + + clickAndWait(By.linkText("Primate Feeder")); + assertTitle("Primate Feeder"); + + verifyElementPresent(By.linkText("Primate Research Laboratory")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Article")); + assertTitle("Article"); + + clickAndWait(By.linkText("Primate Happenings")); + assertTitle("Primate Happenings"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Award or Honor")); + assertTitle("Award or Honor"); + + clickAndWait(By.linkText("Best Primate College")); + assertTitle("Best Primate College"); + + verifyElementPresent(By.linkText("Best Primate College (Primate College of America)")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Award or Honor")); + assertTitle("Award or Honor"); + + clickAndWait(By.linkText("Primate Student of the Year")); + assertTitle("Primate Student of the Year"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Blog Posting")); + assertTitle("Blog Posting"); + + clickAndWait(By.linkText("Primate Happenings")); + assertTitle("Primate Happenings"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Book")); + assertTitle("Book"); + + verifyElementPresent(By.linkText("PHC Proceedings")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Concept")); + assertTitle("Concept"); + + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("Ape Health")); + verifyElementPresent(By.linkText("Best Primate College")); + verifyElementPresent(By.linkText("Elderly Care")); + verifyElementPresent(By.linkText("Primate Diet")); + verifyElementPresent(By.linkText("Primate Health")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Database")); + assertTitle("Database"); + + clickAndWait(By.linkText("Primate Info")); + assertTitle("Primate Info"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Grant")); + assertTitle("Grant"); + + clickAndWait(By.linkText("Primate Elderly Care")); + assertTitle("Primate Elderly Care"); + + verifyElementPresent(By.linkText("Elderly Care")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Grant")); + assertTitle("Grant"); + + clickAndWait(By.linkText("Primate Habitat Research Grant")); + assertTitle("Primate Habitat Research Grant"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Grant")); + assertTitle("Grant"); + + clickAndWait(By.linkText("Primate Survival Planning Grant")); + assertTitle("Primate Survival Planning Grant"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Human Study")); + assertTitle("Human Study"); + + clickAndWait(By.linkText("Human and Ape Brain Comparison")); + assertTitle("Human and Ape Brain Comparison"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Patent")); + assertTitle("Patent"); + + clickAndWait(By.linkText("USA222333444555")); + assertTitle("USA222333444555"); + + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Proceedings")); + assertTitle("Proceedings"); + + clickAndWait(By.linkText("PHC Proceedings")); + assertTitle("PHC Proceedings"); + + verifyElementPresent(By.linkText("Primate Health Conference")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Webpage")); + assertTitle("Webpage"); + + clickAndWait(By.linkText("http://primatehealthintro.cornell.edu")); + assertTitle("http://primatehealthintro.cornell.edu"); + + verifyElementPresent(By.linkText("Introduction to Primate Health")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Building")); + assertTitle("Building"); + + clickAndWait(By.linkText("Jane Memorial Building")); + assertTitle("Jane Memorial Building"); + + verifyElementPresent(By.linkText("Portable Primate Habitat")); + + clickAndWait(By.linkText("Index")); + assertTitle("Index of Contents"); + + clickAndWait(By.linkText("Room")); + assertTitle("Room"); + + clickAndWait(By.linkText("Lab Admin Office")); + assertTitle("Lab Admin Office"); + + verifyElementPresent(By.linkText("Jane Memorial Building")); + + clickAndWait(By.linkText("Home")); + assertTitle("VIVO"); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java new file mode 100644 index 00000000..dba30680 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java @@ -0,0 +1,143 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { + @Test + public void verifyAllThingsSearchable() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + type(By.id("querytext"), "primates"); + + clickAndWait(By.xpath("//input[@value='Search']")); + + assertTitle("primates - VIVO Search Results"); + + verifyElementPresent(By.linkText("people")); + verifyElementPresent(By.linkText("activities")); + verifyElementPresent(By.linkText("courses")); + verifyElementPresent(By.linkText("events")); + verifyElementPresent(By.linkText("organizations")); + verifyElementPresent(By.linkText("equipment")); + verifyElementPresent(By.linkText("research")); + verifyElementPresent(By.linkText("locations")); + verifyElementPresent(By.linkText("Primates in the Wild")); + verifyElementPresent(By.linkText("Introduction to Primates")); + verifyElementPresent(By.linkText("Primates-r-us")); + verifyElementPresent(By.linkText("Primate Happenings")); + verifyElementPresent(By.linkText("Primate Info")); + verifyElementPresent(By.linkText("Primate Health")); + verifyElementPresent(By.linkText("Primate Quad")); + verifyElementPresent(By.linkText("Primate Feeder")); + verifyElementPresent(By.linkText("Primate Diet")); + verifyElementPresent(By.linkText("Primate College of America")); + verifyElementPresent(By.linkText("Primate Health Talks")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Portable Primate Habitat")); + verifyElementPresent(By.linkText("Primate Elderly Care")); + verifyElementPresent(By.linkText("Introduction to Primate Health")); + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyElementPresent(By.linkText("Primate Health Conference")); + verifyElementPresent(By.linkText("Primate Heart Health")); + verifyElementPresent(By.linkText("New Primate Student")); + verifyElementPresent(By.linkText("Primate Habitat Research Grant")); + verifyElementPresent(By.linkText("Primate Memorial Building")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + + verifyTextPresent( + "Primates in the Wild Performance", + "Introduction to Primates Course", + "Primates-r-us Company", + "Primate Happenings Blog Posting", + "Primate Info Database", + "Primate Health Concept", + "Primate Quad Geographic Location", + "Primate Feeder Equipment", + "Primate Diet Concept", + "Primate College of America College", + "Primate Health Talks Seminar Series", + "Primate Research Laboratory Laboratory", + "Portable Primate Habitat Equipment", + "Primate Elderly Care Grant", + "Introduction to Primate Health Course", + "Primate Health and Fitness Invited Talk", + "Primate University of America University", + "Primate Colleges of the World Consortium", + "Primate Health Check Event", + "Primate Health Conference Conference", + "Primate Heart Health Service", + "New Primate Students Workshop", + "Primate Habitat Research Grant Grant", + "Primate Memorial Building Building", + "Primate Student of the Year Award or Honor" + ); + + clickAndWait(By.linkText("2")); + assertTitle("primates - VIVO Search Results"); + + verifyElementPresent(By.linkText("Best Primate College")); + verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Survival Planning Grant")); + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate Research Lab Room 123")); + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("Ape Health")); + verifyElementPresent(By.linkText("Elderly Care")); + verifyElementPresent(By.linkText("Jane Memorial Building")); +// verifyElementPresent(By.linkText("exact:http://primatehealthintro.cornell.edu")); + verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); + verifyElementPresent(By.linkText("Person, Polly")); + verifyElementPresent(By.linkText("Gorilla Moving Company")); + verifyElementPresent(By.linkText("PHC Proceedings")); + verifyElementPresent(By.linkText("State Fair Park")); + verifyElementPresent(By.linkText("USA222333444555")); + verifyElementPresent(By.linkText("Africa")); + verifyElementPresent(By.linkText("Kenya")); + + verifyTextPresent( + "Best Primate College Award or Honor", + "Primate History Library Library", + "Primate Survival Planning Grant Grant", + "Primate College of New York College", + "Primate Research Lab Room 123 Facility", + "Animal Health Concept", + "Ape Health Concept", + "Elderly Care Concept", + "http://primatehealthintro.cornell.edu Webpage", + "Human and Ape Brain Comparison Human Study", + "Gorilla Moving Company Transport Service", + "PHC Proceedings Proceedings", + "USA222333444555 Patent", + "Africa Continent Transnational Region", + "Kenya Country" + ); + + clickAndWait(By.linkText("Home")); + assertTitle("VIVO"); + +/* + + verifyText + //div[@id='wrapper-content']/div/ul/li[9]/span + Building + + + verifyText + //div[@id='wrapper-content']/div/ul/li[12]/span + Person + + + verifyText + //div[@id='wrapper-content']/div/ul/li[15]/span + Facility + +*/ + } +} From 6217134901316fbb12d3c3d6cce3b7bde7e34b90 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Tue, 19 Jan 2016 15:05:28 +0000 Subject: [PATCH 13/17] Updates to the Selenium WebDriver tests. --- .../selenium/suites/AddNonPersonThings.java | 5 +- .../selenium/tests/CheckBrowseOptions.java | 223 ++++++++++++++++++ .../vivo/selenium/tests/CheckIndexView.java | 102 ++++++++ 3 files changed, 329 insertions(+), 1 deletion(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index 127f80d9..e2691e6d 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -6,6 +6,8 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite.SuiteClasses; import org.vivoweb.vivo.selenium.DriverFactory; import org.vivoweb.vivo.selenium.VIVOSuite; +import org.vivoweb.vivo.selenium.tests.CheckBrowseOptions; +import org.vivoweb.vivo.selenium.tests.CheckIndexView; import org.vivoweb.vivo.selenium.tests.CheckPublicView; import org.vivoweb.vivo.selenium.tests.CreateActivity; import org.vivoweb.vivo.selenium.tests.CreateCourses; @@ -38,7 +40,8 @@ import org.vivoweb.vivo.selenium.tests.VerifyAllThingsSearchable; RebuildSearchIndex.class, VerifyAllThingsSearchable.class, CheckPublicView.class, -// CheckIndexView.class, + CheckIndexView.class, + CheckBrowseOptions.class, // TestMenuManagement.class, DeleteActivities.class, DeleteCourses.class, diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java new file mode 100644 index 00000000..3df20304 --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java @@ -0,0 +1,223 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { + @Test + public void checkBrowseOptions() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + verifyElementPresent(By.linkText("Books")); + verifyElementPresent(By.linkText("Grants")); + + verifyTextPresent( + "1 Books ", + "3 Grants " + ); + + clickAndWait(By.linkText("View all ...")); + assertTitle("Research"); + + verifyElementPresent(By.linkText("Article (1)")); + verifyElementPresent(By.linkText("Award or Honor (2)")); + verifyElementPresent(By.linkText("Blog Posting (1)")); + verifyElementPresent(By.linkText("Book (1)")); + verifyElementPresent(By.linkText("Concept (7)")); + verifyElementPresent(By.linkText("Database (1)")); + verifyElementPresent(By.linkText("Grant (3)")); + verifyElementPresent(By.linkText("Human Study (1)")); + verifyElementPresent(By.linkText("Patent (1)")); + verifyElementPresent(By.linkText("Proceedings (1)")); + verifyElementPresent(By.linkText("Webpage (1)")); + + clickAndWait(By.linkText("Home")); + assertTitle("VIVO"); + + verifyTextPresent( + "No faculty members found.", + "No academic departments found." + ); + + clickAndWait(By.linkText("People")); + assertTitle("People"); + + verifyElementPresent(By.linkText("Person (1)")); + verifyElementPresent(By.linkText("Person, Polly")); + + clickAndWait(By.linkText("Organizations")); + assertTitle("Organizations"); + + verifyElementPresent(By.linkText("College (2)")); + verifyElementPresent(By.linkText("Company (1)")); + verifyElementPresent(By.linkText("Consortium (1)")); + verifyElementPresent(By.linkText("Laboratory (1)")); + verifyElementPresent(By.linkText("Library (1)")); + verifyElementPresent(By.linkText("Organization (7)")); + verifyElementPresent(By.linkText("University (1)")); + + clickAndWait(By.xpath("//li[@id='college']/a")); + + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate College of America")); + + clickAndWait(By.linkText("Company (1)")); + + verifyElementPresent(By.linkText("Primates-r-us")); + + clickAndWait(By.xpath("//li[@id='consortium']/a")); + + verifyElementPresent(By.linkText("Primate Colleges of the World")); + + clickAndWait(By.xpath("//li[@id='laboratory']/a")); + + verifyElementPresent(By.linkText("Primate Research Laboratory")); + + clickAndWait(By.xpath("//li[@id='library']/a")); + + verifyElementPresent(By.linkText("Primate History Library")); + + clickAndWait(By.xpath("//li[@id='organization']/a")); + + verifyElementPresent(By.linkText("Primate College of America")); + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primates-r-us")); + + clickAndWait(By.xpath("//li[@id='organization']/a")); + clickAndWait(By.linkText("P")); + + verifyElementPresent(By.linkText("Primate College of America")); + verifyElementPresent(By.linkText("Primate College of New York")); + verifyElementPresent(By.linkText("Primate Colleges of the World")); + verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Research Laboratory")); + verifyElementPresent(By.linkText("Primate University of America")); + verifyElementPresent(By.linkText("Primates-r-us")); + + clickAndWait(By.linkText("University (1)")); + verifyElementPresent(By.linkText("Primate University of America")); + + clickAndWait(By.linkText("Research")); + assertTitle("Research"); + + verifyElementPresent(By.linkText("Article (1)")); + verifyElementPresent(By.linkText("Award or Honor (2)")); + verifyElementPresent(By.linkText("Blog Posting (1)")); + verifyElementPresent(By.linkText("Book (1)")); + verifyElementPresent(By.linkText("Concept (7)")); + verifyElementPresent(By.linkText("Database (1)")); + verifyElementPresent(By.linkText("Grant (3)")); + verifyElementPresent(By.linkText("Human Study (1)")); + verifyElementPresent(By.linkText("Patent (1)")); + verifyElementPresent(By.linkText("Proceedings (1)")); + verifyElementPresent(By.linkText("Webpage (1)")); + + clickAndWait(By.linkText("Article (1)")); + verifyElementPresent(By.linkText("Primate Happenings")); + + clickAndWait(By.linkText("Award or Honor (2)")); + verifyElementPresent(By.linkText("Best Primate College")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + + clickAndWait(By.xpath("//li[@id='book']/a")); + verifyElementPresent(By.linkText("PHC Proceedings")); + + clickAndWait(By.xpath("//li[@id='concept']/a")); + + verifyElementPresent(By.linkText("Animal Health")); + verifyElementPresent(By.linkText("Ape Health")); + verifyElementPresent(By.linkText("Best Primate College")); + verifyElementPresent(By.linkText("Elderly Care")); + verifyElementPresent(By.linkText("Primate Diet")); + verifyElementPresent(By.linkText("Primate Health")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + + clickAndWait(By.xpath("//li[@id='concept']/a")); + clickAndWait(By.linkText("P")); + + verifyElementPresent(By.linkText("Primate Diet")); + verifyElementPresent(By.linkText("Primate Health")); + verifyElementPresent(By.linkText("Primate Student of the Year")); + + clickAndWait(By.xpath("//li[@id='database']/a")); + + verifyElementPresent(By.linkText("Primate Info")); + + clickAndWait(By.xpath("//li[@id='grant']/a")); + + verifyElementPresent(By.linkText("Primate Elderly Care")); + verifyElementPresent(By.linkText("Primate Habitat Research Grant")); + verifyElementPresent(By.linkText("Primate Survival Planning Grant")); + + clickAndWait(By.linkText("Human Study (1)")); + + verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); + + clickAndWait(By.linkText("Patent (1)")); + + verifyElementPresent(By.linkText("USA222333444555")); + + clickAndWait(By.xpath("//li[@id='proceedings']/a")); + + verifyElementPresent(By.linkText("PHC Proceedings")); + + clickAndWait(By.xpath("//li[@id='webpage']/a")); + + verifyElementPresent(By.linkText("http://primatehealthintro.cornell.edu")); + + clickAndWait(By.linkText("Events")); + assertTitle("Events"); + + verifyElementPresent(By.linkText("Conference (1)")); + verifyElementPresent(By.linkText("Event (7)")); + verifyElementPresent(By.linkText("Invited Talk (1)")); + verifyElementPresent(By.linkText("Performance (1)")); + verifyElementPresent(By.linkText("Presentation (1)")); + verifyElementPresent(By.linkText("Seminar Series (1)")); + verifyElementPresent(By.linkText("Workshop (1)")); + + clickAndWait(By.xpath("//li[@id='conference']/a")); + + verifyElementPresent(By.linkText("Primate Health Conference")); + + clickAndWait(By.xpath("//li[@id='event']/a")); + + verifyElementPresent(By.linkText("Introduction to Primate Health")); + verifyElementPresent(By.linkText("Introduction to Primates")); + verifyElementPresent(By.linkText("New Primate Students")); + verifyElementPresent(By.linkText("Primate Health and Fitness")); + verifyElementPresent(By.linkText("Primate Health Check")); + verifyElementPresent(By.linkText("Primate Health Conference")); + verifyElementPresent(By.linkText("Primates in the Wild")); + + clickAndWait(By.xpath("//li[@id='invitedTalk']/a")); + + verifyElementPresent(By.linkText("Primate Health and Fitness")); + + clickAndWait(By.linkText("Performance (1)")); + + verifyElementPresent(By.linkText("Primates in the Wild")); + + clickAndWait(By.linkText("Presentation (1)")); + + verifyElementPresent(By.linkText("Primate Health and Fitness")); + + clickAndWait(By.linkText("Seminar Series (1)")); + + verifyElementPresent(By.linkText("Primate Health Talks")); + + clickAndWait(By.linkText("Workshop (1)")); + + verifyElementPresent(By.linkText("New Primate Students")); + + clickAndWait(By.linkText("Home")); + assertTitle("VIVO"); + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java new file mode 100644 index 00000000..a63bd30c --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java @@ -0,0 +1,102 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class CheckIndexView extends AbstractVIVOSeleniumTest { + @Test + public void checkIndexView() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + clickAndWait(By.linkText("Index")); + + verifyTextPresent( + "people", + "activities", + "courses", + "events", + "organizations", + "equipment", + "research", + "locations", + "Person (1)", + "Project (1)", + "Research Project (1)", + "Service (2)", + "Transport Service (1)", + "Course (2)", + "Conference (1)", + "Event (7)", + "Invited Talk (1)", + "Performance (1)", + "Presentation (1)", + "Seminar Series (1)", + "Workshop (1)", + "College (2)", + "Company (1)", + "Consortium (1)", + "Laboratory (1)", + "Library (1)", + "Organization (7)", + "University (1)", + "Equipment (2)", + "Article (1)", + "Award or Honor (2)", + "Blog Posting (1)", + "Book (1)", + "Concept (7)", + "Database (1)", + "Grant (3)", + "Human Study (1)", + "Patent (1)", + "Proceedings (1)", + "Webpage (1)", + "Building (2)", + "Continent (7)", + "Facility (5)", + "Room (1)" + ); + + verifyElementPresent(By.linkText("Person")); + verifyElementPresent(By.linkText("Project")); + verifyElementPresent(By.linkText("Research Project")); + verifyElementPresent(By.linkText("Service")); + verifyElementPresent(By.linkText("Transport Service")); + verifyElementPresent(By.linkText("Course")); + verifyElementPresent(By.linkText("Conference")); + verifyElementPresent(By.linkText("Event")); + verifyElementPresent(By.linkText("Invited Talk")); + verifyElementPresent(By.linkText("Performance")); + verifyElementPresent(By.linkText("Presentation")); + verifyElementPresent(By.linkText("Seminar Series")); + verifyElementPresent(By.linkText("Workshop")); + verifyElementPresent(By.linkText("College")); + verifyElementPresent(By.linkText("Company")); + verifyElementPresent(By.linkText("Consortium")); + verifyElementPresent(By.linkText("Laboratory")); + verifyElementPresent(By.linkText("Library")); + verifyElementPresent(By.linkText("Organization")); + verifyElementPresent(By.linkText("University")); + verifyElementPresent(By.linkText("Equipment")); + verifyElementPresent(By.linkText("Article")); + verifyElementPresent(By.linkText("Award or Honor")); + verifyElementPresent(By.linkText("Blog Posting")); + verifyElementPresent(By.linkText("Book")); + verifyElementPresent(By.linkText("Concept")); + verifyElementPresent(By.linkText("Database")); + verifyElementPresent(By.linkText("Grant")); + verifyElementPresent(By.linkText("Human Study")); + verifyElementPresent(By.linkText("Patent")); + verifyElementPresent(By.linkText("Proceedings")); + verifyElementPresent(By.linkText("Webpage")); + verifyElementPresent(By.linkText("Building")); + verifyElementPresent(By.linkText("Facility")); + verifyElementPresent(By.linkText("Room")); + + clickAndWait(By.linkText("Home")); + assertTitle("VIVO"); + } +} From 550db92748de0d9d5f76c5525f0942de7fdafce5 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Tue, 19 Jan 2016 16:49:17 +0000 Subject: [PATCH 14/17] Updates to the Selenium WebDriver tests. --- .../selenium/suites/AddNonPersonThings.java | 3 +- .../selenium/tests/TestMenuManagement.java | 236 ++++++++++++++++++ 2 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index e2691e6d..a886e7b4 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -24,6 +24,7 @@ import org.vivoweb.vivo.selenium.tests.DeleteLocations; import org.vivoweb.vivo.selenium.tests.DeleteOrganization; import org.vivoweb.vivo.selenium.tests.DeleteResearch; import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; +import org.vivoweb.vivo.selenium.tests.TestMenuManagement; import org.vivoweb.vivo.selenium.tests.VerifyAllThingsSearchable; @RunWith(VIVOSuite.class) @@ -42,7 +43,7 @@ import org.vivoweb.vivo.selenium.tests.VerifyAllThingsSearchable; CheckPublicView.class, CheckIndexView.class, CheckBrowseOptions.class, -// TestMenuManagement.class, + TestMenuManagement.class, DeleteActivities.class, DeleteCourses.class, DeleteLocations.class, diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java new file mode 100644 index 00000000..0d7f5b1c --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java @@ -0,0 +1,236 @@ +package org.vivoweb.vivo.selenium.tests; + +import org.junit.Test; +import org.openqa.selenium.By; + +public class TestMenuManagement extends AbstractVIVOSeleniumTest { + @Test + public void testMenuManagement() { + deleteAllVisibleCookies(); + + open("/"); + assertTitle("VIVO"); + + vivoLogIn("testAdmin@cornell.edu", "Password"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Page management")); + assertTitle("Pages"); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + type(By.id("pageName"), "Activities"); + type(By.name("prettyUrl"), "/activities"); + selectByLabel(By.id("typeSelect"), "Browse Class Group"); + selectByLabel(By.id("selectClassGroup"), "activities"); + + clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); + clickAndWait(By.id("doneWithContent")); + clickAndWait(By.id("menuCheckbox")); + + clickAndWait(By.id("pageSave")); + assertTitle("Pages"); + + verifyTextPresent( + "Home", + "People", + "Organizations", + "Research", + "Events", + "Activities" + ); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + type(By.id("pageName"), "Courses"); + type(By.name("prettyUrl"), "/courses"); + selectByLabel(By.id("typeSelect"), "Browse Class Group"); + selectByLabel(By.id("selectClassGroup"), "courses"); + + clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); + clickAndWait(By.id("doneWithContent")); + clickAndWait(By.id("menuCheckbox")); + + clickAndWait(By.id("pageSave")); + assertTitle("Pages"); + + verifyTextPresent( + "Home", + "People", + "Organizations", + "Research", + "Events", + "Activities", + "Courses" + ); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + type(By.id("pageName"), "Equipment"); + type(By.name("prettyUrl"), "/equipment"); + selectByLabel(By.id("typeSelect"), "Browse Class Group"); + selectByLabel(By.id("selectClassGroup"), "equipment"); + + clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); + clickAndWait(By.id("doneWithContent")); + clickAndWait(By.id("menuCheckbox")); + + clickAndWait(By.id("pageSave")); + assertTitle("Pages"); + + verifyTextPresent( + "Home", + "People", + "Organizations", + "Research", + "Events", + "Activities" + ); + + clickAndWait(By.id("submit")); + assertTitle("Edit"); + + verifyTextPresent( + "Home", + "People", + "Organizations", + "Research", + "Events", + "Activities", + "Courses", + "Equipment" + ); + + type(By.id("pageName"), "Locations"); + type(By.name("prettyUrl"), "/locations"); + selectByLabel(By.id("typeSelect"), "Browse Class Group"); + selectByLabel(By.id("selectClassGroup"), "locations"); + + clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); + clickAndWait(By.id("doneWithContent")); + clickAndWait(By.id("menuCheckbox")); + + clickAndWait(By.id("pageSave")); + assertTitle("Pages"); + + verifyTextPresent( + "Home", + "People", + "Organizations", + "Research", + "Events", + "Activities", + "Locations" + ); + + clickAndWait(By.linkText("Activities")); + assertTitle("Activities"); + + clickAndWait(By.linkText("Project (1)")); + + verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); + + clickAndWait(By.linkText("Research Project (1)")); + + verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); + + clickAndWait(By.linkText("Service (2)")); + + verifyElementPresent(By.linkText("Gorilla Moving Company")); + verifyElementPresent(By.linkText("Primate Heart Health")); + + clickAndWait(By.linkText("Transport Service (1)")); + + verifyElementPresent(By.linkText("Gorilla Moving Company")); + + clickAndWait(By.linkText("Courses")); + assertTitle("Courses"); + + clickAndWait(By.linkText("Course (2)")); + + verifyTextPresent("Course"); + verifyElementPresent(By.linkText("Introduction to Primates")); + verifyElementPresent(By.linkText("Introduction to Primate Health")); + + clickAndWait(By.linkText("Equipment")); + assertTitle("Equipment"); + + clickAndWait(By.linkText("Equipment (2)")); + + verifyTextPresent("Equipment"); + verifyElementPresent(By.linkText("Portable Primate Habitat")); + verifyElementPresent(By.linkText("Primate Feeder")); + + clickAndWait(By.linkText("Locations")); + assertTitle("Locations"); + + clickAndWait(By.linkText("Building (2)")); + + verifyTextPresent("Building"); + verifyElementPresent(By.linkText("Jane Memorial Building")); + verifyElementPresent(By.linkText("Primate Memorial Building")); + + clickAndWait(By.linkText("Facility (5)")); + + verifyElementPresent(By.linkText("Jane Memorial Building")); + verifyElementPresent(By.linkText("Lab Admin Office")); + verifyElementPresent(By.linkText("Primate Memorial Building")); + verifyElementPresent(By.linkText("Primate Research Lab Room 123")); + verifyElementPresent(By.linkText("State Fair Park")); + + clickAndWait(By.linkText("Room (1)")); + + verifyElementPresent(By.linkText("Lab Admin Office")); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Page management")); + assertTitle("Pages"); + + clickAndWait(By.xpath("(//img[@alt='delete this page'])[2]")); + assertConfirmation("Are you sure you wish to delete this page: Activities?"); + + assertTitle("Pages"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Page management")); + assertTitle("Pages"); + + clickAndWait(By.xpath("(//img[@alt='delete this page'])[4]")); + assertConfirmation("Are you sure you wish to delete this page: Courses?"); + + assertTitle("Pages"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Page management")); + assertTitle("Pages"); + + clickAndWait(By.xpath("(//img[@alt='delete this page'])[6]")); + assertConfirmation("Are you sure you wish to delete this page: Equipment?"); + + assertTitle("Pages"); + + clickAndWait(By.linkText("Site Admin")); + assertTitle("VIVO Site Administration"); + + clickAndWait(By.linkText("Page management")); + assertTitle("Pages"); + + clickAndWait(By.xpath("(//img[@alt='delete this page'])[7]")); + assertConfirmation("Are you sure you wish to delete this page: Locations?"); + + assertTitle("Pages"); + + vivoLogOut(); // clickAndWait,Log out + } +} From 6b296f00c1311f3ca1156d8ecb3c6f3f65958cc3 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Wed, 20 Jan 2016 13:26:55 +0000 Subject: [PATCH 15/17] Updates to the Selenium WebDriver tests. --- .../tests/AbstractVIVOSeleniumTest.java | 12 +++++-- .../selenium/tests/CheckBrowseOptions.java | 32 +++++++++++++++++-- .../selenium/tests/RebuildSearchIndex.java | 2 ++ .../selenium/tests/TestMenuManagement.java | 17 +++++++--- .../tests/VerifyAllThingsSearchable.java | 22 ++++++------- 5 files changed, 65 insertions(+), 20 deletions(-) diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java index 8debca4a..0ea1f124 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java @@ -28,11 +28,12 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { element.sendKeys(text); int findElementCount = 0; - while (autoComplete == null && findElementCount < 6) { + while (autoComplete == null && findElementCount < 5) { + findElementCount++; try { - Thread.sleep(250); + Thread.sleep(250); - autoComplete = driver.findElement(By.className("ui-autocomplete")); + autoComplete = driver.findElement(By.className("ui-autocomplete")); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (NoSuchElementException nse) { @@ -50,6 +51,11 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { throw new NoSuchElementException("Auto complete is not visible"); } + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } count++; } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java index 3df20304..afec9028 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java @@ -15,8 +15,8 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Grants")); verifyTextPresent( - "1 Books ", - "3 Grants " + "1 Books", + "3 Grants" ); clickAndWait(By.linkText("View all ...")); @@ -60,27 +60,33 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("University (1)")); clickAndWait(By.xpath("//li[@id='college']/a")); + pause(500); verifyElementPresent(By.linkText("Primate College of New York")); verifyElementPresent(By.linkText("Primate College of America")); clickAndWait(By.linkText("Company (1)")); + pause(500); verifyElementPresent(By.linkText("Primates-r-us")); clickAndWait(By.xpath("//li[@id='consortium']/a")); + pause(500); verifyElementPresent(By.linkText("Primate Colleges of the World")); clickAndWait(By.xpath("//li[@id='laboratory']/a")); + pause(500); verifyElementPresent(By.linkText("Primate Research Laboratory")); clickAndWait(By.xpath("//li[@id='library']/a")); + pause(500); verifyElementPresent(By.linkText("Primate History Library")); clickAndWait(By.xpath("//li[@id='organization']/a")); + pause(500); verifyElementPresent(By.linkText("Primate College of America")); verifyElementPresent(By.linkText("Primate College of New York")); @@ -91,7 +97,9 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primates-r-us")); clickAndWait(By.xpath("//li[@id='organization']/a")); + pause(500); clickAndWait(By.linkText("P")); + pause(500); verifyElementPresent(By.linkText("Primate College of America")); verifyElementPresent(By.linkText("Primate College of New York")); @@ -102,6 +110,7 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primates-r-us")); clickAndWait(By.linkText("University (1)")); + pause(500); verifyElementPresent(By.linkText("Primate University of America")); clickAndWait(By.linkText("Research")); @@ -120,16 +129,20 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Webpage (1)")); clickAndWait(By.linkText("Article (1)")); + pause(500); verifyElementPresent(By.linkText("Primate Happenings")); clickAndWait(By.linkText("Award or Honor (2)")); + pause(500); verifyElementPresent(By.linkText("Best Primate College")); verifyElementPresent(By.linkText("Primate Student of the Year")); clickAndWait(By.xpath("//li[@id='book']/a")); + pause(500); verifyElementPresent(By.linkText("PHC Proceedings")); clickAndWait(By.xpath("//li[@id='concept']/a")); + pause(500); verifyElementPresent(By.linkText("Animal Health")); verifyElementPresent(By.linkText("Ape Health")); @@ -140,35 +153,43 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate Student of the Year")); clickAndWait(By.xpath("//li[@id='concept']/a")); + pause(500); clickAndWait(By.linkText("P")); + pause(500); verifyElementPresent(By.linkText("Primate Diet")); verifyElementPresent(By.linkText("Primate Health")); verifyElementPresent(By.linkText("Primate Student of the Year")); clickAndWait(By.xpath("//li[@id='database']/a")); + pause(500); verifyElementPresent(By.linkText("Primate Info")); clickAndWait(By.xpath("//li[@id='grant']/a")); + pause(500); verifyElementPresent(By.linkText("Primate Elderly Care")); verifyElementPresent(By.linkText("Primate Habitat Research Grant")); verifyElementPresent(By.linkText("Primate Survival Planning Grant")); clickAndWait(By.linkText("Human Study (1)")); + pause(500); verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); clickAndWait(By.linkText("Patent (1)")); + pause(500); verifyElementPresent(By.linkText("USA222333444555")); clickAndWait(By.xpath("//li[@id='proceedings']/a")); + pause(500); verifyElementPresent(By.linkText("PHC Proceedings")); clickAndWait(By.xpath("//li[@id='webpage']/a")); + pause(500); verifyElementPresent(By.linkText("http://primatehealthintro.cornell.edu")); @@ -184,10 +205,12 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Workshop (1)")); clickAndWait(By.xpath("//li[@id='conference']/a")); + pause(500); verifyElementPresent(By.linkText("Primate Health Conference")); clickAndWait(By.xpath("//li[@id='event']/a")); + pause(500); verifyElementPresent(By.linkText("Introduction to Primate Health")); verifyElementPresent(By.linkText("Introduction to Primates")); @@ -198,22 +221,27 @@ public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primates in the Wild")); clickAndWait(By.xpath("//li[@id='invitedTalk']/a")); + pause(500); verifyElementPresent(By.linkText("Primate Health and Fitness")); clickAndWait(By.linkText("Performance (1)")); + pause(500); verifyElementPresent(By.linkText("Primates in the Wild")); clickAndWait(By.linkText("Presentation (1)")); + pause(500); verifyElementPresent(By.linkText("Primate Health and Fitness")); clickAndWait(By.linkText("Seminar Series (1)")); + pause(500); verifyElementPresent(By.linkText("Primate Health Talks")); clickAndWait(By.linkText("Workshop (1)")); + pause(500); verifyElementPresent(By.linkText("New Primate Students")); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java index 81224146..9e92b37c 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java @@ -19,6 +19,8 @@ public class RebuildSearchIndex extends AbstractVIVOSeleniumTest { clickAndWait(By.linkText("Rebuild search index")); // clickAndWait,link=Rebuild search index assertTitle("Rebuild Search Index"); // assertTitle,Rebuild Search Index + waitForTextPresent("Reset the search index and re-populate it."); // waitForTextPresent,Reset the search index and re-populate it. + clickAndWait(By.name("rebuild")); // clickAndWait,name=rebuild assertTitle("Rebuild Search Index"); // assertTitle, Rebuild Search Index diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java index 0d7f5b1c..949bb398 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java @@ -27,7 +27,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { selectByLabel(By.id("typeSelect"), "Browse Class Group"); selectByLabel(By.id("selectClassGroup"), "activities"); - clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); +// clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); clickAndWait(By.id("doneWithContent")); clickAndWait(By.id("menuCheckbox")); @@ -51,7 +51,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { selectByLabel(By.id("typeSelect"), "Browse Class Group"); selectByLabel(By.id("selectClassGroup"), "courses"); - clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); +// clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); clickAndWait(By.id("doneWithContent")); clickAndWait(By.id("menuCheckbox")); @@ -76,7 +76,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { selectByLabel(By.id("typeSelect"), "Browse Class Group"); selectByLabel(By.id("selectClassGroup"), "equipment"); - clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); +// clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); clickAndWait(By.id("doneWithContent")); clickAndWait(By.id("menuCheckbox")); @@ -111,7 +111,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { selectByLabel(By.id("typeSelect"), "Browse Class Group"); selectByLabel(By.id("selectClassGroup"), "locations"); - clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); +// clickAndWait(By.cssSelector("option[value=\"http://vivoweb.org/ontology#vitroClassGroupactivities\"]")); clickAndWait(By.id("doneWithContent")); clickAndWait(By.id("menuCheckbox")); @@ -132,19 +132,23 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { assertTitle("Activities"); clickAndWait(By.linkText("Project (1)")); + pause(500); verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); clickAndWait(By.linkText("Research Project (1)")); + pause(500); verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); clickAndWait(By.linkText("Service (2)")); + pause(500); verifyElementPresent(By.linkText("Gorilla Moving Company")); verifyElementPresent(By.linkText("Primate Heart Health")); clickAndWait(By.linkText("Transport Service (1)")); + pause(500); verifyElementPresent(By.linkText("Gorilla Moving Company")); @@ -152,6 +156,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { assertTitle("Courses"); clickAndWait(By.linkText("Course (2)")); + pause(500); verifyTextPresent("Course"); verifyElementPresent(By.linkText("Introduction to Primates")); @@ -161,6 +166,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { assertTitle("Equipment"); clickAndWait(By.linkText("Equipment (2)")); + pause(500); verifyTextPresent("Equipment"); verifyElementPresent(By.linkText("Portable Primate Habitat")); @@ -170,12 +176,14 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { assertTitle("Locations"); clickAndWait(By.linkText("Building (2)")); + pause(500); verifyTextPresent("Building"); verifyElementPresent(By.linkText("Jane Memorial Building")); verifyElementPresent(By.linkText("Primate Memorial Building")); clickAndWait(By.linkText("Facility (5)")); + pause(500); verifyElementPresent(By.linkText("Jane Memorial Building")); verifyElementPresent(By.linkText("Lab Admin Office")); @@ -184,6 +192,7 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("State Fair Park")); clickAndWait(By.linkText("Room (1)")); + pause(500); verifyElementPresent(By.linkText("Lab Admin Office")); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java index dba30680..4cbe028c 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java @@ -11,7 +11,7 @@ public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { open("/"); assertTitle("VIVO"); - type(By.id("querytext"), "primates"); + type(By.name("querytext"), "primates"); clickAndWait(By.xpath("//input[@value='Search']")); @@ -46,10 +46,10 @@ public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate Health Check")); verifyElementPresent(By.linkText("Primate Health Conference")); verifyElementPresent(By.linkText("Primate Heart Health")); - verifyElementPresent(By.linkText("New Primate Student")); + verifyElementPresent(By.linkText("New Primate Students")); verifyElementPresent(By.linkText("Primate Habitat Research Grant")); - verifyElementPresent(By.linkText("Primate Memorial Building")); - verifyElementPresent(By.linkText("Primate Student of the Year")); + verifyElementPresent(By.linkText("Best Primate College")); + verifyElementPresent(By.linkText("Primate History Library")); verifyTextPresent( "Primates in the Wild Performance", @@ -75,15 +75,15 @@ public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { "Primate Heart Health Service", "New Primate Students Workshop", "Primate Habitat Research Grant Grant", - "Primate Memorial Building Building", - "Primate Student of the Year Award or Honor" + "Best Primate College Award or Honor", + "Primate History Library Library" ); clickAndWait(By.linkText("2")); assertTitle("primates - VIVO Search Results"); - verifyElementPresent(By.linkText("Best Primate College")); - verifyElementPresent(By.linkText("Primate History Library")); + verifyElementPresent(By.linkText("Primate Memorial Building")); + verifyElementPresent(By.linkText("Primate Student of the Year")); verifyElementPresent(By.linkText("Primate Survival Planning Grant")); verifyElementPresent(By.linkText("Primate College of New York")); verifyElementPresent(By.linkText("Primate Research Lab Room 123")); @@ -91,7 +91,7 @@ public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Ape Health")); verifyElementPresent(By.linkText("Elderly Care")); verifyElementPresent(By.linkText("Jane Memorial Building")); -// verifyElementPresent(By.linkText("exact:http://primatehealthintro.cornell.edu")); + verifyElementPresent(By.linkText("http://primatehealthintro.cornell.edu")); verifyElementPresent(By.linkText("Human and Ape Brain Comparison")); verifyElementPresent(By.linkText("Person, Polly")); verifyElementPresent(By.linkText("Gorilla Moving Company")); @@ -102,8 +102,8 @@ public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Kenya")); verifyTextPresent( - "Best Primate College Award or Honor", - "Primate History Library Library", + "Primate Memorial Building Building", + "Primate Student of the Year Award or Honor", "Primate Survival Planning Grant Grant", "Primate College of New York College", "Primate Research Lab Room 123 Facility", From 5053b4cff4654b47a960a498e6ce50337fd7d5f0 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Fri, 22 Jan 2016 14:01:25 +0000 Subject: [PATCH 16/17] [VIVO-1223] Add authorship rank to the constructed model --- .../generators/AddAuthorsToInformationResourceGenerator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java index 00cc8a27..0ae4c16f 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java @@ -361,6 +361,7 @@ public class AddAuthorsToInformationResourceGenerator extends VivoBaseGenerator + " ?subject core:relatedBy ?authorshipURI .\n" + " ?authorshipURI a core:Authorship .\n" + " ?authorshipURI core:relates ?authorURI .\n" + + " ?authorshipURI core:rank ?rank .\n" + " ?authorURI a ?type .\n" + " ?authorURI rdfs:label ?authorName .\n" + " ?authorURI vcard:hasName ?vName .\n" From aac9373f8539ea9aadf0fb546832e29b91ffb055 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Tue, 26 Jan 2016 20:52:43 +0000 Subject: [PATCH 17/17] Updates to the Selenium WebDriver tests. --- .../vivoweb/vivo/selenium/DriverFactory.java | 40 ++- ...VOSeleniumTest.java => VIVOAppTester.java} | 75 +++-- .../vivoweb/vivo/selenium/WebAppTester.java | 152 +++++++++ .../selenium/suites/AddNonPersonThings.java | 6 +- .../selenium/tests/AbstractSeleniumTest.java | 119 ------- .../selenium/tests/CheckBrowseOptions.java | 24 +- .../vivo/selenium/tests/CheckIndexView.java | 24 +- .../vivo/selenium/tests/CheckPublicView.java | 24 +- .../vivo/selenium/tests/CreateActivity.java | 29 +- .../vivo/selenium/tests/CreateCourses.java | 30 +- .../vivo/selenium/tests/CreateEquipment.java | 29 +- .../vivo/selenium/tests/CreateEvent.java | 29 +- .../vivo/selenium/tests/CreateLocation.java | 29 +- .../selenium/tests/CreateOrganization.java | 29 +- .../vivo/selenium/tests/CreateTopic.java | 29 +- .../vivo/selenium/tests/DeleteActivities.java | 70 ++-- .../vivo/selenium/tests/DeleteCourses.java | 57 ++-- .../vivo/selenium/tests/DeleteEquipment.java | 56 ++-- .../vivo/selenium/tests/DeleteEvents.java | 130 +++----- .../vivo/selenium/tests/DeleteLocations.java | 95 +++--- .../selenium/tests/DeleteOrganization.java | 150 +++------ .../vivo/selenium/tests/DeleteResearch.java | 285 ++++++---------- .../selenium/tests/RebuildSearchIndex.java | 27 +- .../selenium/tests/TestMenuManagement.java | 26 +- .../tests/VerifyAllThingsSearchable.java | 21 +- .../Command line suite/Command line test.html | 191 +++++++++++ .../Command line suite/Command line test.xml | 47 +++ .../Command line suite/testng-failed.xml | 23 ++ selenium/test-output/bullet_point.png | Bin 0 -> 356 bytes selenium/test-output/collapseall.gif | Bin 0 -> 157 bytes selenium/test-output/emailable-report.html | 32 ++ selenium/test-output/failed.png | Bin 0 -> 977 bytes selenium/test-output/index.html | 302 +++++++++++++++++ selenium/test-output/jquery-1.7.1.min.js | 4 + ...vivo.selenium.tests.RebuildSearchIndex.xml | 93 ++++++ selenium/test-output/navigator-bullet.png | Bin 0 -> 352 bytes .../Command line test.properties | 1 + .../old/Command line suite/classes.html | 44 +++ .../old/Command line suite/groups.html | 1 + .../old/Command line suite/index.html | 6 + .../old/Command line suite/main.html | 2 + .../methods-alphabetical.html | 16 + .../Command line suite/methods-not-run.html | 2 + .../old/Command line suite/methods.html | 16 + .../Command line suite/reporter-output.html | 1 + .../old/Command line suite/testng.xml.html | 1 + .../old/Command line suite/toc.html | 30 ++ selenium/test-output/old/index.html | 9 + selenium/test-output/passed.png | Bin 0 -> 1019 bytes selenium/test-output/skipped.png | Bin 0 -> 967 bytes selenium/test-output/testng-failed.xml | 23 ++ selenium/test-output/testng-reports.css | 309 ++++++++++++++++++ selenium/test-output/testng-reports.js | 122 +++++++ selenium/test-output/testng-results.xml | 129 ++++++++ selenium/test-output/testng.css | 9 + 55 files changed, 2224 insertions(+), 774 deletions(-) rename selenium/src/test/java/org/vivoweb/vivo/selenium/{tests/AbstractVIVOSeleniumTest.java => VIVOAppTester.java} (68%) create mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/WebAppTester.java delete mode 100644 selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java create mode 100644 selenium/test-output/Command line suite/Command line test.html create mode 100644 selenium/test-output/Command line suite/Command line test.xml create mode 100644 selenium/test-output/Command line suite/testng-failed.xml create mode 100644 selenium/test-output/bullet_point.png create mode 100644 selenium/test-output/collapseall.gif create mode 100644 selenium/test-output/emailable-report.html create mode 100644 selenium/test-output/failed.png create mode 100644 selenium/test-output/index.html create mode 100644 selenium/test-output/jquery-1.7.1.min.js create mode 100644 selenium/test-output/junitreports/TEST-org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.xml create mode 100644 selenium/test-output/navigator-bullet.png create mode 100644 selenium/test-output/old/Command line suite/Command line test.properties create mode 100644 selenium/test-output/old/Command line suite/classes.html create mode 100644 selenium/test-output/old/Command line suite/groups.html create mode 100644 selenium/test-output/old/Command line suite/index.html create mode 100644 selenium/test-output/old/Command line suite/main.html create mode 100644 selenium/test-output/old/Command line suite/methods-alphabetical.html create mode 100644 selenium/test-output/old/Command line suite/methods-not-run.html create mode 100644 selenium/test-output/old/Command line suite/methods.html create mode 100644 selenium/test-output/old/Command line suite/reporter-output.html create mode 100644 selenium/test-output/old/Command line suite/testng.xml.html create mode 100644 selenium/test-output/old/Command line suite/toc.html create mode 100644 selenium/test-output/old/index.html create mode 100644 selenium/test-output/passed.png create mode 100644 selenium/test-output/skipped.png create mode 100644 selenium/test-output/testng-failed.xml create mode 100644 selenium/test-output/testng-reports.css create mode 100644 selenium/test-output/testng-reports.js create mode 100644 selenium/test-output/testng-results.xml create mode 100644 selenium/test-output/testng.css diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java index fdc1d27f..3bdf9906 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/DriverFactory.java @@ -8,6 +8,10 @@ public final class DriverFactory { private static WebDriver driver = null; private static Object closeToken = null; + static { + Runtime.getRuntime().addShutdownHook(new ShutdownHook()); + } + public static WebDriver getDriver() { if (driver == null) { driver = new FirefoxDriver(); @@ -16,23 +20,47 @@ public final class DriverFactory { return driver; } - public static void close() { + public static boolean close() { if (closeToken == null && driver != null) { driver.quit(); driver = null; + return true; } + + return false; } - public static void close(Object token) { + public static boolean close(Object token) { if (closeToken == token || (closeToken != null && closeToken.equals(token))) { + if (driver != null) { + driver.quit(); + driver = null; + closeToken = null; + return true; + } + } + + return false; + } + + public static boolean setCloseToken(Object token) { + if (closeToken == null) { + closeToken = token; + return true; + } + + return false; + } + + private static class ShutdownHook extends Thread { + ShutdownHook() { } + + @Override + public void run() { if (driver != null) { driver.quit(); driver = null; } } } - - public static void setCloseToken(Object token) { - closeToken = token; - } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOAppTester.java similarity index 68% rename from selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java rename to selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOAppTester.java index 0ea1f124..a1965bdd 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractVIVOSeleniumTest.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/VIVOAppTester.java @@ -1,26 +1,18 @@ -package org.vivoweb.vivo.selenium.tests; +package org.vivoweb.vivo.selenium; -import org.apache.commons.lang3.StringUtils; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.NoSuchElementException; -import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.Select; -import org.openqa.selenium.support.ui.WebDriverWait; -import org.vivoweb.vivo.selenium.DriverFactory; -import org.vivoweb.vivo.selenium.SeleniumUtils; -public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { - protected void vivoAutoCompleteSelect(By by, String text, Keys... keys) { - WebElement element = driver.findElement(by); +public final class VIVOAppTester extends WebAppTester { + private static String loggedInAs = null; + + private VIVOAppTester() { } + + public static void vivoAutoCompleteSelect(By by, String text, Keys... keys) { + WebElement element = driver().findElement(by); int count = 0; WebElement autoComplete = null; @@ -33,7 +25,7 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { try { Thread.sleep(250); - autoComplete = driver.findElement(By.className("ui-autocomplete")); + autoComplete = driver().findElement(By.className("ui-autocomplete")); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (NoSuchElementException nse) { @@ -75,13 +67,13 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { throw new RuntimeException(e); } - WebElement selected = driver.findElement(By.id("ui-active-menuitem")); + WebElement selected = driver().findElement(By.id("ui-active-menuitem")); if (selected != null) { selected.click(); } } - protected void vivoDeleteIndividual(String category, String individual) { + public static void vivoDeleteIndividual(String category, String individual) { clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); @@ -92,7 +84,7 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { int pageCount = 1; do { try { - individualLink = driver.findElement(By.linkText(individual)); + individualLink = driver().findElement(By.linkText(individual)); } catch (NoSuchElementException nse) { } @@ -113,7 +105,7 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { vivoDeleteIndividual(); } - protected void vivoDeleteIndividual() { + public static void vivoDeleteIndividual() { clickAndWait(By.linkText("Edit this individual")); assertTitle("Individual Control Panel"); @@ -126,7 +118,11 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { assertTitle("VIVO Site Administration"); } - protected void vivoLogIn(String email, String password) { + public static void vivoLogIn(String email, String password) { + if (loggedInAs != null) { + vivoLogOut(); + } + clickAndWait(By.linkText("Log in")); // clickAndWait,link=Log in assertTitle("Log in to VIVO"); // aseertTitle,Log in to VIVO @@ -135,13 +131,40 @@ public class AbstractVIVOSeleniumTest extends AbstractSeleniumTest { clickAndWait(By.name("loginForm")); // clickAndWait,name=loginForm assertTitle("VIVO"); // assertTitle,VIVO + + loggedInAs = email; } - protected void vivoLogOut() { - Actions actions = new Actions(driver); - actions.moveToElement( driver.findElement(By.id("user-menu")) ).perform(); - driver.findElement(By.linkText("Log out")).click(); + public static void vivoLogOut() { + if (loggedInAs != null) { + Actions actions = new Actions(driver()); + actions.moveToElement(driver().findElement(By.id("user-menu"))).perform(); + driver().findElement(By.linkText("Log out")).click(); + loggedInAs = null; + } } + public static void startTests() { + Class token = getCallingClass(VIVOAppTester.class); + + if (token != null) { + if (DriverFactory.setCloseToken(token)) { + deleteAllVisibleCookies(); + } + } + + open("/"); + assertTitle("VIVO"); + } + + public static void endTests() { + Class token = getCallingClass(VIVOAppTester.class); + + if (token != null) { + DriverFactory.close(token); + } else { + DriverFactory.close(); + } + } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/WebAppTester.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/WebAppTester.java new file mode 100644 index 00000000..bf8efb8a --- /dev/null +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/WebAppTester.java @@ -0,0 +1,152 @@ +package org.vivoweb.vivo.selenium; + +import com.sun.tools.internal.xjc.Driver; +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.openqa.selenium.Alert; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.Select; +import org.openqa.selenium.support.ui.WebDriverWait; + +public class WebAppTester { + private static WebAppTester webAppTester = new WebAppTester(); + + public static void assertConfirmation(String text) { + WebDriverWait wait = new WebDriverWait(driver(), 2); + wait.until(ExpectedConditions.alertIsPresent()); + Alert alert = driver().switchTo().alert(); + if (!StringUtils.isEmpty(text)) { + Assert.assertTrue(text.equalsIgnoreCase(alert.getText())); + } + alert.accept(); + driver().switchTo().defaultContent(); + } + + public static void assertTitle(String title) { + Assert.assertEquals(title, driver().getTitle()); + } + + public static void clickAndWait(By by) { + driver().findElement(by).click(); + } + + public static void deleteAllVisibleCookies() { + driver().manage().deleteAllCookies(); + } + + public static void open(String urlPart) { + SeleniumUtils.navigate(driver(), urlPart); + } + + public static void pause(long timeout) { + try { + Thread.sleep(timeout); + } catch (InterruptedException e) { + } + } + + public static void selectByLabel(By by, String label) { + Select select = new Select(driver().findElement(by)); + select.selectByVisibleText(label); + + } + + public static void type(By by, String text) { + WebElement element = driver().findElement(by); + element.sendKeys(text); + } + + public static void typeTinyMCE(String text) { +// tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.') + + driver().switchTo().frame("literal_ifr"); + WebElement element = driver().findElement(By.cssSelector("body")); + element.click(); + element.sendKeys(text); + driver().switchTo().defaultContent(); + } + + public static void verifyElementPresent(By by) { + Assert.assertNotNull(driver().findElement(by)); + } + + public static void verifyTextPresent(String... text) { + if (text != null) { + String bodyText = driver().findElement(By.xpath("//body")).getText(); + for (String str : text) { + Assert.assertTrue(bodyText.contains(str)); + } + } +// Assert.assertNotNull(driver().findElement(xpathForTextPresent(text))); + } + + public static boolean waitForElementPresent(By by) { + return waitForElementPresent(by, 30); + } + + public static boolean waitForElementPresent(By by, int timeout) { + WebDriverWait wait = new WebDriverWait(driver(), timeout); + return wait.until(ExpectedConditions.presenceOfElementLocated(by)) != null; + } + + public static boolean waitForTextPresent(String text) { + return waitForTextPresent(text, 30); + } + + public static boolean waitForTextPresent(String text, int timeout) { + WebDriverWait wait = new WebDriverWait(driver(), timeout); + return wait.until(ExpectedConditions.presenceOfElementLocated(xpathForTextPresent(text))) != null; + } + + protected static By xpathForTextPresent(String text) { + return By.xpath("//*[text()[contains(.,'" + text + "')]]"); + } + + protected static WebDriver driver() { + return DriverFactory.getDriver(); + } + + public static void startTests() { + Class token = getCallingClass(WebAppTester.class); + + if (token != null) { + DriverFactory.setCloseToken(token); + } + } + + public static void endTests() { + Class token = getCallingClass(WebAppTester.class); + + if (token != null) { + DriverFactory.setCloseToken(token); + } + } + + protected static Class getCallingClass(Class thisClass) { + boolean foundThisClass = false; + StackTraceElement[] elements = Thread.currentThread().getStackTrace(); + int idx = 0; + while (idx < elements.length) { + if (foundThisClass) { + if (!thisClass.getCanonicalName().equals(elements[idx].getClassName())) { + try { + return Class.forName(elements[idx].getClassName()); + } catch (ClassNotFoundException e) { + } + } + } else { + + } + if (thisClass.getCanonicalName().equals(elements[idx].getClassName())) { + foundThisClass = true; + } + idx++; + } + + return null; + } +} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java index a886e7b4..88ca126a 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/suites/AddNonPersonThings.java @@ -4,7 +4,7 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.junit.runners.Suite.SuiteClasses; -import org.vivoweb.vivo.selenium.DriverFactory; +import org.vivoweb.vivo.selenium.VIVOAppTester; import org.vivoweb.vivo.selenium.VIVOSuite; import org.vivoweb.vivo.selenium.tests.CheckBrowseOptions; import org.vivoweb.vivo.selenium.tests.CheckIndexView; @@ -56,11 +56,11 @@ import org.vivoweb.vivo.selenium.tests.VerifyAllThingsSearchable; public class AddNonPersonThings { @BeforeClass public static void setup() { - DriverFactory.setCloseToken(AddNonPersonThings.class); + VIVOAppTester.startTests(); } @AfterClass public static void shutdown() { - DriverFactory.close(AddNonPersonThings.class); + VIVOAppTester.endTests(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java deleted file mode 100644 index eb8a7f19..00000000 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/AbstractSeleniumTest.java +++ /dev/null @@ -1,119 +0,0 @@ -package org.vivoweb.vivo.selenium.tests; - -import org.apache.commons.lang3.StringUtils; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.openqa.selenium.Alert; -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.Select; -import org.openqa.selenium.support.ui.WebDriverWait; -import org.vivoweb.vivo.selenium.DriverFactory; -import org.vivoweb.vivo.selenium.SeleniumUtils; - -public class AbstractSeleniumTest { - protected WebDriver driver; - - public void assertConfirmation(String text) { - WebDriverWait wait = new WebDriverWait(driver, 2); - wait.until(ExpectedConditions.alertIsPresent()); - Alert alert = driver.switchTo().alert(); - if (!StringUtils.isEmpty(text)) { - Assert.assertTrue(text.equalsIgnoreCase(alert.getText())); - } - alert.accept(); - driver.switchTo().defaultContent(); - } - - protected void assertTitle(String title) { - Assert.assertEquals(title, driver.getTitle()); - } - - protected void clickAndWait(By by) { - driver.findElement(by).click(); - } - - protected void deleteAllVisibleCookies() { - driver.manage().deleteAllCookies(); - } - - protected void open(String urlPart) { - SeleniumUtils.navigate(driver, urlPart); - } - - protected void pause(long timeout) { - try { - Thread.sleep(timeout); - } catch (InterruptedException e) { - } - } - protected void selectByLabel(By by, String label) { - Select select = new Select(driver.findElement(by)); - select.selectByVisibleText(label); - - } - - protected void type(By by, String text) { - WebElement element = driver.findElement(by); - element.sendKeys(text); - } - - protected void typeTinyMCE(String text) { -// tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.') - - driver.switchTo().frame("literal_ifr"); - WebElement element = driver.findElement(By.cssSelector("body")); - element.click(); - element.sendKeys(text); - driver.switchTo().defaultContent(); - } - - protected void verifyElementPresent(By by) { - Assert.assertNotNull(driver.findElement(by)); - } - - protected void verifyTextPresent(String... text) { - if (text != null) { - String bodyText = driver.findElement(By.xpath("//body")).getText(); - for (String str : text) { - Assert.assertTrue(bodyText.contains(str)); - } - } -// Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); - } - - protected boolean waitForElementPresent(By by) { - return waitForElementPresent(by, 30); - } - - protected boolean waitForElementPresent(By by, int timeout) { - WebDriverWait wait = new WebDriverWait(driver, timeout); - return wait.until(ExpectedConditions.presenceOfElementLocated(by)) != null; - } - - protected boolean waitForTextPresent(String text) { - return waitForTextPresent(text, 30); - } - - protected boolean waitForTextPresent(String text, int timeout) { - WebDriverWait wait = new WebDriverWait(driver, timeout); - return wait.until(ExpectedConditions.presenceOfElementLocated(xpathForTextPresent(text))) != null; - } - - protected By xpathForTextPresent(String text) { - return By.xpath("//*[text()[contains(.,'" + text + "')]]"); - } - - @Before - public void setup() { - driver = DriverFactory.getDriver(); - } - - @After - public void cleanup() { - DriverFactory.close(); - } -} diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java index afec9028..0b8d0229 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckBrowseOptions.java @@ -1,16 +1,28 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CheckBrowseOptions { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogOut(); + } + + @AfterClass + public static void tearDown() { + endTests(); + } -public class CheckBrowseOptions extends AbstractVIVOSeleniumTest { @Test public void checkBrowseOptions() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - verifyElementPresent(By.linkText("Books")); verifyElementPresent(By.linkText("Grants")); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java index a63bd30c..7075bae3 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckIndexView.java @@ -1,16 +1,28 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CheckIndexView { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogOut(); + } + + @AfterClass + public static void tearDown() { + endTests(); + } -public class CheckIndexView extends AbstractVIVOSeleniumTest { @Test public void checkIndexView() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - clickAndWait(By.linkText("Index")); verifyTextPresent( diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java index 8ba20dd6..53a1b81a 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CheckPublicView.java @@ -1,16 +1,28 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CheckPublicView { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogOut(); + } + + @AfterClass + public static void tearDown() { + endTests(); + } -public class CheckPublicView extends AbstractVIVOSeleniumTest { @Test public void checkPublicView() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - clickAndWait(By.linkText("Index")); assertTitle("Index of Contents"); diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java index ae58b5b4..ae9d0f90 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateActivity.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateActivity { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateActivity extends AbstractVIVOSeleniumTest { @Test public void createActivity() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -205,7 +216,5 @@ public class CreateActivity extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate Habitat Research Grant")); verifyElementPresent(By.linkText("Primate Survival Planning Grant")); verifyElementPresent(By.linkText("Primate Info")); - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java index 3dcde579..2571bb85 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateCourses.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateCourses { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateCourses extends AbstractVIVOSeleniumTest { @Test public void createCourses() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -231,8 +242,5 @@ public class CreateCourses extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate Memorial Building")); verifyElementPresent(By.linkText("Liberia")); verifyElementPresent(By.linkText("Introduction to Primates")); - - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java index 7cb9e6ce..146ef083 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEquipment.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateEquipment { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateEquipment extends AbstractVIVOSeleniumTest { @Test public void createEquipment() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -125,7 +136,5 @@ public class CreateEquipment extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate University of America")); verifyElementPresent(By.linkText("Primate Health Check")); verifyElementPresent(By.linkText("United States of America")); - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java index 53b38e05..356b4e9b 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateEvent.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateEvent { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateEvent extends AbstractVIVOSeleniumTest { @Test public void createEvent() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -204,7 +215,5 @@ public class CreateEvent extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("http://primatehealthintro.cornell.edu")); verifyElementPresent(By.linkText("State Fair Park")); verifyElementPresent(By.linkText("Congo")); - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java index 55f66520..7f5c6f16 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateLocation.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateLocation { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateLocation extends AbstractVIVOSeleniumTest { @Test public void createLocation() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -112,7 +123,5 @@ public class CreateLocation extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate Health Check")); verifyElementPresent(By.linkText("Lab Admin Office")); verifyElementPresent(By.linkText("Primate Quad")); - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java index 61bbc96c..4ad59b0f 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateOrganization.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateOrganization { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateOrganization extends AbstractVIVOSeleniumTest { @Test public void createOrganization() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -564,7 +575,5 @@ public class CreateOrganization extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Primate College of New York")); verifyElementPresent(By.linkText("Primate University of America")); verifyElementPresent(By.linkText("Primate Colleges of the World")); - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java index 09023800..7de569e3 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/CreateTopic.java @@ -1,19 +1,30 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class CreateTopic { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class CreateTopic extends AbstractVIVOSeleniumTest { @Test public void createTopic() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -88,7 +99,5 @@ public class CreateTopic extends AbstractVIVOSeleniumTest { verifyElementPresent(By.linkText("Animal Health")); verifyElementPresent(By.linkText("Primate Diet")); verifyElementPresent(By.linkText("Ape Health")); - - vivoLogOut(); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java index 922e5621..6147d88f 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteActivities.java @@ -1,51 +1,39 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteActivities extends AbstractVIVOSeleniumTest { - @Test - public void deleteActivities() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteActivities { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); + } - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Project")); - assertTitle("Project"); - - clickAndWait(By.linkText("Human and Ape Brain Comparison")); - assertTitle("Human and Ape Brain Comparison"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Service")); - assertTitle("Service"); - - clickAndWait(By.linkText("Gorilla Moving Company")); - assertTitle("Gorilla Moving Company"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Service")); - assertTitle("Service"); - - clickAndWait(By.linkText("Primate Heart Health")); - assertTitle("Primate Heart Health"); - - vivoDeleteIndividual(); - + @AfterClass + public static void tearDown() { vivoLogOut(); + endTests(); + } + + @Test + public void deleteProjectHumanApeBrainComparison() { + vivoDeleteIndividual("Project", "Human and Ape Brain Comparison"); + } + + @Test + public void deleteServiceGorillaMovingCompany() { + vivoDeleteIndividual("Service", "Gorilla Moving Company"); + } + + @Test + public void deleteServicePrimateHeartHealth() { + vivoDeleteIndividual("Service", "Primate Heart Health"); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java index ca6d48d8..61e70597 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteCourses.java @@ -1,42 +1,35 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteCourses extends AbstractVIVOSeleniumTest { - @Test - public void deleteCourses() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteCourses { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); + } - /* From CreateCourses */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Course")); - assertTitle("Course"); - - clickAndWait(By.linkText("Introduction to Primate Health")); - assertTitle("Introduction to Primate Health"); - - vivoDeleteIndividual(); - /* */ - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Course")); - assertTitle("Course"); - - clickAndWait(By.linkText("Introduction to Primates")); - assertTitle("Introduction to Primates"); - - vivoDeleteIndividual(); - + @AfterClass + public static void tearDown() { vivoLogOut(); + endTests(); + } + + @Test + public void deleteCourseIntroductionPrimateHealth() { + // From CreateCourses + vivoDeleteIndividual("Course", "Introduction to Primate Health"); + } + + @Test + public void deleteCourseIntroductionPrimates() { + vivoDeleteIndividual("Course", "Introduction to Primates"); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java index 5c910f99..374bee2a 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEquipment.java @@ -1,41 +1,35 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteEquipment extends AbstractVIVOSeleniumTest { - @Test - public void deleteEquipment() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteEquipment { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); + } - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Equipment")); - assertTitle("Equipment"); - - clickAndWait(By.linkText("Portable Primate Habitat")); - assertTitle("Portable Primate Habitat"); - - vivoDeleteIndividual(); -/* From CreateEquipment */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Equipment")); - assertTitle("Equipment"); - - clickAndWait(By.linkText("Primate Feeder")); - assertTitle("Primate Feeder"); - - vivoDeleteIndividual(); -/* */ - + @AfterClass + public static void tearDown() { vivoLogOut(); + endTests(); + } + + @Test + public void deleteEquipmentPortablePrimateHabitat() { + vivoDeleteIndividual("Equipment", "Portable Primate Habitat"); + } + + @Test + public void deleteEquipmentPrimateFeeder() { + // From CreateEquipment + vivoDeleteIndividual("Equipment", "Primate Feeder"); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java index 8a0c2bd6..cee1acbe 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteEvents.java @@ -1,88 +1,58 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteEvents extends AbstractVIVOSeleniumTest { - @Test - public void deleteEvents() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteEvents { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Event")); - assertTitle("Event"); - - clickAndWait(By.linkText("New Primate Students")); - assertTitle("New Primate Students"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Event")); - assertTitle("Event"); - - clickAndWait(By.linkText("Primate Health and Fitness")); - assertTitle("Primate Health and Fitness"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Event")); - assertTitle("Event"); - - clickAndWait(By.linkText("Primate Health Check")); - assertTitle("Primate Health Check"); - - vivoDeleteIndividual(); - -/* From CreateEvent */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Event")); - assertTitle("Event"); - - clickAndWait(By.linkText("Primate Health Conference")); - assertTitle("Primate Health Conference"); - - vivoDeleteIndividual(); -/* */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Event")); - assertTitle("Event"); - - clickAndWait(By.linkText("Primates in the Wild")); - assertTitle("Primates in the Wild"); - - vivoDeleteIndividual(); - - /* From CreateCourses */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Seminar Series")); - assertTitle("Seminar Series"); - - clickAndWait(By.linkText("Primate Health Talks")); - assertTitle("Primate Health Talks"); - - vivoDeleteIndividual(); - /* */ - // Where is Introduction to Primates?? - - vivoLogOut(); } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } + + @Test + public void deleteEventNewPrimateStudents() { + vivoDeleteIndividual("Event", "New Primate Students"); + } + + @Test + public void deleteEventPrimateHealthAndFitness() { + vivoDeleteIndividual("Event", "Primate Health and Fitness"); + } + + @Test + public void deleteEventPrimateHealthCheck() { + vivoDeleteIndividual("Event", "Primate Health Check"); + } + + @Test + public void deleteEventPrimateHealthConference() { + // From CreateEvent + vivoDeleteIndividual("Event", "Primate Health Conference"); + } + + @Test + public void deleteEventPrimatesInTheWild() { + vivoDeleteIndividual("Event", "Primates in the Wild"); + } + + @Test + public void deleteSeminarPrimateHealthTalks() { + // From CreateCourses + vivoDeleteIndividual("Seminar Series", "Primate Health Talks"); + } + + // Where is Introduction to Primates?? } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java index 78a14958..10eed87d 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteLocations.java @@ -1,55 +1,60 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteLocations extends AbstractVIVOSeleniumTest { - @Test - public void deleteLocations() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteLocations { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); + } -/* from CreateCourses */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - vivoDeleteIndividual("Building", "Primate Memorial Building"); -/* */ -/* from CreateEquipment */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - vivoDeleteIndividual("Facility", "Primate Research Lab Room 123"); -/* */ -/* from CreateEvent */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - vivoDeleteIndividual("Facility", "State Fair Park"); -/* */ -/* from CreateLocation */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - vivoDeleteIndividual("Building", "Jane Memorial Building"); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - vivoDeleteIndividual("Facility", "Lab Admin Office"); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - vivoDeleteIndividual("Geographic Location", "Primate Quad"); -/* */ + @AfterClass + public static void tearDown() { vivoLogOut(); + endTests(); + } + + @Test + public void deleteBuildingPrimateMemorialBuilding() { + // from CreateCourses + vivoDeleteIndividual("Building", "Primate Memorial Building"); + } + + @Test + public void deleteFacilityPrimateResearchLabRoom123() { + // from CreateEquipment + vivoDeleteIndividual("Facility", "Primate Research Lab Room 123"); + } + + @Test + public void deleteFacilityStateFairPark() { + // from CreateEvent + vivoDeleteIndividual("Facility", "State Fair Park"); + } + + @Test + public void deleteBuildingJaneMemorialBuilding() { + // from CreateLocation + vivoDeleteIndividual("Building", "Jane Memorial Building"); + } + + @Test + public void deleteFacilityLabAdminOffice() { + // from CreateLocation + vivoDeleteIndividual("Facility", "Lab Admin Office"); + } + + @Test + public void deleteGeograpihcPrimateQuad() { + // from CreateLocation + vivoDeleteIndividual("Geographic Location", "Primate Quad"); } } -/* -Primate Quad - */ \ No newline at end of file diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java index a9c9a786..b2b0bb98 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteOrganization.java @@ -1,106 +1,64 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteOrganization extends AbstractVIVOSeleniumTest { - @Test - public void deleteOrganization() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteOrganization { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); + } - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primate College of America")); - assertTitle("Primate College of America"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primate College of New York")); - assertTitle("Primate College of New York"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primate Colleges of the World")); - assertTitle("Primate Colleges of the World"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primate History Library")); - assertTitle("Primate History Library"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primate Research Laboratory")); - assertTitle("Primate Research Laboratory"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primate University of America")); - assertTitle("Primate University of America"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Organization")); - assertTitle("Organization"); - - clickAndWait(By.linkText("Primates-r-us")); - assertTitle("Primates-r-us"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Person")); - assertTitle("Person"); - - clickAndWait(By.linkText("Person, Polly")); - assertTitle("Person, Polly"); - - vivoDeleteIndividual(); - + @AfterClass + public static void tearDown() { vivoLogOut(); + endTests(); + } + + @Test + public void deletePrimateCollegeOfAmerica() { + vivoDeleteIndividual("Organization", "Primate College of America"); + } + + @Test + public void deletePrimateCollegeOfNewYork() { + vivoDeleteIndividual("Organization", "Primate College of New York"); + } + + @Test + public void deletePrimateCollegesOfTheWorld() { + vivoDeleteIndividual("Organization", "Primate Colleges of the World"); + } + + @Test + public void deletePrimateHistoryLibrary() { + vivoDeleteIndividual("Organization", "Primate History Library"); + } + + @Test + public void deletePrimateResearchLaboratory() { + vivoDeleteIndividual("Organization", "Primate Research Laboratory"); + } + + @Test + public void deletePrimateUniversityOfAmerica() { + vivoDeleteIndividual("Organization", "Primate University of America"); + } + + @Test + public void deletePrimatesRUs() { + vivoDeleteIndividual("Organization", "Primates-r-us"); + } + + @Test + public void deletePollyPerson() { + vivoDeleteIndividual("Person", "Person, Polly"); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java index 523538d2..653da614 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/DeleteResearch.java @@ -1,190 +1,115 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; import org.junit.Test; +import org.junit.runners.MethodSorters; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; -public class DeleteResearch extends AbstractVIVOSeleniumTest { - @Test - public void deleteResearch() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class DeleteResearch { + @BeforeClass + public static void setUp() { + startTests(); vivoLogIn("testAdmin@cornell.edu", "Password"); + } - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Article")); - assertTitle("Article"); - - clickAndWait(By.linkText("Primate Happenings")); - assertTitle("Primate Happenings"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Award or Honor")); - assertTitle("Award or Honor"); - - clickAndWait(By.linkText("Best Primate College")); - assertTitle("Best Primate College"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Award or Honor")); - assertTitle("Award or Honor"); - - clickAndWait(By.linkText("Primate Student of the Year")); - assertTitle("Primate Student of the Year"); - - vivoDeleteIndividual(); -/* From CreateEvent */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Book")); - assertTitle("Book"); - - clickAndWait(By.linkText("PHC Proceedings")); - assertTitle("PHC Proceedings"); - - vivoDeleteIndividual(); -/* */ -/* From CreateTopic */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - - clickAndWait(By.linkText("Ape Health")); - assertTitle("Ape Health"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - - clickAndWait(By.linkText("Primate Diet")); - assertTitle("Primate Diet"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - - clickAndWait(By.linkText("Primate Health")); - assertTitle("Primate Health"); - - vivoDeleteIndividual(); -/* */ - /* From CreateActivity */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - - clickAndWait(By.linkText("Elderly Care")); - assertTitle("Elderly Care"); - - vivoDeleteIndividual(); - /* */ - - /* From CreateCourses */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Concept")); - assertTitle("Concept"); - - clickAndWait(By.linkText("Animal Health")); - assertTitle("Animal Health"); - - vivoDeleteIndividual(); - /* */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Database")); - assertTitle("Database"); - - clickAndWait(By.linkText("Primate Info")); - assertTitle("Primate Info"); - - vivoDeleteIndividual(); - - /* Delete grant from createActivity */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Grant")); - assertTitle("Grant"); - - clickAndWait(By.linkText("Primate Elderly Care")); - assertTitle("Primate Elderly Care"); - - vivoDeleteIndividual(); - /* */ - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Grant")); - assertTitle("Grant"); - - clickAndWait(By.linkText("Primate Habitat Research Grant")); - assertTitle("Primate Habitat Research Grant"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Grant")); - assertTitle("Grant"); - - clickAndWait(By.linkText("Primate Survival Planning Grant")); - assertTitle("Primate Survival Planning Grant"); - - vivoDeleteIndividual(); - - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Patent")); - assertTitle("Patent"); - - clickAndWait(By.linkText("USA222333444555")); - assertTitle("USA222333444555"); - - vivoDeleteIndividual(); - - /* From CreateCourses */ - clickAndWait(By.linkText("Index")); - assertTitle("Index of Contents"); - - clickAndWait(By.linkText("Webpage")); - assertTitle("Webpage"); - - clickAndWait(By.linkText("http://primatehealthintro.cornell.edu")); - assertTitle("http://primatehealthintro.cornell.edu"); - - vivoDeleteIndividual(); - /* */ + @AfterClass + public static void tearDown() { vivoLogOut(); + endTests(); + } + + @Test + public void deleteArticlePrimateHappenings() { + vivoDeleteIndividual("Article", "Primate Happenings"); + } + + @Test + public void deleteAwardBestPrimateCollege() { + vivoDeleteIndividual("Award or Honor", "Best Primate College"); + } + + @Test + public void deleteAwardPrimateStudentOfTheYear() { + vivoDeleteIndividual("Award or Honor", "Primate Student of the Year"); + } + + @Test + public void deleteBookPHCProceedings() { + // From CreateEvent + + vivoDeleteIndividual("Book", "PHC Proceedings"); + } + + @Test + public void deleteConceptApeHealth() { + // From CreateTopic + + vivoDeleteIndividual("Concept", "Ape Health"); + } + + @Test + public void deleteConceptPrimateDiet() { + // From CreateTopic + + vivoDeleteIndividual("Concept", "Primate Diet"); + } + + @Test + public void deleteConceptPrimateHealth() { + // From CreateTopic + + vivoDeleteIndividual("Concept", "Primate Health"); + } + + @Test + public void deleteConceptElderlyCare() { + // From CreateActivity + + vivoDeleteIndividual("Concept", "Elderly Care"); + } + + @Test + public void deleteConceptAnimalHealth() { + // From CreateCourses + + vivoDeleteIndividual("Concept", "Animal Health"); + } + + @Test + public void deleteDatabasePrimateInfo() { + vivoDeleteIndividual("Database", "Primate Info"); + } + + @Test + public void deleteGrantPrimateElderlyCare() { + // From CreateActivity + + vivoDeleteIndividual("Grant", "Primate Elderly Care"); + } + + @Test + public void deleteGrantPrimateHabitatResearchGrant() { + vivoDeleteIndividual("Grant", "Primate Habitat Research Grant"); + } + + @Test + public void deleteGrantPrimateSurvivalPlanningGrant() { + vivoDeleteIndividual("Grant", "Primate Survival Planning Grant"); + } + + @Test + public void deletePatentUSA222333444555() { + vivoDeleteIndividual("Patent", "USA222333444555"); + } + + @Test + public void deleteWebPagePrimateHealthIntro() { + // From CreateCourses + + vivoDeleteIndividual("Webpage", "http://primatehealthintro.cornell.edu"); } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java index 9e92b37c..cdf6b347 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/RebuildSearchIndex.java @@ -1,18 +1,27 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +public class RebuildSearchIndex { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class RebuildSearchIndex extends AbstractVIVOSeleniumTest { @Test public void rebuildSearchIndexTest() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); // assertTitle,VIVO - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); // clickAndWait,link=Site Admin assertTitle("VIVO Site Administration"); // assertTitle,VIVO Site Administration @@ -25,7 +34,5 @@ public class RebuildSearchIndex extends AbstractVIVOSeleniumTest { assertTitle("Rebuild Search Index"); // assertTitle, Rebuild Search Index waitForTextPresent("Reset the search index and re-populate it."); // waitForTextPresent,Reset the search index and re-populate it. - - vivoLogOut(); // clickAndWait,Log out } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java index 949bb398..5e1cd117 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/TestMenuManagement.java @@ -1,18 +1,26 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +public class TestMenuManagement { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogIn("testAdmin@cornell.edu", "Password"); + } + + @AfterClass + public static void tearDown() { + vivoLogOut(); + endTests(); + } -public class TestMenuManagement extends AbstractVIVOSeleniumTest { @Test public void testMenuManagement() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - - vivoLogIn("testAdmin@cornell.edu", "Password"); - clickAndWait(By.linkText("Site Admin")); assertTitle("VIVO Site Administration"); @@ -239,7 +247,5 @@ public class TestMenuManagement extends AbstractVIVOSeleniumTest { assertConfirmation("Are you sure you wish to delete this page: Locations?"); assertTitle("Pages"); - - vivoLogOut(); // clickAndWait,Log out } } diff --git a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java index 4cbe028c..f46f50fb 100644 --- a/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java +++ b/selenium/src/test/java/org/vivoweb/vivo/selenium/tests/VerifyAllThingsSearchable.java @@ -1,16 +1,25 @@ package org.vivoweb.vivo.selenium.tests; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.By; +import static org.vivoweb.vivo.selenium.VIVOAppTester.*; + +public class VerifyAllThingsSearchable { + @BeforeClass + public static void setUp() { + startTests(); + vivoLogOut(); + } + + @AfterClass + public static void tearDown() { + endTests(); + } -public class VerifyAllThingsSearchable extends AbstractVIVOSeleniumTest { @Test public void verifyAllThingsSearchable() { - deleteAllVisibleCookies(); - - open("/"); - assertTitle("VIVO"); - type(By.name("querytext"), "primates"); clickAndWait(By.xpath("//input[@value='Search']")); diff --git a/selenium/test-output/Command line suite/Command line test.html b/selenium/test-output/Command line suite/Command line test.html new file mode 100644 index 00000000..1f461ffd --- /dev/null +++ b/selenium/test-output/Command line suite/Command line test.html @@ -0,0 +1,191 @@ + + +TestNG: Command line test + + + + + + + + +

Command line test

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:0/1/0
Started on:Sat Jan 23 20:20:12 GMT 2016
Total time:1 seconds (1334 ms)
Included groups:
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + +
FAILED TESTS
Test methodExceptionTime (seconds)Instance
rebuildSearchIndexTest
Test class: org.vivoweb.vivo.selenium.tests.RebuildSearchIndex
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"}
+Command duration or timeout: 1.18 seconds
+For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
+Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
+System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60'
+Driver info: org.openqa.selenium.firefox.FirefoxDriver
+Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=43.0.4, platform=MAC, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
+Session ID: 0454c462-95d4-4143-85a7-404602e998cd
+*** Element info: {Using=link text, value=Site Admin}
+	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
+	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
+	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647)
+	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:353)
+	at org.openqa.selenium.remote.RemoteWebDriver.findElementByLinkText(RemoteWebDriver.java:418)
+	at org.openqa.selenium.By$ByLinkText.findElement(By.java:246)
+	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:345)
+	at org.vivoweb.vivo.selenium.tests.AbstractSeleniumTest.clickAndWait(AbstractSeleniumTest.java:46)
+	at org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.rebuildSearchIndexTest(RebuildSearchIndex.java:15)
+	at org.vivoweb.vivo.selenium.suites.Suite2.suite2(Suite2.java:18)
+	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
+Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"}
+For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
+Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
+System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60'
+Driver info: driver.version: unknown
+	at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659)
+	at <anonymous class>.FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668)
+	at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534)
+	at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539)
+	at <anonymous class>.DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481)
+... Removed 46 stack frames
Click to show all stack frames +
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"}
+Command duration or timeout: 1.18 seconds
+For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
+Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
+System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60'
+Driver info: org.openqa.selenium.firefox.FirefoxDriver
+Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=43.0.4, platform=MAC, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
+Session ID: 0454c462-95d4-4143-85a7-404602e998cd
+*** Element info: {Using=link text, value=Site Admin}
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
+	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
+	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
+	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
+	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
+	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647)
+	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:353)
+	at org.openqa.selenium.remote.RemoteWebDriver.findElementByLinkText(RemoteWebDriver.java:418)
+	at org.openqa.selenium.By$ByLinkText.findElement(By.java:246)
+	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:345)
+	at org.vivoweb.vivo.selenium.tests.AbstractSeleniumTest.clickAndWait(AbstractSeleniumTest.java:46)
+	at org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.rebuildSearchIndexTest(RebuildSearchIndex.java:15)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:497)
+	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
+	at org.testng.TestRunner.privateRun(TestRunner.java:782)
+	at org.testng.TestRunner.run(TestRunner.java:632)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:268)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.run(TestNG.java:1064)
+	at org.vivoweb.vivo.selenium.suites.Suite2.suite2(Suite2.java:18)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:497)
+	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
+	at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:514)
+	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:215)
+	at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:268)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
+	at org.testng.TestNG.run(TestNG.java:1064)
+	at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
+	at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:497)
+	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
+Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"}
+For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
+Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
+System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60'
+Driver info: driver.version: unknown
+	at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659)
+	at <anonymous class>.FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668)
+	at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534)
+	at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539)
+	at <anonymous class>.DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481)
+
1org.vivoweb.vivo.selenium.tests.RebuildSearchIndex@1cf56a1c

+ + \ No newline at end of file diff --git a/selenium/test-output/Command line suite/Command line test.xml b/selenium/test-output/Command line suite/Command line test.xml new file mode 100644 index 00000000..cc202f28 --- /dev/null +++ b/selenium/test-output/Command line suite/Command line test.xml @@ -0,0 +1,47 @@ + + + + + + .FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659) + at .FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668) + at .DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534) + at .DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539) + at .DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481) +... Removed 46 stack frames]]> + + + diff --git a/selenium/test-output/Command line suite/testng-failed.xml b/selenium/test-output/Command line suite/testng-failed.xml new file mode 100644 index 00000000..a31d6710 --- /dev/null +++ b/selenium/test-output/Command line suite/testng-failed.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/selenium/test-output/bullet_point.png b/selenium/test-output/bullet_point.png new file mode 100644 index 0000000000000000000000000000000000000000..176e6d5b3d64d032e76c493e5811a1cf839220b5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! literal 0 HcmV?d00001 diff --git a/selenium/test-output/emailable-report.html b/selenium/test-output/emailable-report.html new file mode 100644 index 00000000..bffe84c4 --- /dev/null +++ b/selenium/test-output/emailable-report.html @@ -0,0 +1,32 @@ + +TestNG Report
Test# Passed# Skipped# FailedTime (ms)Included GroupsExcluded Groups
Command line suite
Command line test0011,334
ClassMethodStartTime (ms)
Command line suite
Command line test — failed
org.vivoweb.vivo.selenium.tests.RebuildSearchIndexrebuildSearchIndexTest14535804120471191

Command line test

org.vivoweb.vivo.selenium.tests.RebuildSearchIndex#rebuildSearchIndexTest

Exception
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"} +Command duration or timeout: 1.18 seconds +For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html +Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06' +System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60' +Driver info: org.openqa.selenium.firefox.FirefoxDriver +Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=43.0.4, platform=MAC, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] +Session ID: 0454c462-95d4-4143-85a7-404602e998cd +*** Element info: {Using=link text, value=Site Admin} + at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) + at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) + at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647) + at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:353) + at org.openqa.selenium.remote.RemoteWebDriver.findElementByLinkText(RemoteWebDriver.java:418) + at org.openqa.selenium.By$ByLinkText.findElement(By.java:246) + at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:345) + at org.vivoweb.vivo.selenium.tests.AbstractSeleniumTest.clickAndWait(AbstractSeleniumTest.java:46) + at org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.rebuildSearchIndexTest(RebuildSearchIndex.java:15) + at org.vivoweb.vivo.selenium.suites.Suite2.suite2(Suite2.java:18) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) +Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"} +For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html +Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06' +System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60' +Driver info: driver.version: unknown + at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659) + at <anonymous class>.FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668) + at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534) + at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539) + at <anonymous class>.DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481) +... Removed 46 stack frames

back to summary

\ No newline at end of file diff --git a/selenium/test-output/failed.png b/selenium/test-output/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..c117be59a9ecd1da15ebf48f6b7f53496302a7cd GIT binary patch literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# literal 0 HcmV?d00001 diff --git a/selenium/test-output/index.html b/selenium/test-output/index.html new file mode 100644 index 00000000..a4b6b8f1 --- /dev/null +++ b/selenium/test-output/index.html @@ -0,0 +1,302 @@ + + + + + + TestNG reports + + + + + + + + + + +
+ Test results +
+ 1 suite, 1 failed test +
+ +
+
+
+
+
+ + org.vivoweb.vivo.selenium.tests.RebuildSearchIndex +
+
+
+
+ + + rebuildSearchIndexTest +
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"} +Command duration or timeout: 1.18 seconds +For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html +Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06' +System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60' +Driver info: org.openqa.selenium.firefox.FirefoxDriver +Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=43.0.4, platform=MAC, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] +Session ID: 0454c462-95d4-4143-85a7-404602e998cd +*** Element info: {Using=link text, value=Site Admin} + at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) + at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) + at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647) + at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:353) + at org.openqa.selenium.remote.RemoteWebDriver.findElementByLinkText(RemoteWebDriver.java:418) + at org.openqa.selenium.By$ByLinkText.findElement(By.java:246) + at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:345) + at org.vivoweb.vivo.selenium.tests.AbstractSeleniumTest.clickAndWait(AbstractSeleniumTest.java:46) + at org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.rebuildSearchIndexTest(RebuildSearchIndex.java:15) + at org.vivoweb.vivo.selenium.suites.Suite2.suite2(Suite2.java:18) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) +Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Site Admin"} +For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html +Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06' +System info: host: 'Grahams-MBP-2', ip: '192.168.1.239', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.3', java.version: '1.8.0_60' +Driver info: driver.version: unknown + at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659) + at <anonymous class>.FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668) + at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534) + at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539) + at <anonymous class>.DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481) +... Removed 46 stack frames +
+
+
+
+
+
+
+
+
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<suite name="Command line suite">
+  <test name="Command line test" preserve-order="false">
+    <classes>
+      <class name="org.vivoweb.vivo.selenium.tests.RebuildSearchIndex"/>
+    </classes>
+  </test> <!-- Command line test -->
+  <test name="Command line test(failed)">
+    <classes>
+      <class name="org.vivoweb.vivo.selenium.tests.RebuildSearchIndex">
+        <methods>
+          <include name="cleanup"/>
+          <include name="rebuildSearchIndexTest"/>
+          <include name="vivoSetup"/>
+          <include name="setUp"/>
+          <include name="vivoTeardown"/>
+          <include name="setup"/>
+        </methods>
+      </class> <!-- org.vivoweb.vivo.selenium.tests.RebuildSearchIndex -->
+    </classes>
+  </test> <!-- Command line test(failed) -->
+</suite> <!-- Command line suite -->
+            
+
+
+
+
+ Tests for Command line suite +
+
+
    +
  • + Command line test (1 class) +
  • +
  • + Command line test(failed) (1 class) +
  • +
+
+
+
+
+ Groups for Command line suite +
+
+
+
+
+
+ Times for Command line suite +
+
+
+ + Total running time: 1 seconds +
+
+
+
+
+
+
+ Reporter output for Command line suite +
+
+
+
+
+
+ 0 ignored methods +
+
+
+
+
+
+ Methods in chronological order +
+
+
+
org.vivoweb.vivo.selenium.tests.RebuildSearchIndex
+
+ vivoSetup + 0 ms +
+
+ setup + 0 ms +
+
+ setUp + 0 ms +
+
+ + + rebuildSearchIndexTest + 0 ms +
+
+ vivoTeardown + 1191 ms +
+
+ cleanup + 1191 ms +
+
+
+
+
+ + diff --git a/selenium/test-output/jquery-1.7.1.min.js b/selenium/test-output/jquery-1.7.1.min.js new file mode 100644 index 00000000..198b3ff0 --- /dev/null +++ b/selenium/test-output/jquery-1.7.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/selenium/test-output/junitreports/TEST-org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.xml b/selenium/test-output/junitreports/TEST-org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.xml new file mode 100644 index 00000000..6c653c34 --- /dev/null +++ b/selenium/test-output/junitreports/TEST-org.vivoweb.vivo.selenium.tests.RebuildSearchIndex.xml @@ -0,0 +1,93 @@ + + + + + + .FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659) + at .FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668) + at .DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534) + at .DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539) + at .DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481) +]]> + + + diff --git a/selenium/test-output/navigator-bullet.png b/selenium/test-output/navigator-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..36d90d395c51912e718b89dd88b4a3fb53aa1d85 GIT binary patch literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class nameMethod nameGroups
org.vivoweb.vivo.selenium.tests.RebuildSearchIndex  
@Test
 rebuildSearchIndexTest 
@BeforeClass
 setup 
 setUp 
@BeforeMethod
@AfterMethod
@AfterClass
 vivoTeardown 
 cleanup 
diff --git a/selenium/test-output/old/Command line suite/groups.html b/selenium/test-output/old/Command line suite/groups.html new file mode 100644 index 00000000..199cb3f1 --- /dev/null +++ b/selenium/test-output/old/Command line suite/groups.html @@ -0,0 +1 @@ +

Groups used for this test run

\ No newline at end of file diff --git a/selenium/test-output/old/Command line suite/index.html b/selenium/test-output/old/Command line suite/index.html new file mode 100644 index 00000000..3577bd28 --- /dev/null +++ b/selenium/test-output/old/Command line suite/index.html @@ -0,0 +1,6 @@ +Results for Command line suite + + + + + diff --git a/selenium/test-output/old/Command line suite/main.html b/selenium/test-output/old/Command line suite/main.html new file mode 100644 index 00000000..0ee4b5b4 --- /dev/null +++ b/selenium/test-output/old/Command line suite/main.html @@ -0,0 +1,2 @@ +Results for Command line suite +Select a result on the left-hand pane. diff --git a/selenium/test-output/old/Command line suite/methods-alphabetical.html b/selenium/test-output/old/Command line suite/methods-alphabetical.html new file mode 100644 index 00000000..3f9f67b8 --- /dev/null +++ b/selenium/test-output/old/Command line suite/methods-alphabetical.html @@ -0,0 +1,16 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
16/01/23 20:20:13 0   <<cleanup    main@1627960023
16/01/23 20:20:12 -1191      rebuildSearchIndexTestmain@1627960023
16/01/23 20:20:12 -1191   >>setUp    main@1627960023
16/01/23 20:20:12 -1191   >>setup    main@1627960023
16/01/23 20:20:12 -1191  >>vivoSetup     main@1627960023
16/01/23 20:20:13 0   <<vivoTeardown    main@1627960023
diff --git a/selenium/test-output/old/Command line suite/methods-not-run.html b/selenium/test-output/old/Command line suite/methods-not-run.html new file mode 100644 index 00000000..54b14cb8 --- /dev/null +++ b/selenium/test-output/old/Command line suite/methods-not-run.html @@ -0,0 +1,2 @@ +

Methods that were not run

+
\ No newline at end of file diff --git a/selenium/test-output/old/Command line suite/methods.html b/selenium/test-output/old/Command line suite/methods.html new file mode 100644 index 00000000..2c664e9a --- /dev/null +++ b/selenium/test-output/old/Command line suite/methods.html @@ -0,0 +1,16 @@ +

Methods run, sorted chronologically

>> means before, << means after


Command line suite

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
16/01/23 20:20:12 0  >>vivoSetup     main@1627960023
16/01/23 20:20:12 0   >>setup    main@1627960023
16/01/23 20:20:12 0   >>setUp    main@1627960023
16/01/23 20:20:12 0      rebuildSearchIndexTestmain@1627960023
16/01/23 20:20:13 1191   <<vivoTeardown    main@1627960023
16/01/23 20:20:13 1191   <<cleanup    main@1627960023
diff --git a/selenium/test-output/old/Command line suite/reporter-output.html b/selenium/test-output/old/Command line suite/reporter-output.html new file mode 100644 index 00000000..063bc2e9 --- /dev/null +++ b/selenium/test-output/old/Command line suite/reporter-output.html @@ -0,0 +1 @@ +

Reporter output

\ No newline at end of file diff --git a/selenium/test-output/old/Command line suite/testng.xml.html b/selenium/test-output/old/Command line suite/testng.xml.html new file mode 100644 index 00000000..d687d4c2 --- /dev/null +++ b/selenium/test-output/old/Command line suite/testng.xml.html @@ -0,0 +1 @@ +testng.xml for Command line suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Command line suite">
  <test name="Command line test" preserve-order="false">
    <classes>
      <class name="org.vivoweb.vivo.selenium.tests.RebuildSearchIndex"/>
    </classes>
  </test> <!-- Command line test -->
  <test name="Command line test(failed)">
    <classes>
      <class name="org.vivoweb.vivo.selenium.tests.RebuildSearchIndex">
        <methods>
          <include name="cleanup"/>
          <include name="rebuildSearchIndexTest"/>
          <include name="vivoSetup"/>
          <include name="setUp"/>
          <include name="vivoTeardown"/>
          <include name="setup"/>
        </methods>
      </class> <!-- org.vivoweb.vivo.selenium.tests.RebuildSearchIndex -->
    </classes>
  </test> <!-- Command line test(failed) -->
</suite> <!-- Command line suite -->
\ No newline at end of file diff --git a/selenium/test-output/old/Command line suite/toc.html b/selenium/test-output/old/Command line suite/toc.html new file mode 100644 index 00000000..e9561341 --- /dev/null +++ b/selenium/test-output/old/Command line suite/toc.html @@ -0,0 +1,30 @@ + + +Results for Command line suite + + + + +

Results for
Command line suite

+ + + + + + + + + + +
1 test1 class1 method:
+  chronological
+  alphabetical
+  not run (0)
0 groupreporter outputtestng.xml
+ +

+

+
Command line test (0/1/0) + Results +
+
+ \ No newline at end of file diff --git a/selenium/test-output/old/index.html b/selenium/test-output/old/index.html new file mode 100644 index 00000000..72664230 --- /dev/null +++ b/selenium/test-output/old/index.html @@ -0,0 +1,9 @@ + +Test results + + +

Test results

+ + + +
SuitePassedFailedSkippedtestng.xml
Total010 
Command line suite010Link
diff --git a/selenium/test-output/passed.png b/selenium/test-output/passed.png new file mode 100644 index 0000000000000000000000000000000000000000..45e85bbfd0f5e85def14b896cfd4331675be2759 GIT binary patch literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 literal 0 HcmV?d00001 diff --git a/selenium/test-output/testng-failed.xml b/selenium/test-output/testng-failed.xml new file mode 100644 index 00000000..a31d6710 --- /dev/null +++ b/selenium/test-output/testng-failed.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/selenium/test-output/testng-reports.css b/selenium/test-output/testng-reports.css new file mode 100644 index 00000000..29588e55 --- /dev/null +++ b/selenium/test-output/testng-reports.css @@ -0,0 +1,309 @@ +body { + margin: 0px 0px 5px 5px; +} + +ul { + margin: 0px; +} + +li { + list-style-type: none; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.navigator-selected { + background: #ffa500; +} + +.wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + overflow: auto; +} + +.navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto; +} + +.suite { + margin: 0px 10px 10px 0px; + background-color: #fff8dc; +} + +.suite-name { + padding-left: 10px; + font-size: 25px; + font-family: Times; +} + +.main-panel-header { + padding: 5px; + background-color: #9FB4D9; //afeeee; + font-family: monospace; + font-size: 18px; +} + +.main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #DEE8FC; //d0ffff; +} + +.rounded-window { + border-radius: 10px; + border-style: solid; + border-width: 1px; +} + +.rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto; +} + +.light-rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; +} + +.rounded-window-bottom { + border-style: solid; + border-width: 0px 1px 1px 1px; + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto; +} + +.method-name { + font-size: 12px; + font-family: monospace; +} + +.method-content { + border-style: solid; + border-width: 0px 0px 1px 0px; + margin-bottom: 10; + padding-bottom: 5px; + width: 80%; +} + +.parameters { + font-size: 14px; + font-family: monospace; +} + +.stack-trace { + white-space: pre; + font-family: monospace; + font-size: 12px; + font-weight: bold; + margin-top: 0px; + margin-left: 20px; +} + +.testng-xml { + font-family: monospace; +} + +.method-list-content { + margin-left: 10px; +} + +.navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; +} + +.suite-section-title { + margin-top: 10px; + width: 80%; + border-style: solid; + border-width: 1px 0px 0px 0px; + font-family: Times; + font-size: 18px; + font-weight: bold; +} + +.suite-section-content { + list-style-image: url(bullet_point.png); +} + +.top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0px 0px 5px 0px; + background-color: #0066ff; + font-family: Times; + color: #fff; + text-align: center; +} + +.top-banner-title-font { + font-size: 25px; +} + +.test-name { + font-family: 'Lucida Grande'; + font-size: 16px; +} + +.suite-icon { + padding: 5px; + float: right; + height: 20; +} + +.test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0px 0px 1px 0px; + border-style: solid; + padding: 5px; +} + +.test-group-name { + font-weight: bold; +} + +.method-in-group { + font-size: 16px; + margin-left: 80px; +} + +table.google-visualization-table-table { + width: 100%; +} + +.reporter-method-name { + font-size: 14px; + font-family: monospace; +} + +.reporter-method-output-div { + padding: 5px; + margin: 0px 0px 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0px 0px 0px 1px; + border-style: solid; +} + +.ignored-class-div { + font-size: 14px; + font-family: monospace; +} + +.ignored-methods-div { + padding: 5px; + margin: 0px 0px 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0px 0px 0px 1px; + border-style: solid; +} + +.border-failed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0px 0px 0px 10px; + border-color: #f00; +} + +.border-skipped { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0px 0px 0px 10px; + border-color: #edc600; +} + +.border-passed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0px 0px 0px 10px; + border-color: #19f52d; +} + +.times-div { + text-align: center; + padding: 5px; +} + +.suite-total-time { + font: 16px 'Lucida Grande'; +} + +.configuration-suite { + margin-left: 20px; +} + +.configuration-test { + margin-left: 40px; +} + +.configuration-class { + margin-left: 60px; +} + +.configuration-method { + margin-left: 80px; +} + +.test-method { + margin-left: 100px; +} + +.chronological-class { + background-color: #0ccff; + border-style: solid; + border-width: 0px 0px 1px 1px; +} + +.method-start { + float: right; +} + +.chronological-class-name { + padding: 0px 0px 0px 5px; + color: #008; +} + +.after, .before, .test-method { + font-family: monospace; + font-size: 14px; +} + +.navigator-suite-header { + font-size: 22px; + margin: 0px 10px 5px 0px; + background-color: #deb887; + text-align: center; +} + +.collapse-all-icon { + padding: 5px; + float: right; +} diff --git a/selenium/test-output/testng-reports.js b/selenium/test-output/testng-reports.js new file mode 100644 index 00000000..5159f819 --- /dev/null +++ b/selenium/test-output/testng-reports.js @@ -0,0 +1,122 @@ +$(document).ready(function() { + $('a.navigator-link').click(function() { + // Extract the panel for this link + var panel = getPanelName($(this)); + + // Mark this link as currently selected + $('.navigator-link').parent().removeClass('navigator-selected'); + $(this).parent().addClass('navigator-selected'); + + showPanel(panel); + }); + + installMethodHandlers('failed'); + installMethodHandlers('skipped'); + installMethodHandlers('passed', true); // hide passed methods by default + + $('a.method').click(function() { + showMethod($(this)); + return false; + }); + + // Hide all the panels and display the first one (do this last + // to make sure the click() will invoke the listeners) + $('.panel').hide(); + $('.navigator-link').first().click(); + + // Collapse/expand the suites + $('a.collapse-all-link').click(function() { + var contents = $('.navigator-suite-content'); + if (contents.css('display') == 'none') { + contents.show(); + } else { + contents.hide(); + } + }); +}); + +// The handlers that take care of showing/hiding the methods +function installMethodHandlers(name, hide) { + function getContent(t) { + return $('.method-list-content.' + name + "." + t.attr('panel-name')); + } + + function getHideLink(t, name) { + var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); + return $(s); + } + + function getShowLink(t, name) { + return $('a.show-methods.' + name + "." + t.attr('panel-name')); + } + + function getMethodPanelClassSel(element, name) { + var panelName = getPanelName(element); + var sel = '.' + panelName + "-class-" + name; + return $(sel); + } + + $('a.hide-methods.' + name).click(function() { + var w = getContent($(this)); + w.hide(); + getHideLink($(this), name).hide(); + getShowLink($(this), name).show(); + getMethodPanelClassSel($(this), name).hide(); + }); + + $('a.show-methods.' + name).click(function() { + var w = getContent($(this)); + w.show(); + getHideLink($(this), name).show(); + getShowLink($(this), name).hide(); + showPanel(getPanelName($(this))); + getMethodPanelClassSel($(this), name).show(); + }); + + if (hide) { + $('a.hide-methods.' + name).click(); + } else { + $('a.show-methods.' + name).click(); + } +} + +function getHashForMethod(element) { + return element.attr('hash-for-method'); +} + +function getPanelName(element) { + return element.attr('panel-name'); +} + +function showPanel(panelName) { + $('.panel').hide(); + var panel = $('.panel[panel-name="' + panelName + '"]'); + panel.show(); +} + +function showMethod(element) { + var hashTag = getHashForMethod(element); + var panelName = getPanelName(element); + showPanel(panelName); + var current = document.location.href; + var base = current.substring(0, current.indexOf('#')) + document.location.href = base + '#' + hashTag; + var newPosition = $(document).scrollTop() - 65; + $(document).scrollTop(newPosition); +} + +function drawTable() { + for (var i = 0; i < suiteTableInitFunctions.length; i++) { + window[suiteTableInitFunctions[i]](); + } + + for (var k in window.suiteTableData) { + var v = window.suiteTableData[k]; + var div = v.tableDiv; + var data = v.tableData + var table = new google.visualization.Table(document.getElementById(div)); + table.draw(data, { + showRowNumber : false + }); + } +} diff --git a/selenium/test-output/testng-results.xml b/selenium/test-output/testng-results.xml new file mode 100644 index 00000000..2b522568 --- /dev/null +++ b/selenium/test-output/testng-results.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + .FirefoxDriver.prototype.findElementInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10659) + at .FirefoxDriver.prototype.findElement(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js:10668) + at .DelayedCommand.prototype.executeInternal_/h(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12534) + at .DelayedCommand.prototype.executeInternal_(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12539) + at .DelayedCommand.prototype.execute/<(file:///var/folders/7d/pmw9wv8n4nz_x9t4ztp_6tgw0000gn/T/anonymous8499514178617750884webdriver-profile/extensions/fxdriver@googlecode.com/components/command-processor.js:12481) +]]> + + + + + + + + + + + + + + + + + diff --git a/selenium/test-output/testng.css b/selenium/test-output/testng.css new file mode 100644 index 00000000..3904800f --- /dev/null +++ b/selenium/test-output/testng.css @@ -0,0 +1,9 @@ +.invocation-failed, .test-failed { background-color: #DD0000; } +.invocation-percent, .test-percent { background-color: #006600; } +.invocation-passed, .test-passed { background-color: #00AA00; } +.invocation-skipped, .test-skipped { background-color: #CCCC00; } + +.main-page { + font-size: x-large; +} +