You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by fe...@apache.org on 2016/02/16 04:43:50 UTC
incubator-zeppelin git commit: Create seperate matrix for selenium
test case
Repository: incubator-zeppelin
Updated Branches:
refs/heads/master 83b4eea59 -> 686921e60
Create seperate matrix for selenium test case
### What is this PR for?
A lot of time travis CI breaks because of selenium test case, and at that point it becomes trivial to know the exact reason. Hence, in this PR creating a separate matrix for testing selenium test cases.
### What type of PR is it?
Improvement
### Is there a relevant Jira issue?
N/A
### How should this be tested?
Check travis UI. It should have a new matrix added.
Author: Prabhjyot Singh <pr...@gmail.com>
Closes #706 from prabhjyotsingh/seperateMatrixForSelenium and squashes the following commits:
bc85814 [Prabhjyot Singh] remove TEST_SELENIUM from first profile
2d334ff [Prabhjyot Singh] create different profile for selenium
5fce1b2 [Prabhjyot Singh] Merge remote-tracking branch 'origin/master' into seperateMatrixForSelenium
c1c883c [Prabhjyot Singh] create seperate matrix for selenium test case
Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/686921e6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/686921e6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/686921e6
Branch: refs/heads/master
Commit: 686921e60edc8d4268a6e3c23b838b0e39030f24
Parents: 83b4eea
Author: Prabhjyot Singh <pr...@gmail.com>
Authored: Sun Feb 14 13:16:24 2016 +0530
Committer: Felix Cheung <fe...@apache.org>
Committed: Mon Feb 15 19:43:43 2016 -0800
----------------------------------------------------------------------
.travis.yml | 4 +
.../org/apache/zeppelin/AbstractZeppelinIT.java | 2 +-
.../java/org/apache/zeppelin/ZeppelinIT.java | 261 ------------------
.../apache/zeppelin/integration/ZeppelinIT.java | 262 +++++++++++++++++++
4 files changed, 267 insertions(+), 262 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/686921e6/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index e680a5c..5495398 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -41,6 +41,10 @@ matrix:
- jdk: "oraclejdk7"
env: SPARK_VER="1.1.1" HADOOP_VER="2.3" PROFILE="-Pspark-1.1 -Phadoop-2.3 -Ppyspark" BUILD_FLAG="package -DskipTests" TEST_FLAG="verify" TEST_PROJECTS="-pl zeppelin-interpreter,zeppelin-zengine,zeppelin-server,zeppelin-display,spark-dependencies,spark -Dtest=org.apache.zeppelin.rest.*Test,org.apache.zeppelin.spark* -DfailIfNoTests=false"
+ # Test selenium with spark module for 1.6.0
+ - jdk: "oraclejdk7"
+ env: TEST_SELENIUM="true" SPARK_VER="1.6.0" HADOOP_VER="2.3" PROFILE="-Pspark-1.6 -Phadoop-2.3 -Ppyspark" BUILD_FLAG="package -DskipTests" TEST_FLAG="verify" TEST_PROJECTS="-pl zeppelin-interpreter,zeppelin-zengine,zeppelin-server,zeppelin-display,spark-dependencies,spark -Dtest=org.apache.zeppelin.AbstractFunctionalSuite -DfailIfNoTests=false"
+
before_install:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/686921e6/zeppelin-server/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
----------------------------------------------------------------------
diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java b/zeppelin-server/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
index 1e442e4..29569fc 100644
--- a/zeppelin-server/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
+++ b/zeppelin-server/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
@@ -97,7 +97,7 @@ abstract public class AbstractZeppelinIT {
}
protected boolean endToEndTestEnabled() {
- return null != System.getenv("CI");
+ return null != System.getenv("TEST_SELENIUM");
}
protected void createNewNote() {
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/686921e6/zeppelin-server/src/test/java/org/apache/zeppelin/ZeppelinIT.java
----------------------------------------------------------------------
diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/ZeppelinIT.java b/zeppelin-server/src/test/java/org/apache/zeppelin/ZeppelinIT.java
deleted file mode 100644
index d876b17..0000000
--- a/zeppelin-server/src/test/java/org/apache/zeppelin/ZeppelinIT.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zeppelin;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.openqa.selenium.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import scala.reflect.internal.Trees;
-
-import java.io.File;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-/**
- * Test Zeppelin with web browser.
- *
- * To test, ZeppelinServer should be running on port 8080
- * On OSX, you'll need firefox 42.0 installed, then you can run with
- *
- * PATH=~/Applications/Firefox.app/Contents/MacOS/:$PATH CI="" \
- * mvn -Dtest=org.apache.zeppelin.ZeppelinIT -Denforcer.skip=true \
- * test -pl zeppelin-server
- *
- */
-public class ZeppelinIT extends AbstractZeppelinIT {
- private static final Logger LOG = LoggerFactory.getLogger(ZeppelinIT.class);
-
-
- @Before
- public void startUp() {
- if (!endToEndTestEnabled()) {
- return;
- }
- driver = WebDriverManager.getWebDriver();
- }
-
- @After
- public void tearDown() {
- if (!endToEndTestEnabled()) {
- return;
- }
-
- driver.quit();
- }
-
- @Test
- public void testAngularDisplay() throws Exception {
- if (!endToEndTestEnabled()) {
- return;
- }
- try {
- createNewNote();
-
- // wait for first paragraph's " READY " status text
- waitForParagraph(1, "READY");
-
- /*
- * print angular template
- * %angular <div id='angularTestButton' ng-click='myVar=myVar+1'>BindingTest_{{myVar}}_</div>
- */
- WebElement paragraph1Editor = driver.findElement(By.xpath(getParagraphXPath(1) + "//textarea"));
- paragraph1Editor.sendKeys("println" + Keys.chord(Keys.SHIFT, "9") + "\""
- + Keys.chord(Keys.SHIFT, "5")
- + "angular <div id='angularTestButton' "
- + "ng" + Keys.chord(Keys.SUBTRACT) + "click='myVar=myVar+1'>"
- + "BindingTest_{{myVar}}_</div>\")");
- paragraph1Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(1, "FINISHED");
-
- // check expected text
- waitForText("BindingTest__", By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
-
- /*
- * Bind variable
- * z.angularBind("myVar", 1)
- */
- assertEquals(1, driver.findElements(By.xpath(getParagraphXPath(2) + "//textarea")).size());
- WebElement paragraph2Editor = driver.findElement(By.xpath(getParagraphXPath(2) + "//textarea"));
- paragraph2Editor.sendKeys("z.angularBind" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\", 1)");
- paragraph2Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(2, "FINISHED");
-
- // check expected text
- waitForText("BindingTest_1_", By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
-
-
- /*
- * print variable
- * print("myVar="+z.angular("myVar"))
- */
- WebElement paragraph3Editor = driver.findElement(By.xpath(getParagraphXPath(3) + "//textarea"));
- paragraph3Editor.sendKeys(
- "print" + Keys.chord(Keys.SHIFT, "9") + "\"myVar=\"" + Keys.chord(Keys.ADD)
- + "z.angular" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\"))");
- paragraph3Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(3, "FINISHED");
-
- // check expected text
- waitForText("myVar=1", By.xpath(
- getParagraphXPath(3) + "//div[@ng-bind=\"paragraph.result.msg\"]"));
-
- /*
- * Click element
- */
- driver.findElement(By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
-
- // check expected text
- waitForText("BindingTest_2_", By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
-
- /*
- * Register watcher
- * z.angularWatch("myVar", (before:Object, after:Object, context:org.apache.zeppelin.interpreter.InterpreterContext) => {
- * z.run(2, context)
- * }
- */
- WebElement paragraph4Editor = driver.findElement(By.xpath(getParagraphXPath(4) + "//textarea"));
- paragraph4Editor.sendKeys(
- "z.angularWatch" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\", "
- + Keys.chord(Keys.SHIFT, "9")
- + "before:Object, after:Object, context:org.apache.zeppelin.interpreter.InterpreterContext)"
- + Keys.EQUALS + ">{ z.run" +Keys.chord(Keys.SHIFT, "9") + "2, context)}");
- paragraph4Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(4, "FINISHED");
-
-
- /*
- * Click element, again and see watcher works
- */
- driver.findElement(By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
-
- // check expected text
- waitForText("BindingTest_3_", By.xpath(
- getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
- waitForParagraph(3, "FINISHED");
-
- // check expected text by watcher
- waitForText("myVar=3", By.xpath(
- getParagraphXPath(3) + "//div[@ng-bind=\"paragraph.result.msg\"]"));
-
- /*
- * Unbind
- * z.angularUnbind("myVar")
- */
- WebElement paragraph5Editor = driver.findElement(By.xpath(getParagraphXPath(5) + "//textarea"));
- paragraph5Editor.sendKeys(
- "z.angularUnbind" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\")");
- paragraph5Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(5, "FINISHED");
-
- // check expected text
- waitForText("BindingTest__",
- By.xpath(getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
-
- /*
- * Bind again and see rebind works.
- */
- paragraph2Editor = driver.findElement(By.xpath(getParagraphXPath(2) + "//textarea"));
- paragraph2Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(2, "FINISHED");
-
- // check expected text
- waitForText("BindingTest_1_",
- By.xpath(getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
-
- driver.findElement(By.xpath("//*[@id='main']/div//h3/span/button[@tooltip='Remove the notebook']"))
- .sendKeys(Keys.ENTER);
- sleep(1000, true);
- driver.findElement(By.xpath("//div[@class='modal-dialog'][contains(.,'delete this notebook')]" +
- "//div[@class='modal-footer']//button[contains(.,'OK')]")).click();
- sleep(100, true);
-
- System.out.println("testCreateNotebook Test executed");
- } catch (Exception e) {
- LOG.error("Exception in ZeppelinIT while testAngularDisplay ", e);
- File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
- throw e;
- }
- }
-
- @Test
- public void testSparkInterpreterDependencyLoading() throws Exception {
- if (!endToEndTestEnabled()) {
- return;
- }
- try {
- // navigate to interpreter page
- WebElement interpreterLink = driver.findElement(By.linkText("Interpreter"));
- interpreterLink.click();
-
- // add new dependency to spark interpreter
- WebElement sparkEditBtn = pollingWait(By.xpath("//div[h3[text()[contains(.,'spark')]]]//button[contains(.,'edit')]"),
- MAX_BROWSER_TIMEOUT_SEC);
- sparkEditBtn.click();
- WebElement depArtifact = driver.findElement(By.xpath("//input[@ng-model='setting.depArtifact']"));
- String artifact = "org.apache.commons:commons-csv:1.1";
- depArtifact.sendKeys(artifact);
- driver.findElement(By.xpath("//button[contains(.,'Save')]")).submit();
- driver.switchTo().alert().accept();
-
- driver.navigate().back();
- createNewNote();
-
- // wait for first paragraph's " READY " status text
- waitForParagraph(1, "READY");
-
- WebElement paragraph1Editor = driver.findElement(By.xpath(getParagraphXPath(1) + "//textarea"));
-
- paragraph1Editor.sendKeys("import org.apache.commons.csv.CSVFormat");
- paragraph1Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
- waitForParagraph(1, "FINISHED");
-
- // check expected text
- assertTrue(waitForText("import org.apache.commons.csv.CSVFormat",
- By.xpath(getParagraphXPath(1) + "//div[starts-with(@id, 'p') and contains(@id, 'text')]/div")));
-
- //delete created notebook for cleanup.
- deleteTestNotebook(driver);
- sleep(1000, true);
-
- // reset dependency
- interpreterLink.click();
- sparkEditBtn = pollingWait(By.xpath("//div[h3[text()[contains(.,'spark')]]]//button[contains(.,'edit')]"),
- MAX_BROWSER_TIMEOUT_SEC);
- sparkEditBtn.click();
- WebElement testDepRemoveBtn = driver.findElement(By.xpath("//tr[descendant::text()[contains(.,'" +
- artifact + "')]]/td[3]/div"));
- sleep(5000, true);
- testDepRemoveBtn.click();
- driver.findElement(By.xpath("//button[contains(.,'Save')]")).submit();
- driver.switchTo().alert().accept();
- } catch (Exception e) {
- LOG.error("Exception in ZeppelinIT while testSparkInterpreterDependencyLoading ", e);
- File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
- throw e;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/686921e6/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
----------------------------------------------------------------------
diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
new file mode 100644
index 0000000..4dd20e8
--- /dev/null
+++ b/zeppelin-server/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
@@ -0,0 +1,262 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.zeppelin.integration;
+
+import org.apache.zeppelin.AbstractZeppelinIT;
+import org.apache.zeppelin.WebDriverManager;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test Zeppelin with web browser.
+ *
+ * To test, ZeppelinServer should be running on port 8080
+ * On OSX, you'll need firefox 42.0 installed, then you can run with
+ *
+ * PATH=~/Applications/Firefox.app/Contents/MacOS/:$PATH TEST_SELENIUM="" \
+ * mvn -Dtest=org.apache.zeppelin.integration.ZeppelinIT -Denforcer.skip=true \
+ * test -pl zeppelin-server
+ *
+ */
+public class ZeppelinIT extends AbstractZeppelinIT {
+ private static final Logger LOG = LoggerFactory.getLogger(ZeppelinIT.class);
+
+
+ @Before
+ public void startUp() {
+ if (!endToEndTestEnabled()) {
+ return;
+ }
+ driver = WebDriverManager.getWebDriver();
+ }
+
+ @After
+ public void tearDown() {
+ if (!endToEndTestEnabled()) {
+ return;
+ }
+
+ driver.quit();
+ }
+
+ @Test
+ public void testAngularDisplay() throws Exception {
+ if (!endToEndTestEnabled()) {
+ return;
+ }
+ try {
+ createNewNote();
+
+ // wait for first paragraph's " READY " status text
+ waitForParagraph(1, "READY");
+
+ /*
+ * print angular template
+ * %angular <div id='angularTestButton' ng-click='myVar=myVar+1'>BindingTest_{{myVar}}_</div>
+ */
+ WebElement paragraph1Editor = driver.findElement(By.xpath(getParagraphXPath(1) + "//textarea"));
+ paragraph1Editor.sendKeys("println" + Keys.chord(Keys.SHIFT, "9") + "\""
+ + Keys.chord(Keys.SHIFT, "5")
+ + "angular <div id='angularTestButton' "
+ + "ng" + Keys.chord(Keys.SUBTRACT) + "click='myVar=myVar+1'>"
+ + "BindingTest_{{myVar}}_</div>\")");
+ paragraph1Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(1, "FINISHED");
+
+ // check expected text
+ waitForText("BindingTest__", By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
+
+ /*
+ * Bind variable
+ * z.angularBind("myVar", 1)
+ */
+ assertEquals(1, driver.findElements(By.xpath(getParagraphXPath(2) + "//textarea")).size());
+ WebElement paragraph2Editor = driver.findElement(By.xpath(getParagraphXPath(2) + "//textarea"));
+ paragraph2Editor.sendKeys("z.angularBind" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\", 1)");
+ paragraph2Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(2, "FINISHED");
+
+ // check expected text
+ waitForText("BindingTest_1_", By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
+
+
+ /*
+ * print variable
+ * print("myVar="+z.angular("myVar"))
+ */
+ WebElement paragraph3Editor = driver.findElement(By.xpath(getParagraphXPath(3) + "//textarea"));
+ paragraph3Editor.sendKeys(
+ "print" + Keys.chord(Keys.SHIFT, "9") + "\"myVar=\"" + Keys.chord(Keys.ADD)
+ + "z.angular" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\"))");
+ paragraph3Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(3, "FINISHED");
+
+ // check expected text
+ waitForText("myVar=1", By.xpath(
+ getParagraphXPath(3) + "//div[@ng-bind=\"paragraph.result.msg\"]"));
+
+ /*
+ * Click element
+ */
+ driver.findElement(By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
+
+ // check expected text
+ waitForText("BindingTest_2_", By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
+
+ /*
+ * Register watcher
+ * z.angularWatch("myVar", (before:Object, after:Object, context:org.apache.zeppelin.interpreter.InterpreterContext) => {
+ * z.run(2, context)
+ * }
+ */
+ WebElement paragraph4Editor = driver.findElement(By.xpath(getParagraphXPath(4) + "//textarea"));
+ paragraph4Editor.sendKeys(
+ "z.angularWatch" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\", "
+ + Keys.chord(Keys.SHIFT, "9")
+ + "before:Object, after:Object, context:org.apache.zeppelin.interpreter.InterpreterContext)"
+ + Keys.EQUALS + ">{ z.run" +Keys.chord(Keys.SHIFT, "9") + "2, context)}");
+ paragraph4Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(4, "FINISHED");
+
+
+ /*
+ * Click element, again and see watcher works
+ */
+ driver.findElement(By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]")).click();
+
+ // check expected text
+ waitForText("BindingTest_3_", By.xpath(
+ getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
+ waitForParagraph(3, "FINISHED");
+
+ // check expected text by watcher
+ waitForText("myVar=3", By.xpath(
+ getParagraphXPath(3) + "//div[@ng-bind=\"paragraph.result.msg\"]"));
+
+ /*
+ * Unbind
+ * z.angularUnbind("myVar")
+ */
+ WebElement paragraph5Editor = driver.findElement(By.xpath(getParagraphXPath(5) + "//textarea"));
+ paragraph5Editor.sendKeys(
+ "z.angularUnbind" + Keys.chord(Keys.SHIFT, "9") + "\"myVar\")");
+ paragraph5Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(5, "FINISHED");
+
+ // check expected text
+ waitForText("BindingTest__",
+ By.xpath(getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
+
+ /*
+ * Bind again and see rebind works.
+ */
+ paragraph2Editor = driver.findElement(By.xpath(getParagraphXPath(2) + "//textarea"));
+ paragraph2Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(2, "FINISHED");
+
+ // check expected text
+ waitForText("BindingTest_1_",
+ By.xpath(getParagraphXPath(1) + "//div[@id=\"angularTestButton\"]"));
+
+ driver.findElement(By.xpath("//*[@id='main']/div//h3/span/button[@tooltip='Remove the notebook']"))
+ .sendKeys(Keys.ENTER);
+ sleep(1000, true);
+ driver.findElement(By.xpath("//div[@class='modal-dialog'][contains(.,'delete this notebook')]" +
+ "//div[@class='modal-footer']//button[contains(.,'OK')]")).click();
+ sleep(100, true);
+
+ System.out.println("testCreateNotebook Test executed");
+ } catch (Exception e) {
+ LOG.error("Exception in ZeppelinIT while testAngularDisplay ", e);
+ File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
+ throw e;
+ }
+ }
+
+ @Test
+ public void testSparkInterpreterDependencyLoading() throws Exception {
+ if (!endToEndTestEnabled()) {
+ return;
+ }
+ try {
+ // navigate to interpreter page
+ WebElement interpreterLink = driver.findElement(By.linkText("Interpreter"));
+ interpreterLink.click();
+
+ // add new dependency to spark interpreter
+ WebElement sparkEditBtn = pollingWait(By.xpath("//div[h3[text()[contains(.,'spark')]]]//button[contains(.,'edit')]"),
+ MAX_BROWSER_TIMEOUT_SEC);
+ sparkEditBtn.click();
+ WebElement depArtifact = driver.findElement(By.xpath("//input[@ng-model='setting.depArtifact']"));
+ String artifact = "org.apache.commons:commons-csv:1.1";
+ depArtifact.sendKeys(artifact);
+ driver.findElement(By.xpath("//button[contains(.,'Save')]")).submit();
+ driver.switchTo().alert().accept();
+
+ driver.navigate().back();
+ createNewNote();
+
+ // wait for first paragraph's " READY " status text
+ waitForParagraph(1, "READY");
+
+ WebElement paragraph1Editor = driver.findElement(By.xpath(getParagraphXPath(1) + "//textarea"));
+
+ paragraph1Editor.sendKeys("import org.apache.commons.csv.CSVFormat");
+ paragraph1Editor.sendKeys(Keys.chord(Keys.SHIFT, Keys.ENTER));
+ waitForParagraph(1, "FINISHED");
+
+ // check expected text
+ assertTrue(waitForText("import org.apache.commons.csv.CSVFormat",
+ By.xpath(getParagraphXPath(1) + "//div[starts-with(@id, 'p') and contains(@id, 'text')]/div")));
+
+ //delete created notebook for cleanup.
+ deleteTestNotebook(driver);
+ sleep(1000, true);
+
+ // reset dependency
+ interpreterLink.click();
+ sparkEditBtn = pollingWait(By.xpath("//div[h3[text()[contains(.,'spark')]]]//button[contains(.,'edit')]"),
+ MAX_BROWSER_TIMEOUT_SEC);
+ sparkEditBtn.click();
+ WebElement testDepRemoveBtn = driver.findElement(By.xpath("//tr[descendant::text()[contains(.,'" +
+ artifact + "')]]/td[3]/div"));
+ sleep(5000, true);
+ testDepRemoveBtn.click();
+ driver.findElement(By.xpath("//button[contains(.,'Save')]")).submit();
+ driver.switchTo().alert().accept();
+ } catch (Exception e) {
+ LOG.error("Exception in ZeppelinIT while testSparkInterpreterDependencyLoading ", e);
+ File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
+ throw e;
+ }
+ }
+}