You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by pr...@apache.org on 2020/10/21 09:00:57 UTC
[zeppelin] branch master updated: [ZEPPELIN-5075] Bump up firefox
version
This is an automated email from the ASF dual-hosted git repository.
prabhjyotsingh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new b80dce5 [ZEPPELIN-5075] Bump up firefox version
b80dce5 is described below
commit b80dce567b6a06e8f6daf79d581a1843d81248f7
Author: Prabhjyot Singh <pr...@gmail.com>
AuthorDate: Mon Oct 19 00:18:57 2020 +0530
[ZEPPELIN-5075] Bump up firefox version
### What is this PR for?
The firefox version (31) is currently too old and if selenium test cases fail it becomes difficult to repro the issue.
### What type of PR is it?
[Improvement]
### What is the Jira issue?
* https://issues.apache.org/jira/browse/ZEPPELIN-5075
### How should this be tested?
* CI should be green
* Travis link: https://travis-ci.com/github/prabhjyotsingh/zeppelin/builds/187051708
* Travis link: (latest) https://travis-ci.com/github/prabhjyotsingh/zeppelin/builds/190831750
### Questions:
* Does the licenses files need update?
* Is there breaking changes for older versions?
* Does this needs documentation?
Author: Prabhjyot Singh <pr...@gmail.com>
Author: Prabhjyot Singh <pr...@cloudera.com>
Closes #3928 from prabhjyotsingh/ZEPPELIN-5075 and squashes the following commits:
84aa125ca [Prabhjyot Singh] ensure code editor is visible, if not force it to.
bce7fd8d7 [Prabhjyot Singh] upgrade firfox to 81 reduce FF logs
80ab432d4 [Prabhjyot Singh] Merge remote-tracking branch 'apache-github/master' into ZEPPELIN-5075
e64916617 [Prabhjyot Singh] add condition for running with display 99
d1f78fa7f [Prabhjyot Singh] retry click
4cc2a693c [Prabhjyot Singh] ensure element is always clicked, reducing chances for flaky tests
09fb985ea [Prabhjyot Singh] fix testShowDescriptionOnInterpreterCreate, testAngularDisplay
5dd89f660 [Prabhjyot Singh] fix travis
5c30a22fd [Prabhjyot Singh] fix unused imports
2a7ca66a8 [Prabhjyot Singh] ZEPPELIN-5075: bump up selenium and firefox
Change-Id: I8ed18d10f450c916528b98b9aff1759707cdce7e
---
.travis.yml | 2 +-
zeppelin-integration/pom.xml | 6 +-
.../org/apache/zeppelin/AbstractZeppelinIT.java | 57 ++++++++++----
.../java/org/apache/zeppelin/WebDriverManager.java | 89 +++++++++++-----------
.../apache/zeppelin/integration/InterpreterIT.java | 13 ++--
.../integration/InterpreterModeActionsIT.java | 6 +-
.../zeppelin/integration/ParagraphActionsIT.java | 9 +--
.../apache/zeppelin/integration/ZeppelinIT.java | 28 +++----
8 files changed, 120 insertions(+), 90 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 0672b2f..0966058 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -169,7 +169,7 @@ jobs:
jdk: "openjdk8"
dist: xenial
addons:
- firefox: "31.0"
+ firefox: "81.0"
before_install:
- export PYTHON=2
- export R=true
diff --git a/zeppelin-integration/pom.xml b/zeppelin-integration/pom.xml
index 7beb821..8084a7d 100644
--- a/zeppelin-integration/pom.xml
+++ b/zeppelin-integration/pom.xml
@@ -42,7 +42,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--test library versions-->
- <selenium.java.version>3.8.1</selenium.java.version>
+ <selenium.java.version>3.141.59</selenium.java.version>
<commons.lang3.version>3.7</commons.lang3.version>
<!--plugin library versions-->
@@ -69,6 +69,10 @@
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </exclusion>
</exclusions>
<scope>test</scope>
</dependency>
diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
index 3a8bf58..5d280eb 100644
--- a/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
+++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
@@ -19,12 +19,23 @@ package org.apache.zeppelin;
import com.google.common.base.Function;
+import java.io.File;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;
-import org.openqa.selenium.*;
-import org.openqa.selenium.logging.LogEntries;
-import org.openqa.selenium.logging.LogEntry;
-import org.openqa.selenium.logging.LogType;
+import org.openqa.selenium.By;
+import org.openqa.selenium.ElementClickInterceptedException;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.NoSuchElementException;
+import org.openqa.selenium.OutputType;
+import org.openqa.selenium.TakesScreenshot;
+import org.openqa.selenium.TimeoutException;
+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.FluentWait;
import org.openqa.selenium.support.ui.Wait;
@@ -32,11 +43,8 @@ import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.util.Date;
-import java.util.concurrent.TimeUnit;
-
abstract public class AbstractZeppelinIT {
+
protected static WebDriver driver;
protected final static Logger LOG = LoggerFactory.getLogger(AbstractZeppelinIT.class);
@@ -46,7 +54,19 @@ abstract public class AbstractZeppelinIT {
protected static final long MAX_PARAGRAPH_TIMEOUT_SEC = 120;
protected void setTextOfParagraph(int paragraphNo, String text) {
- String editorId = driver.findElement(By.xpath(getParagraphXPath(paragraphNo) + "//div[contains(@class, 'editor')]")).getAttribute("id");
+ String paragraphXpath = getParagraphXPath(paragraphNo);
+
+ try {
+ driver.manage().timeouts().implicitlyWait(100, TimeUnit.MILLISECONDS);
+ // make sure ace code is visible, if not click on show editor icon to make it visible
+ driver.findElement(By.xpath(paragraphXpath + "//span[@class='icon-size-fullscreen']")).click();
+ } catch (NoSuchElementException e) {
+ // ignore
+ } finally {
+ driver.manage().timeouts().implicitlyWait(AbstractZeppelinIT.MAX_BROWSER_TIMEOUT_SEC, TimeUnit.SECONDS);
+ }
+ String editorId = pollingWait(By.xpath(paragraphXpath + "//div[contains(@class, 'editor')]"),
+ MIN_IMPLICIT_WAIT).getAttribute("id");
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor) driver).executeScript("ace.edit('" + editorId + "'). setValue('" + text + "')");
} else {
@@ -56,8 +76,7 @@ abstract public class AbstractZeppelinIT {
protected void runParagraph(int paragraphNo) {
By by = By.xpath(getParagraphXPath(paragraphNo) + "//span[@class='icon-control-play']");
- pollingWait(by, 5);
- driver.findElement(by).click();
+ clickAndWait(by);
}
@@ -94,8 +113,8 @@ abstract public class AbstractZeppelinIT {
protected WebElement pollingWait(final By locator, final long timeWait) {
Wait<WebDriver> wait = new FluentWait<>(driver)
- .withTimeout(timeWait, TimeUnit.SECONDS)
- .pollingEvery(1, TimeUnit.SECONDS)
+ .withTimeout(Duration.of(timeWait, ChronoUnit.SECONDS))
+ .pollingEvery(Duration.of(1, ChronoUnit.SECONDS))
.ignoring(NoSuchElementException.class);
return wait.until(new Function<WebDriver, WebElement>() {
@@ -136,8 +155,16 @@ abstract public class AbstractZeppelinIT {
}
protected void clickAndWait(final By locator) {
- pollingWait(locator, MAX_IMPLICIT_WAIT).click();
- ZeppelinITUtils.sleep(1000, false);
+ WebElement element = pollingWait(locator, MAX_IMPLICIT_WAIT);
+ try {
+ element.click();
+ ZeppelinITUtils.sleep(1000, false);
+ } catch (ElementClickInterceptedException e) {
+ // if the previous click did not happened mean the element is behind another clickable element
+ Actions action = new Actions(driver);
+ action.moveToElement(element).click().build().perform();
+ ZeppelinITUtils.sleep(1500, false);
+ }
}
protected void handleException(String message, Exception e) throws Exception {
diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/WebDriverManager.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/WebDriverManager.java
index 768113f..ac5e4c8 100644
--- a/zeppelin-integration/src/test/java/org/apache/zeppelin/WebDriverManager.java
+++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/WebDriverManager.java
@@ -19,6 +19,7 @@ package org.apache.zeppelin;
import static org.junit.Assert.fail;
+import com.google.common.collect.ImmutableMap;
import java.io.File;
import java.io.IOException;
import java.net.URL;
@@ -29,9 +30,7 @@ import org.openqa.selenium.By;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxDriver.SystemProperty;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.GeckoDriverService;
@@ -50,52 +49,56 @@ public class WebDriverManager {
private static String downLoadsDir = "";
- private static String GECKODRIVER_VERSION = "0.19.1";
+ private static String GECKODRIVER_VERSION = "0.27.0";
public static WebDriver getWebDriver() {
WebDriver driver = null;
- if (driver == null) {
- try {
- FirefoxBinary ffox = new FirefoxBinary();
- if ("true".equals(System.getenv("TRAVIS"))) {
- ffox.setEnvironmentProperty("DISPLAY", ":99"); // xvfb is supposed to
- // run with DISPLAY 99
- }
- int firefoxVersion = WebDriverManager.getFirefoxVersion();
- LOG.info("Firefox version " + firefoxVersion + " detected");
-
- downLoadsDir = FileUtils.getTempDirectory().toString();
-
- String tempPath = downLoadsDir + "/firefox/";
-
- downloadGeekoDriver(firefoxVersion, tempPath);
-
- FirefoxProfile profile = new FirefoxProfile();
- profile.setPreference("browser.download.folderList", 2);
- profile.setPreference("browser.download.dir", downLoadsDir);
- profile.setPreference("browser.helperApps.alwaysAsk.force", false);
- profile.setPreference("browser.download.manager.showWhenStarting", false);
- profile.setPreference("browser.download.manager.showAlertOnComplete", false);
- profile.setPreference("browser.download.manager.closeWhenDone", true);
- profile.setPreference("app.update.auto", false);
- profile.setPreference("app.update.enabled", false);
- profile.setPreference("dom.max_script_run_time", 0);
- profile.setPreference("dom.max_chrome_script_run_time", 0);
- profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
- "application/x-ustar,application/octet-stream,application/zip,text/csv,text/plain");
- profile.setPreference("network.proxy.type", 0);
-
- System.setProperty(GeckoDriverService.GECKO_DRIVER_EXE_PROPERTY, tempPath + "geckodriver");
- System.setProperty(SystemProperty.DRIVER_USE_MARIONETTE, "false");
-
- FirefoxOptions firefoxOptions = new FirefoxOptions();
- firefoxOptions.setBinary(ffox);
- firefoxOptions.setProfile(profile);
- driver = new FirefoxDriver(firefoxOptions);
- } catch (Exception e) {
- LOG.error("Exception in WebDriverManager while FireFox Driver ", e);
+ try {
+ int firefoxVersion = WebDriverManager.getFirefoxVersion();
+ LOG.info("Firefox version " + firefoxVersion + " detected");
+
+ downLoadsDir = FileUtils.getTempDirectory().toString();
+
+ String tempPath = downLoadsDir + "/firefox/";
+
+ downloadGeekoDriver(firefoxVersion, tempPath);
+
+ FirefoxProfile profile = new FirefoxProfile();
+ profile.setPreference("browser.download.folderList", 2);
+ profile.setPreference("browser.download.dir", downLoadsDir);
+ profile.setPreference("browser.helperApps.alwaysAsk.force", false);
+ profile.setPreference("browser.download.manager.showWhenStarting", false);
+ profile.setPreference("browser.download.manager.showAlertOnComplete", false);
+ profile.setPreference("browser.download.manager.closeWhenDone", true);
+ profile.setPreference("app.update.auto", false);
+ profile.setPreference("app.update.enabled", false);
+ profile.setPreference("dom.max_script_run_time", 0);
+ profile.setPreference("dom.max_chrome_script_run_time", 0);
+ profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
+ "application/x-ustar,application/octet-stream,application/zip,text/csv,text/plain");
+ profile.setPreference("network.proxy.type", 0);
+
+ FirefoxOptions firefoxOptions = new FirefoxOptions();
+ firefoxOptions.setProfile(profile);
+
+ ImmutableMap<String, String> displayImmutable = ImmutableMap.<String, String>builder().build();
+ if ("true".equals(System.getenv("TRAVIS"))) {
+ // Run with DISPLAY 99 for TRAVIS or other build machine
+ displayImmutable = ImmutableMap.of("DISPLAY", ":99");
}
+
+ System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "/dev/null");
+ System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
+
+ driver = new FirefoxDriver(
+ new GeckoDriverService.Builder()
+ .usingDriverExecutable(new File(tempPath + "geckodriver"))
+ .withEnvironment(displayImmutable)
+ .build(), firefoxOptions);
+
+ } catch (Exception e) {
+ LOG.error("Exception in WebDriverManager while FireFox Driver ", e);
}
if (driver == null) {
diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterIT.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterIT.java
index bdf7811..a7257a0 100644
--- a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterIT.java
+++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterIT.java
@@ -51,13 +51,14 @@ public class InterpreterIT extends AbstractZeppelinIT {
public void testShowDescriptionOnInterpreterCreate() throws Exception {
try {
// navigate to interpreter page
- WebElement settingButton = driver.findElement(By.xpath("//button[@class='nav-btn dropdown-toggle ng-scope']"));
- settingButton.click();
- WebElement interpreterLink = driver.findElement(By.xpath("//a[@href='#/interpreter']"));
- interpreterLink.click();
+ // setting button
+ clickAndWait(By.xpath("//button[@class='nav-btn dropdown-toggle ng-scope']"));
- WebElement createButton = driver.findElement(By.xpath("//button[contains(., 'Create')]"));
- createButton.click();
+ // interpreter link
+ clickAndWait(By.xpath("//a[@href='#/interpreter']"));
+
+ // create button
+ clickAndWait(By.xpath("//button[contains(., 'Create')]"));
Select select = new Select(driver.findElement(By.xpath("//select[@ng-change='newInterpreterGroupChange()']")));
select.selectByVisibleText("spark");
diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterModeActionsIT.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterModeActionsIT.java
index 200a4b2..1b2f727 100644
--- a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterModeActionsIT.java
+++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/InterpreterModeActionsIT.java
@@ -475,8 +475,7 @@ public class InterpreterModeActionsIT extends AbstractZeppelinIT {
element = (new WebDriverWait(driver, MAX_BROWSER_TIMEOUT_SEC))
.until(ExpectedConditions.visibilityOfElementLocated(locator));
if (element.isDisplayed()) {
- pollingWait(By.xpath("//*[@id='notebook-names']//a[contains(@href, '" + user2noteId + "')]"),
- MAX_BROWSER_TIMEOUT_SEC).click();
+ clickAndWait(By.xpath("//*[@id='notebook-names']//a[contains(@href, '" + user2noteId + "')]"));
}
clickAndWait(By.xpath("//*[@id='actionbar']//span[contains(@uib-tooltip, 'Interpreter binding')]"));
clickAndWait(By.xpath("//div[@data-ng-repeat='item in interpreterBindings' and contains(., 'python')]//a"));
@@ -754,8 +753,7 @@ public class InterpreterModeActionsIT extends AbstractZeppelinIT {
element = (new WebDriverWait(driver, MAX_BROWSER_TIMEOUT_SEC))
.until(ExpectedConditions.visibilityOfElementLocated(locator));
if (element.isDisplayed()) {
- pollingWait(By.xpath("//*[@id='notebook-names']//a[contains(@href, '" + user2noteId + "')]"),
- MAX_BROWSER_TIMEOUT_SEC).click();
+ clickAndWait(By.xpath("//*[@id='notebook-names']//a[contains(@href, '" + user2noteId + "')]"));
}
clickAndWait(By.xpath("//*[@id='actionbar']//span[contains(@uib-tooltip, 'Interpreter binding')]"));
clickAndWait(By.xpath("//div[@data-ng-repeat='item in interpreterBindings' and contains(., 'python')]//a"));
diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java
index b7e6cd2..a076908 100644
--- a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java
+++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java
@@ -57,7 +57,7 @@ public class ParagraphActionsIT extends AbstractZeppelinIT {
public void testCreateNewButton() throws Exception {
try {
createNewNote();
- Actions action = new Actions(driver);
+
waitForParagraph(1, "READY");
Integer oldNosOfParas = driver.findElements(By.xpath("//div[@ng-controller=\"ParagraphCtrl\"]")).size();
collector.checkThat("Before Insert New : the number of paragraph ",
@@ -80,9 +80,7 @@ public class ParagraphActionsIT extends AbstractZeppelinIT {
setTextOfParagraph(1, " original paragraph ");
- WebElement newPara = driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class,'new-paragraph')][1]"));
- action.moveToElement(newPara).click().build().perform();
- ZeppelinITUtils.sleep(1000, false);
+ clickAndWait(By.xpath(getParagraphXPath(1) + "//div[contains(@class,'new-paragraph')][1]"));
waitForParagraph(1, "READY");
collector.checkThat("Paragraph is created above",
@@ -90,8 +88,7 @@ public class ParagraphActionsIT extends AbstractZeppelinIT {
CoreMatchers.equalTo(StringUtils.EMPTY));
setTextOfParagraph(1, " this is above ");
- newPara = driver.findElement(By.xpath(getParagraphXPath(2) + "//div[contains(@class,'new-paragraph')][2]"));
- action.moveToElement(newPara).click().build().perform();
+ clickAndWait(By.xpath(getParagraphXPath(2) + "//div[contains(@class,'new-paragraph')][2]"));
waitForParagraph(3, "READY");
diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
index 9315056..21af0eb 100644
--- a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
+++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
@@ -17,6 +17,10 @@
package org.apache.zeppelin.integration;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import org.apache.zeppelin.AbstractZeppelinIT;
import org.apache.zeppelin.WebDriverManager;
import org.apache.zeppelin.ZeppelinITUtils;
@@ -34,10 +38,6 @@ import org.openqa.selenium.WebElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.commons.lang3.StringUtils.isNotBlank;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
/**
* Test Zeppelin with web browser.
*
@@ -114,8 +114,8 @@ public class ZeppelinIT extends AbstractZeppelinIT {
/*
* Click element
*/
- driver.findElement(By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
+ clickAndWait(By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
// check expected text
waitForText("BindingTest_2_", By.xpath(
@@ -135,8 +135,8 @@ public class ZeppelinIT extends AbstractZeppelinIT {
/*
* Click element, again and see watcher works
*/
- driver.findElement(By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
+ clickAndWait(By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
// check expected text
waitForText("BindingTest_3_", By.xpath(
@@ -151,8 +151,8 @@ public class ZeppelinIT extends AbstractZeppelinIT {
/*
* Click element, again and see watcher still works
*/
- driver.findElement(By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
+ clickAndWait(By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
// check expected text
waitForText("BindingTest_4_", By.xpath(
getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
@@ -187,8 +187,8 @@ public class ZeppelinIT extends AbstractZeppelinIT {
driver.findElement(By.xpath(".//*[@id='main']//button[@ng-click='moveNoteToTrash(note.id)']"))
.sendKeys(Keys.ENTER);
ZeppelinITUtils.sleep(1000, false);
- driver.findElement(By.xpath("//div[@class='modal-dialog'][contains(.,'This note will be moved to trash')]" +
- "//div[@class='modal-footer']//button[contains(.,'OK')]")).click();
+ clickAndWait(By.xpath("//div[@class='modal-dialog'][contains(.,'This note will be moved to trash')]" +
+ "//div[@class='modal-footer']//button[contains(.,'OK')]"));
ZeppelinITUtils.sleep(100, false);
LOG.info("testCreateNotebook Test executed");
@@ -304,8 +304,8 @@ public class ZeppelinIT extends AbstractZeppelinIT {
setTextOfParagraph(2, "%sh echo NEW_VALUE");
// Click on 1 paragraph to trigger z.runParagraph() function
- driver.findElement(By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularRunParagraph\"]")).click();
+
+ clickAndWait(By.xpath(getParagraphXPath(1) + "//div[@id=\"angularRunParagraph\"]"));
waitForParagraph(2, "FINISHED");