testcontainers / testcontainers/testcontainers-java
Length of the recording is too long
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 8.7k
- Forks
- 1.9k
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 9
Description
We're using testcontainers for a couple month now for our test environment, but since the beginning we have a problem that the recordings take roughly double the time as the actual test. At the first moment I thought my implementation was not correct, and I tried the examples with the exact same result, therefore it seems there's a problem somewhere else.
We're using the BrowserWebDriverContainer and the VncRecordingContainer with chrome, selenium and junit5.
Connecting via a VNC viewer I have noticed that the browser quits correctly, but the container stays alive for a long period. My guess is that the recording container works fine and the browser container has some process which blocks a shutdown
The following example should execute three tests inside the container, each of the test visits google with a specific search request. The actual test footage ends around 1min and 43sec, but the entire recording is 3min and 13sec long.
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testcontainers.containers.BrowserWebDriverContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.io.File;
@Testcontainers
public class MainTest {
private static final int WAIT_TIME = 2000;
@Container
private final static BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>().withCapabilities(new ChromeOptions())
.withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL, new File("./target/"))
.withNetwork(Network.SHARED).withNetworkAliases("vnchost");
public static RemoteWebDriver driver;
@BeforeAll
static void setup(){
driver = chrome.getWebDriver();
driver.manage().window().maximize();
}
@AfterAll
static void tearDown(){
driver.quit();
}
@Test
@DisplayName("Hunde Test")
public void run3() throws InterruptedException {
showLocalHtml("<!DOCTYPE html><html><h1>Hunde Test</h1></html>", 5);
String[] trees = {"Labrador", "Labrador Retriever", "Golden Retriever", "Yourkshire", "West Highland White Terrier", "Pudel", "Rotweiler", "Dogge", "Windhund", "Husky"};
for (String tree : trees) {
driver.get("https://www.google.de/search?q=" + tree);
Thread.sleep(WAIT_TIME);
}
}
@Test
@DisplayName("Baum Test")
public void run2() throws InterruptedException {
showLocalHtml("<!DOCTYPE html><html><h1>Baum Test</h1></html>", 5);
String[] trees = {"Eiche", "Ahorn", "Kastanie", "Apfelbaum", "Birke", "Tanne", "Buche", "Fichte", "Erle"};
for (String tree : trees) {
driver.get("https://www.google.de/search?q=" + tree);
Thread.sleep(WAIT_TIME);
}
}
@Test
@DisplayName("Zahlen Test")
public void run() throws InterruptedException {
showLocalHtml("<!DOCTYPE html><html><h1>Zahlen Test</h1></html>", 5);
for (int i = 0; i < 10; i++) {
driver.get("https://www.google.de/search?q=" + i);
Thread.sleep(WAIT_TIME);
}
}
private void showLocalHtml(String html, long seconds){
try {
driver.get("data:text/html;charset=utf-8," + html);
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the supplied JUnit 5 example and tracing recording shutdown through BrowserWebDriverContainer and VncRecordingContainer. Compare browser exit with container termination; done means the recording ends when the test footage and browser session finish rather than continuing during shutdown.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, java
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100