3

TL; DR: Toute idée sur la façon de configurer correctement capybara pour piloter un navigateur sélénium distant dans un conteneur docker avec le test Rails minitest par défaut du système? Je cours Rails dans un env. Dockerized .. Maintenant je veux commencer quelques "essais de système" mais depuis que je cours dedans Docker je viens avec quelques problèmes. J'utilise la suite de tests par défaut (minitest?) Avec les gemmes capybara et selenium-webdriver.Test du système Rails avec capybara et navigateur sans sélénium dans Docker

je l'ai déjà installé le paquet chromedriver dans le récipient en utilisant les éléments suivants:

RUN apt-get install -y chromedriver \ 
    && ln -s /usr/lib/chromium-browser/chromedriver /usr/local/bin 

Mais en cours d'exécution rails test:system génère l'erreur suivante Selenium::WebDriver::Error::WebDriverError: Unable to find chromedriver.

En fait, je ne sais pas si chrome lui-même est installé ou non?
which chrome ne génère rien.
which chromium sorties /usr/bin/chromium.

J'ai également essayé avec xvfb sans succès. Donc, comme je n'avais aucune idée, j'ai essayé d'aller plus loin et d'aller avec un environnement de test de système dockerisé. J'ai trouvé quelques images de Docker à partir de sélénium. Alors je courais entre mes rails et les conteneurs de base de données contenant un selenium-standalone-chrome (la docker-compose.yml I'm using is here réelle)

Je trouve des informations utiles sur la configuration à faire pour laisser pilote capybara la à distance navigateur sélénium.
Tous les exemples que j'ai trouvés sur internet utilisent rspec, mais depuis que j'utilise le minispec par défaut j'ai essayé d'adapter le pilote capybara à minispec mais j'avais quelques doutes sur comment le faire et où mettre la configuration.

Pour les tests du système, j'ai supposé que le meilleur emplacement est le fichier application_system_test_case.rb. J'ai aussi trouvé et j'ai essayé beaucoup de différentes configurations capybara et je me retrouve avec la suite qui semble la plus complète (available here)

A ce moment le test semble bien fonctionner car je n'ai pas d'erreur mais ça échoue toujours.

Il échoue indépendamment d'un appel à la configuration du pilote (la méthode setup_remote où j'ai défini l'hôte et le port du serveur) avant le cas de test.

Avec ou sans appel que je suis le « site ne peut pas être atteint » erreur (here is the screenshot)
est ici the test file I used. (Test de certains réagissent affichage dynamique)

Cependant, je peux accéder au conteneur de sélénium avec l'URL donnée à partir du navigateur de ma machine hôte. Et les deux conteneurs se voient les uns les autres. J'ai fait un ping depuis l'intérieur du conteneur.

Voici SO questions qui sont utiles ne fonctionnent pas pour moi:
Dockerized selenium browser cannot access Capybara test url
How can I run headless browser system tests in Rails 5.1?

Toute idée sur la façon de configurer correctement capybara pour être en mesure de conduire un navigateur de sélénium à distance dans un récipient docker avec par défaut Rails minitest test du système?

Merci beaucoup.

+0

Salut à nouveau .. L'adresse par défaut du sélénium à distance semble être une adresse comme 'http: //172.18.0.2: 4444/wd/hub /'. Mais lorsque j'accède à cette URL à partir de l'hôte en utilisant un navigateur, il redirige vers la page suivante 'http: //172.18.0.2: 4444/wd/hub/static/resource/hub.html'. J'ai donc essayé de mettre cette URL dans la partie du pilote de registre. Cette fois j'ai eu d'autres erreurs de sélénium. Mais le plus important est que parmi les errros de la console, j'ai aussi obtenu quelques * "System Info" * qui affiche les mêmes métadonnées affichées par le site de sélénium, ce qui signifie que la connexion rails-> sélénium semble bien fonctionner. – SanjiBukai

Répondre