The goal is a better integration of screenshots taking in maven executed selenium2 functional tests, storing and versioning of screenshots to get a report of visual differences between two application versions.
See sample report http://kreyssel.github.com/selenium2-visualdiff/visualdiff.html.
Embed jUnit4 and the selenium2-visualdiff core library as dependencies in your funtional test maven module:
<dependencies> ... <dependency> <groupId>org.kreyssel.selenium2.visualdiff</groupId> <artifactId>visualdiff-core</artifactId> <version>1.0.0-SNAPSHOT</version> <scope>test</scope> </dependency> ... </dependencies>
Add the selenium2-visualdiff-maven-plugin to the maven module:
<plugins> ... <plugin> <groupId>org.kreyssel.selenium2.visualdiff</groupId> <artifactId>visualdiff-maven-plugin</artifactId> <version>1.0.0-SNAPSHOT</version> <executions> <execution> <goals> <goal>prepare</goal> <goal>package</goal> </goals> </execution> </executions> </plugin> ... </plugins>
And after all, embed org.kreyssel.selenium2.visualdiff.core.junit4.TakesScreenshotRule in your functional test:
package org.kreyssel.selenium2.visualdiff.it; import org.kreyssel.selenium2.visualdiff.core.junit4.TakesScreenshotRule; /** * SimpleSeleniumIT. */ public class SimpleSeleniumIT { @Rule public TakesScreenshotRule screenshot = new TakesScreenshotRule(); RemoteWebDriver driver; @Before public void init() { driver = createDriver(); } @After public void destroy() { driver.close(); } @Test public void test1() throws Exception { driver.get( "http://localhost:8080" ); screenshot.takeScreenshot( driver ); } }
After the executions of functional tests in a maven run, all screenshots taken at this time are packaged as zip and attached to the build as ${project.build.finalName}-screenshots.zip. This archive is deployed to maven repository in the deploy phase of the maven build.
The selenium2-visualdiff report plugin generates a report that shows you the different screens per testcase compared to the previous release.