testcontainers / testcontainers/testcontainers-java
Length of the recording is too long
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 8.7k
- Forks
- 1.9k
- Merge moyen
- 2 j 17 h
- PR mergées (30 j)
- 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();
}
}
}
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple JUnit 5 fourni et suivre l’arrêt de l’enregistrement à travers BrowserWebDriverContainer et VncRecordingContainer. Comparez la fermeture du navigateur avec l’arrêt du conteneur ; le travail est terminé lorsque l’enregistrement se termine avec la fin de la séquence vidéo du test et de la session du navigateur, au lieu de continuer pendant l’arrêt.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- docker, java
- Domaine
- testing
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 30/100