【发布时间】:2018-10-13 00:17:51
【问题描述】:
我们一直难倒试图弄清楚如何让 Selenium JavaScript 测试与我们的 Dockerised Ruby (Hanami) 应用程序一起工作。对于不依赖 JavaScript 的规范示例,当然,Capybara-default Rack::Test 驱动程序就足够了,但是每个现代应用程序都依赖于 JavaScript 做某件事或另一件事,而我们的应用程序现在/将来也不例外。
我已经阅读了一些关于 SO 的答案,并开始在 GitHub 上寻找随机的类似项目,但我们在这里被阻止的时间越来越长,政治上越来越不可持续。
总结一下:
- 如果 no 非 JS 规范在同一个
rake调用中运行,我们可以成功运行使用 JavaScript 的特性规范。 (我们使用jbodah/minitest-tagz过滤规范调用); - 在运行我们的全套规范时,Firefox Marionette 在运行启用 JavaScript 的示例时挂起,其日志消息表明它没有应连接到的 IP 地址。
我们只找到了一组非常有限的教程/演练,这些教程/演练显然适用,到 2018 年大部分时间都已经很长了。我们最公然推崇的两个是
- Integration testing with dockerized Selenium and Capybara,作者 Ahmet Kizilay,2016 年 2 月;和
- Dockerized Rails Capybara tests on top of Selenium,作者:Alfredo Motta,2016 年 5 月。
很可能,或者至少很可能,我们一直误读或掩饰这些现在困扰我们的东西。还值得注意的是,Docker 内部结构,尤其是与网络相关的内部结构,在过去两年中似乎有了显着的发展,这可能与我们的问题有关。
我已将以下文件的副本包含在 Gist 中,因为它们的数量太多,无法粘贴到此处:
-
00-Capybara-Selenium-Docker-confusion__readme.md:这个问题陈述; -
01-docker-compose.yml:应用程序的docker-compose.yml文件; -
02-run_tests.sh:scripts/run_tests.sh文件,作为command运行,由web容器运行,在docker-compose文件中指定; -
03-features_helper.rb:每个特性规范所需的`spec/features_helper';主要关注 Selenium 设置; -
04-Dockerfile:用于构建web容器的Dockerfile; -
05-join_as_member_spec.rb:在应用程序中使用 JavaScript 的特性规范之一; -
06-focused_logfile.log:运行docker-compose up --exit-code-from web的终端输出,仅运行 JavaScript 执行规范示例; -
07-unfocused_logfile.log:运行相同的docker-compose调用并启用所有规范中的所有示例的终端输出(即,不限于使用tag :focus)。
任何有用的 cmets 和/或指向现有工作测试设置的指针(无论使用何种框架,例如 Rails)都将非常感谢。谢谢。
【问题讨论】:
标签: ruby selenium docker docker-compose hanami