Permalink
Browse files

Adding tests for uploading a file

  • Loading branch information...
1 parent c0ddecf commit 575bb7e2eddf1c58d12affd39df661351acc7816 @jimevans jimevans committed Oct 31, 2012
Showing with 97 additions and 0 deletions.
  1. +97 −0 test/java/src/test/java/ghostdriver/FileUploadTest.java
View
97 test/java/src/test/java/ghostdriver/FileUploadTest.java
@@ -0,0 +1,97 @@
+/*
+This file is part of the GhostDriver project from Neustar inc.
+
+Copyright (c) 2012, Ivan De Marino <ivan.de.marino@gmail.com / detronizator@gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package ghostdriver;
+
+import java.io.File;
+import java.io.BufferedWriter;
+import java.io.OutputStreamWriter;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.junit.Test;
+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;
+
+import static org.junit.Assert.assertEquals;
+
+public class FileUploadTest extends BaseTest {
+ private static final String LOREM_IPSUM_TEXT = "lorem ipsum dolor sit amet";
+ private static final String FILE_HTML = "<div>" + LOREM_IPSUM_TEXT + "</div>";
+
+ @Test
+ public void checkFileUploadCompletes() throws IOException {
+ WebDriver d = getDriver();
+
+ // Create the test file for uploading
+ File testFile = File.createTempFile("webdriver", "tmp");
+ testFile.deleteOnExit();
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
+ new FileOutputStream(testFile.getAbsolutePath()), "utf-8"));
+ writer.write(FILE_HTML);
+ writer.close();
+
+ d.get("http://ci.seleniumhq.org:2310/common/upload.html");
+ d.findElement(By.id("upload")).sendKeys(testFile.getAbsolutePath());
+ d.findElement(By.id("go")).submit();
+
+ // Uploading files across a network may take a while, even if they're really small.
+ // Wait for the loading label to disappear.
+ WebDriverWait wait = new WebDriverWait(d, 30);
+ wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("upload_label")));
+
+ d.switchTo().frame("upload_target");
+
+ wait = new WebDriverWait(d, 5);
+ wait.until(ExpectedConditions.textToBePresentInElement(By.xpath("//body"), LOREM_IPSUM_TEXT));
+
+ // Navigate after file upload to verify callbacks are properly released.
+ d.get("http://www.google.com/");
+ }
+
+ @Test
+ public void checkOnChangeEventIsFiredOnFileUpload() throws IOException {
+ WebDriver d = getDriver();
+
+ d.get("http://ci.seleniumhq.org:2310/common/formPage.html");
+ WebElement uploadElement = d.findElement(By.id("upload"));
+ WebElement result = d.findElement(By.id("fileResults"));
+ assertEquals("", result.getText());
+
+ File file = File.createTempFile("test", "txt");
+ file.deleteOnExit();
+
+ uploadElement.sendKeys(file.getAbsolutePath());
+ // Shift focus to something else because send key doesn't make the focus leave
+ d.findElement(By.id("id-name1")).click();
+
+ assertEquals("changed", result.getText());
+ }
+}

0 comments on commit 575bb7e

Please sign in to comment.