From 98510ba06f92544d65051fcc530b7ccdb7cf60ed Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 23 Nov 2015 15:55:04 +0100
Subject: [PATCH] OO-1635: try to harden selenium tests against info blue box

---
 src/test/java/org/olat/selenium/CourseTest.java       |  2 --
 .../page/course/CourseEditorPageFragment.java         |  2 +-
 .../course/EfficiencyStatementConfigurationPage.java  |  1 +
 .../org/olat/selenium/page/course/MembersPage.java    |  1 +
 .../org/olat/selenium/page/course/MyCoursesPage.java  | 11 ++---------
 .../selenium/page/course/PublisherPageFragment.java   |  2 +-
 .../org/olat/selenium/page/graphene/OOGraphene.java   |  9 +++++----
 .../page/repository/RepositoryAccessPage.java         |  1 +
 .../repository/RepositoryEditDescriptionPage.java     |  1 +
 9 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java
index ef7f32ba6a5..f938f292d52 100644
--- a/src/test/java/org/olat/selenium/CourseTest.java
+++ b/src/test/java/org/olat/selenium/CourseTest.java
@@ -712,8 +712,6 @@ public class CourseTest {
 			.next() // -> no problem found
 			.finish();
 		
-		OOGraphene.closeBlueMessageWindow(browser);
-		
 		//User logs in, go to "My courses", navigate the catalog and start
 		//the course
 		LoginPage userLogin = LoginPage.getLoginPage(userBrowser, deploymentUrl);
diff --git a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java
index 4f96250cc15..83d209b60b1 100644
--- a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java
+++ b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java
@@ -497,7 +497,7 @@ public class CourseEditorPageFragment {
 		By autoPublishBy = By.cssSelector("div.modal  a.o_sel_course_quickpublish_auto");
 		browser.findElement(autoPublishBy).click();
 		OOGraphene.waitBusy(browser);
-		
+		OOGraphene.waitAndCloseBlueMessageWindow(browser);
 		return new CoursePageFragment(browser);
 	}
 
diff --git a/src/test/java/org/olat/selenium/page/course/EfficiencyStatementConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/EfficiencyStatementConfigurationPage.java
index ee3c3012572..183a6ec5e45 100644
--- a/src/test/java/org/olat/selenium/page/course/EfficiencyStatementConfigurationPage.java
+++ b/src/test/java/org/olat/selenium/page/course/EfficiencyStatementConfigurationPage.java
@@ -75,6 +75,7 @@ public class EfficiencyStatementConfigurationPage {
 	 * @return
 	 */
 	public CoursePageFragment clickToolbarBack() {
+		OOGraphene.closeBlueMessageWindow(browser);
 		By toolbarBackBy = By.cssSelector("li.o_breadcrumb_back>a");
 		browser.findElement(toolbarBackBy).click();
 		OOGraphene.waitBusy(browser);
diff --git a/src/test/java/org/olat/selenium/page/course/MembersPage.java b/src/test/java/org/olat/selenium/page/course/MembersPage.java
index e33dc2bcefe..f20069a7c00 100644
--- a/src/test/java/org/olat/selenium/page/course/MembersPage.java
+++ b/src/test/java/org/olat/selenium/page/course/MembersPage.java
@@ -154,6 +154,7 @@ public class MembersPage {
 	 * @return
 	 */
 	public CoursePageFragment clickToolbarBack() {
+		OOGraphene.closeBlueMessageWindow(browser);
 		By toolbarBackBy = By.cssSelector("li.o_breadcrumb_back>a");
 		browser.findElement(toolbarBackBy).click();
 		OOGraphene.waitBusy(browser);
diff --git a/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java b/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java
index 14d7b68e744..9d2a180d645 100644
--- a/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java
+++ b/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java
@@ -123,17 +123,10 @@ public class MyCoursesPage {
 	}
 	
 	public MyCoursesPage selectCatalogEntry(String title) {
-		By titleBy = By.cssSelector(".o_sublevel .o_meta h4.o_title a");
+		By titleBy = By.xpath("//div[contains(@class,'o_sublevel')]//div[contains(@class,'o_meta')]//h4[contains(@class,'o_title')]//a[span[text()[contains(.,'" + title + "')]]]");
 		List<WebElement> titleLinks = browser.findElements(titleBy);
 		Assert.assertFalse(titleLinks.isEmpty());
-		WebElement selectCategory = null;
-		for(WebElement titleLink:titleLinks) {
-			if(titleLink.getText().contains(title)) {
-				selectCategory = titleLink;
-			}
-		}
-		Assert.assertNotNull(selectCategory);
-		selectCategory.click();
+		titleLinks.get(0).click();
 		OOGraphene.waitBusy(browser);
 		return this;
 	}
diff --git a/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java b/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java
index 7381a3ce3bf..45750dd021b 100644
--- a/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java
+++ b/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java
@@ -88,7 +88,7 @@ public class PublisherPageFragment {
 		Assert.assertTrue(finish.isEnabled());
 		finish.click();
 		OOGraphene.waitBusy(browser);
-		OOGraphene.closeBlueMessageWindow(browser);
+		OOGraphene.waitAndCloseBlueMessageWindow(browser);
 		return this;
 	}
 	
diff --git a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java
index ea13a8d1b19..a8b503a5a00 100644
--- a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java
+++ b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java
@@ -46,6 +46,8 @@ public class OOGraphene {
 
 	private static final long poolingDuration = 25;
 	
+	private static final By closeBlueBoxButtonBy = By.cssSelector("div.o_alert_info div.o_sel_info_message i.o_icon.o_icon_close");
+	
 	public static void waitBusy(WebDriver browser) {
 		Graphene.waitModel(browser).pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new BusyPredicate());
 	}
@@ -174,16 +176,15 @@ public class OOGraphene {
 	
 	public static final void waitAndCloseBlueMessageWindow(WebDriver browser) {
 		try {
-			Thread.sleep(350);
-		} catch (InterruptedException e) {
+			OOGraphene.waitElement(closeBlueBoxButtonBy, 1, browser);
+		} catch (Exception e) {
 			e.printStackTrace();
 		}
 		closeBlueMessageWindow(browser);
 	}
 	
 	public static final void closeBlueMessageWindow(WebDriver browser) {
-		By closeButtonBy = By.cssSelector("div.o_alert_info div.o_sel_info_message i.o_icon.o_icon_close");
-		List<WebElement> closeButtons = browser.findElements(closeButtonBy);
+		List<WebElement> closeButtons = browser.findElements(closeBlueBoxButtonBy);
 		for(WebElement closeButton:closeButtons) {
 			if(closeButton.isDisplayed()) {
 				try {
diff --git a/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java b/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java
index cc45565dea2..f76fbe7610e 100644
--- a/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java
+++ b/src/test/java/org/olat/selenium/page/repository/RepositoryAccessPage.java
@@ -88,6 +88,7 @@ public class RepositoryAccessPage {
 	 * Click toolbar
 	 */
 	public void clickToolbarBack() {
+		OOGraphene.closeBlueMessageWindow(browser);
 		By toolbarBackBy = By.cssSelector("li.o_breadcrumb_back>a");
 		browser.findElement(toolbarBackBy).click();
 		OOGraphene.waitBusy(browser);
diff --git a/src/test/java/org/olat/selenium/page/repository/RepositoryEditDescriptionPage.java b/src/test/java/org/olat/selenium/page/repository/RepositoryEditDescriptionPage.java
index 1ec9be60c0c..ad78d2c9d9c 100644
--- a/src/test/java/org/olat/selenium/page/repository/RepositoryEditDescriptionPage.java
+++ b/src/test/java/org/olat/selenium/page/repository/RepositoryEditDescriptionPage.java
@@ -86,6 +86,7 @@ public class RepositoryEditDescriptionPage {
 	}
 	
 	public void clickToolbarBack() {
+		OOGraphene.closeBlueMessageWindow(browser);
 		browser.findElement(NavigationPage.toolbarBackBy).click();
 		OOGraphene.waitBusy(browser);
 		
-- 
GitLab