Je laisserai pour mémoire que cela s'est produit parce que c'était beaucoup emballé.
Premier article auquel j'ai fait référence https://qiita.com/at-946/items/e96eaf3f91a39d180eb3
J'ai essayé de l'implémenter en me référant à l'article ci-dessus, mais j'obtiens une erreur sans navigateur. Pourquoi. .. ..
Failure/Error: driven_by :remote_chrome
Webdrivers::BrowserNotFound: Failed to find Chrome binary.
Lorsque j'ai vérifié diverses choses, le test normal a réussi, mais lorsque j'ai essayé de tester javascript (js: true), il semble que ce soit de la mousse avec l'erreur ci-dessus.
config.before(:each, type: :system, js: true) do
driven_by :remote_chrome
Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
Capybara.server_port = 3000
Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
end
↑ Donc, cette partie de l'article dont j'ai parlé ne fonctionne pas bien ...?
Essayez d'accéder à http: // localhost: 4444 / wd / hub
.
Il semble que cela fonctionne correctement.
Lancer un shell sur un conteneur Web
$ docker-compose run --rm web sh
Vérifiez si la communication est possible
$ ping chrome
64 bytes from ...
Confirmez que les lettres circulent tout le temps. Apparemment, le conteneur Web et le conteneur Chrome sont connectés. Je ne comprends pas de plus en plus. .. ..
Peu importe ce que vous ajoutez ou supprimez en référence à divers autres articles
Failure/Error: driven_by :〇〇〇
Webdrivers::BrowserNotFound: Failed to find Chrome binary.
Souffrant de l'erreur.
Au fait, le Dockerfile ressemble à ceci.
Dockerfile
FROM ruby:2.6.6-alpine3.11
RUN apk --no-cache add tzdata \
libxml2-dev \
curl-dev \
make \
gcc \
libc-dev \
g++ \
bash \
mariadb-dev \
mariadb-client \
yarn \
sqlite-dev
RUN gem install bundler -v "2.0.2"
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["bundle", "exec", "falcon", "--verbose", "serve", "-p", "3000", "-b", "http://0.0.0.0"]
Je suis resté coincé dans une copie et je ne pouvais plus y aller, alors je suis retourné au début.
-Navigateur Web Chrome, Firefox, IE, Opera, etc.
- WebDriver Un module qui expose une API pour faire fonctionner un navigateur
- Selenium Une bibliothèque qui communique avec WebDriver et exploite le navigateur par programmation
(Cité ici https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a)
Vous aurez besoin de ces trois éléments lors du test de votre navigateur. Dans l'environnement avec Docker, ce qui précède n'est pas disponible, vous devez donc les préparer tous.
Aussi, sur la façon de préparer un navigateur --Créer du chrome avec la même image que l'environnement des rails
L'article auquel j'ai fait référence en premier, https: // qiita.com / at-946 / items / e96eaf3f91a39d180eb3
, n'a pas fonctionné. .. ..
https://qiita.com/ngron/items/f61b8635b4d67f666d75#comments Ensuite, je ferai référence à cet article. Ensuite, la nouvelle application des rails a fonctionné! Un peu en avant!
Cependant, j'ai eu une erreur dans l'application qui voulait à l'origine implémenter le code de test. Voici l'erreur à ce moment-là.
/bin/sh: apt-get: not found
Si vous recherchez le texte d'erreur, cet article est un succès. https://qiita.com/HorikawaTokiya/items/a2a174680d7dd759ccae
Alpine Linux? ?? ?? ?? Ubuntu? ?? ?? Pourquoi parler d'OS ...?
Y avait-il quelque chose où le système d'exploitation était réglé ...? Tout en réfléchissant, essayez de trouver une description différente entre la nouvelle application de rails et l'application existante.
Dockerfile
FROM ruby:2.6.6
Dockerfile (application existante)
FROM ruby:2.6.6-alpine3.11
Ah! J'écris Alpine! Mais que voulez-vous dire ...? ?? ?? Puisque j'étais conscient de ce qui est nécessaire pour créer un conteneur pour l'image docker, tout à coup l'histoire du système d'exploitation est sortie et il y a une description du système d'exploitation dans l'image ruby? ?? C'est dans un état.
Ce qui suit a été enseigné par un ingénieur (merci ...)
Alpine utilise APK comme gestionnaire de paquets, et Debian et Ubuntu utilisent APT. Le gestionnaire de packages est comme un endroit qui fournit des outils et des applications qui peuvent être installés sur le système d'exploitation, tels que l'iPhone App Store et Android Play Store. Le gestionnaire de paquets est divisé par OS (ou quelque chose comme une faction), et les applications installées sont légèrement différentes pour chacun. De plus, la même application, telle que MySQL, est appelée mysql-server pour APT et mysql pour APK, qui est également légèrement différente.
Dans le cas de Docker, la raison pour laquelle le système d'exploitation est différent dépend de l'image que vous utilisez.
Par exemple, image Ruby https://hub.docker.com/_/ruby
2.5.8 à 3.0.0, mais le nom du système d'exploitation (ou le nom de code du système d'exploitation) est alpin ou mince après chacun.
APT et APK doivent être considérés comme des applications, et comme APT et APK sont des applications différentes, ils sont utilisés différemment.
Comme il n'y avait aucune raison d'utiliser alpine, j'ai réécrit l'application existante ruby en ubuntu.
Ensuite, si vous suivez cet article https: // qiita.com / ngron / items / f61b8635b4d67f666d75 # comments
plus tôt, le test js passera même avec les applications existantes! C'était long. .. ..
Après tout, je ne comprenais pas pourquoi cela ne fonctionnait pas dans le premier article auquel je faisais référence. Cependant, l'article qui ne fonctionnait pas était de savoir comment ajouter un conteneur pour chrome à docker-compose, et l'article qui fonctionnait était de savoir comment créer du chrome avec la même image que l'environnement rails, donc le premier était pour une raison quelconque, telle qu'une différence de version. Le conteneur Web et le conteneur Chrome n'étaient-ils pas liés? (C'est un mystère que le ping chrome est passé ...)
J'ai essayé plusieurs articles cette fois et j'ai appris qu'il y avait des différences de système d'exploitation dans l'image.
Recommended Posts