testcontainers / testcontainers/testcontainers-java
Add ability to increase default timeout for BrowserWebDriverContainer when checking if it's started
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
Hi, seems that on some slow agents we might be hitting the 30s hardcoded timeout. While we can extend BrowserWebDriverContainer to override containerIsStarted() (it's not perfect though since we cannot just copy paste the default content as it uses some private variables), it would be even nicer if the timeout could be configurable.
I'm referring to:
protected void containerIsStarted(InspectContainerResponse containerInfo) {
this.driver = (RemoteWebDriver)Unreliables.retryUntilSuccess(30, TimeUnit.SECONDS, (Callable)Timeouts.getWithTimeout(10, TimeUnit.SECONDS, () -> {
return () -> {
return new RemoteWebDriver(this.getSeleniumAddress(), this.capabilities);
};
}));
if (this.vncRecordingContainer != null) {
LOGGER.debug("Starting VNC recording");
this.vncRecordingContainer.start();
}
}
What I did FTR:
public class XWikiBrowserWebDriverContainer<T extends BrowserWebDriverContainer<T>> extends BrowserWebDriverContainer<T>
{
private Capabilities capabilities;
@Override
protected void containerIsStarted(InspectContainerResponse containerInfo)
{
Unreliables.retryUntilSuccess(60, TimeUnit.SECONDS,
Timeouts.getWithTimeout(20, TimeUnit.SECONDS,
() -> () -> new RemoteWebDriver(this.getSeleniumAddress(), this.capabilities)));
super.containerIsStarted(containerInfo);
}
@Override
public T withCapabilities(Capabilities capabilities)
{
this.capabilities = capabilities;
return super.withCapabilities(capabilities);
}
}
Thanks!
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 BrowserWebDriverContainer.containerIsStarted et par le chemin de retry et de création du driver présenté dans l’issue. Suivez l’utilisation de withCapabilities et de l’état privé, puis localisez les tests existants du démarrage du conteneur avant de rendre le timeout configurable. Le travail est terminé lorsque les agents lents peuvent remplacer l’attente de démarrage sans copier de détails d’implémentation privés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- docker, java
- Domaine
- testing
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100