From f08695c8014e06bb7b9a42701d546a23fac0ef92 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Wed, 25 Sep 2019 19:05:53 +0200 Subject: [PATCH] no-jira: investigate issue with LTI selenium --- .../olat/selenium/page/course/LTIPage.java | 30 +++++++++++-------- .../selenium/page/graphene/OOGraphene.java | 19 ++++++++++++ 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/test/java/org/olat/selenium/page/course/LTIPage.java b/src/test/java/org/olat/selenium/page/course/LTIPage.java index 09e34b2f86a..cd9b3e7acb4 100644 --- a/src/test/java/org/olat/selenium/page/course/LTIPage.java +++ b/src/test/java/org/olat/selenium/page/course/LTIPage.java @@ -45,19 +45,23 @@ public class LTIPage { } public LTIPage start() { - By startBy = By.xpath("//div[contains(@class,'o_button_group')]/a[contains(@onclick,'start')]"); - OOGraphene.waitElement(startBy, browser); - browser.findElement(startBy).click(); - - By iframeBy = By.cssSelector(".o_iframedisplay iframe"); - OOGraphene.waitElement(iframeBy, browser); - - List<WebElement> iframes = browser.findElements(iframeBy); - browser = browser.switchTo().frame(iframes.get(0)); - - By launchedBy = By.xpath("//p[contains(text(),'Launch Validated.')]"); - OOGraphene.waitElement(launchedBy, browser); - + try { + By startBy = By.xpath("//div[contains(@class,'o_button_group')]/a[contains(@onclick,'start')]"); + OOGraphene.waitElement(startBy, browser); + browser.findElement(startBy).click(); + + By iframeBy = By.cssSelector(".o_iframedisplay iframe"); + OOGraphene.waitElement(iframeBy, browser); + + WebElement iframe = browser.findElement(iframeBy); + WebDriver iframeBrowser = browser.switchTo().frame(iframe); + + By launchedBy = By.xpath("//p[contains(text(),'Launch Validated.')]"); + OOGraphene.waitElement(launchedBy, iframeBrowser); + } catch (Exception e) { + OOGraphene.takeScreenshot("LTIPage::start", browser); + throw e; + } 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 3950549ef8b..f9b5c16396a 100644 --- a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java +++ b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java @@ -21,6 +21,7 @@ package org.olat.selenium.page.graphene; import java.io.File; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.time.Duration; import java.util.Calendar; import java.util.Date; @@ -31,11 +32,13 @@ import java.util.function.Predicate; import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.olat.core.logging.Tracing; +import org.olat.core.util.FileUtils; import org.olat.core.util.StringHelper; import org.openqa.selenium.By; import org.openqa.selenium.ElementNotVisibleException; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.StaleElementReferenceException; +import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -746,4 +749,20 @@ public class OOGraphene { //e.printStackTrace(); } } + + public static void takeScreenshot(String test, WebDriver browser) { + TakesScreenshot scrShot = ((TakesScreenshot)browser); + File screenFile = scrShot.getScreenshotAs(org.openqa.selenium.OutputType.FILE); + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd'T'HHmmss"); + String filename = test + "" + format.format(new Date()) + ".jpg"; + File path = new File("screenshots"); + if(!path.exists() && !path.mkdirs()) { + path = new File(System.getProperty("java.io.tmpdir"), "screenshots"); + path.mkdirs(); + } + File screenshotFile = new File(path, filename); + log.error("Write screenshot: {} {}", test, screenshotFile); + FileUtils.copyFileToFile(screenFile, screenshotFile, true); + } } -- GitLab