First integration test

This commit is contained in:
Arne Keller 2021-01-29 18:23:33 +01:00
parent 5b3a0f3a0f
commit 370acda75c
4 changed files with 147 additions and 0 deletions

26
pom.xml
View File

@ -103,6 +103,17 @@
<version>3.8.1</version> <version>3.8.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
@ -172,6 +183,21 @@
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version> <version>2.22.2</version>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.jacoco</groupId> <groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId> <artifactId>jacoco-maven-plugin</artifactId>

View File

@ -0,0 +1,27 @@
package edu.kit.typicalc.view;
import org.junit.Before;
import org.junit.Rule;
import com.vaadin.testbench.IPAddress;
import com.vaadin.testbench.ScreenshotOnFailureRule;
import com.vaadin.testbench.TestBenchTestCase;
import org.openqa.selenium.firefox.FirefoxDriver;
/**
* Base class for all our integration tests, allowing us to change the applicable driver,
* test URL or other configurations in one place.
*/
public abstract class AbstractIT extends TestBenchTestCase {
@Rule
public ScreenshotOnFailureRule rule = new ScreenshotOnFailureRule(this,
true);
@Before
public void setUp() {
setDriver(new FirefoxDriver());
getDriver().get("http://127.0.0.1:8080");
}
}

View File

@ -0,0 +1,93 @@
package edu.kit.typicalc.view;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import edu.kit.typicalc.view.main.MainViewImpl;
import org.junit.Test;
import org.openqa.selenium.HasCapabilities;
import com.vaadin.testbench.Parameters;
import com.vaadin.testbench.commands.TestBenchCommandExecutor;
/**
* This example contains usage examples of screenshot comparison feature.
* <p>
*/
public class ScreenshotIT extends AbstractIT {
/**
* We'll want to perform some additional setup functions, so we override the
* setUp() method.
*/
@Override
public void setUp() {
super.setUp();
// Set a fixed viewport size so the screenshot is always the same
// resolution
testBench().resizeViewPortTo(1000, 500);
// Define the directory for reference screenshots and for error files
Parameters.setScreenshotReferenceDirectory("src/test/resources/screenshots");
Parameters.setScreenshotErrorDirectory("target/screenshot_errors");
}
@Test
public void initialView() throws Exception {
// Change this calculation after running the test once to see how errors
// in screenshots are verified.
// The output is placed in target/screenshot_errors
generateReferenceIfNotFound("initialView");
// Compare screen with reference image with id "oneplustwo" from the
// reference image directory. Reference image filenames also contain
// browser, version and platform.
assertTrue(
"Screenshot comparison for 'initialView' failed, see "
+ Parameters.getScreenshotErrorDirectory()
+ " for error images",
testBench().compareScreen("initialView"));
}
/**
* Generates a reference screenshot if no reference exists.
* <p>
* This method only exists for demonstration purposes. Normally you should
* perform this task manually after verifying that the screenshots look
* correct.
*
* @param referenceId
* the id of the reference image
* @throws IOException
*/
private void generateReferenceIfNotFound(String referenceId)
throws IOException {
String refName = ((TestBenchCommandExecutor) testBench())
.getReferenceNameGenerator().generateName(referenceId,
((HasCapabilities) getDriver()).getCapabilities());
File referenceFile = new File(
Parameters.getScreenshotReferenceDirectory(), refName + ".png");
if (referenceFile.exists()) {
return;
}
if (!referenceFile.getParentFile().exists()) {
referenceFile.getParentFile().mkdirs();
}
File errorFile = new File(Parameters.getScreenshotErrorDirectory(),
referenceFile.getName());
// Take a screenshot and move it to the reference location
testBench().compareScreen(referenceId);
errorFile.renameTo(referenceFile);
System.out.println("Created new reference file in " + referenceFile);
}
}

View File

@ -5,5 +5,6 @@
<suppressions> <suppressions>
<suppress files="src/main/resources/*" checks=".*" /> <suppress files="src/main/resources/*" checks=".*" />
<suppress files="src/test/resources/*" checks=".*" />
</suppressions> </suppressions>