Parcourir la source

Trying to see if screenshots will show Travis errors

Andy Marks il y a 9 ans
Parent
révision
72d7046bc7

+ 5
- 2
src/test/java/se/citerus/dddsample/acceptance/AbstractAcceptanceTest.java Voir le fichier

@@ -1,7 +1,6 @@
1 1
 package se.citerus.dddsample.acceptance;
2 2
 
3
-import org.junit.After;
4
-import org.junit.Before;
3
+import org.junit.*;
5 4
 import org.openqa.selenium.WebDriver;
6 5
 import org.openqa.selenium.phantomjs.PhantomJSDriver;
7 6
 
@@ -11,6 +10,7 @@ public abstract class AbstractAcceptanceTest {
11 10
     @Before
12 11
     public void setup() {
13 12
         driver = new PhantomJSDriver();
13
+        screenshotTestRule.updateDriver(driver);
14 14
     }
15 15
 
16 16
     @After
@@ -18,4 +18,7 @@ public abstract class AbstractAcceptanceTest {
18 18
         driver.quit();
19 19
 
20 20
     }
21
+    @Rule
22
+    public ScreenshotTestRule screenshotTestRule = new ScreenshotTestRule();
23
+
21 24
 }

+ 43
- 0
src/test/java/se/citerus/dddsample/acceptance/ScreenshotTestRule.java Voir le fichier

@@ -0,0 +1,43 @@
1
+package se.citerus.dddsample.acceptance;
2
+
3
+import org.apache.commons.io.FileUtils;
4
+import org.junit.rules.MethodRule;
5
+import org.junit.runners.model.FrameworkMethod;
6
+import org.junit.runners.model.Statement;
7
+import org.openqa.selenium.OutputType;
8
+import org.openqa.selenium.TakesScreenshot;
9
+import org.openqa.selenium.WebDriver;
10
+
11
+import java.io.File;
12
+
13
+class ScreenshotTestRule implements MethodRule {
14
+    private WebDriver driver;
15
+
16
+    public Statement apply(final Statement statement, final FrameworkMethod frameworkMethod, final Object o) {
17
+        return new Statement() {
18
+            @Override
19
+            public void evaluate() throws Throwable {
20
+                try {
21
+                    statement.evaluate();
22
+                } catch (Throwable t) {
23
+                    captureScreenshot(frameworkMethod.getName());
24
+                    throw t;
25
+                }
26
+            }
27
+
28
+            public void captureScreenshot(String fileName) {
29
+                try {
30
+                    new File("target/surefire-reports/").mkdirs(); // Insure directory is there
31
+                    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
32
+                    FileUtils.copyFile(scrFile, new File("target/surefire-reports/screenshot-" + fileName + ".png"));
33
+                } catch (Exception e) {
34
+                    System.err.println("ERROR: " + e);
35
+                }
36
+            }
37
+        };
38
+    }
39
+
40
+    public void updateDriver(WebDriver driver) {
41
+        this.driver = driver;
42
+    }
43
+}

+ 0
- 6
src/test/java/se/citerus/dddsample/acceptance/pages/LaunchPage.java Voir le fichier

@@ -2,9 +2,6 @@ package se.citerus.dddsample.acceptance.pages;
2 2
 
3 3
 import org.openqa.selenium.By;
4 4
 import org.openqa.selenium.WebDriver;
5
-import org.openqa.selenium.WebElement;
6
-import org.openqa.selenium.support.ui.ExpectedConditions;
7
-import org.openqa.selenium.support.ui.WebDriverWait;
8 5
 
9 6
 import static org.junit.Assert.assertEquals;
10 7
 
@@ -16,9 +13,6 @@ public class LaunchPage {
16 13
         this.driver = driver;
17 14
         this.baseUrl = baseUrl;
18 15
         driver.get(baseUrl + "dddsample");
19
-        WebDriverWait wait = new WebDriverWait(driver, 10);
20
-        wait.until(ExpectedConditions.titleContains("DDDSample"));
21
-
22 16
         assertEquals("DDDSample", driver.getTitle());
23 17
     }
24 18