我在使用rspec,capybara,capybara-webkit和timecop看到一些集成规范中的错误.
Capybara::FrozenInTime:
time appears to be frozen, Capybara does not work with libraries which freeze time, consider using time travelling instead
Run Code Online (Sandbox Code Playgroud)
我知道冻结时间的唯一宝石是Timecop,但我没有在失败的测试用例中使用它.
由于错误只是偶尔发生,我甚至无法知道它在改变之后是否消失.
我正在尝试为网页编写请求规范.
此页面正在开发中,没有错误.
但是在capybara webkit中运行我在尝试提交表单后收到此错误:
Failure/Error: Unable to find matching line from backtrace
Capybara::Driver::Webkit::WebkitInvalidResponseError:
Unable to load URL: https://127.0.0.1:33416/sign_in
Run Code Online (Sandbox Code Playgroud)
为了找出原因,我开始在页面上删除标记和JavaScript.到具有普通提交按钮的空表单的程度.我仍然得到上述错误!
该测试现在字面上:
it "should be able create a new foo", :js, :focus do
visit new_foo_path
find('#submit').click
end
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除:js选项,此测试确实有效:
it "should be able create a new foo", :focus do
visit new_foo_path
find('#submit').click
end
Run Code Online (Sandbox Code Playgroud)
Javascript测试在此应用程序的其他页面中有效...
这对我没有意义.有没有人有任何建议如何从这里调试?
谢谢你的帮助
rspec ruby-on-rails capybara ruby-on-rails-3 capybara-webkit
我正在使用Capybara-Webkit在网站上自动完成一些工作.这是在Resque任务的后台完成的.经过一些执行后,很多webkit_server进程都很安静,而Capybara没有关闭它们.那么我怎么能强迫Capybara在最后关闭呢?
session = Capybara::Session.new(:webkit)
session.visit URL
session.click_button(BUTTON)
....
Run Code Online (Sandbox Code Playgroud) 如何使用表格编写水豚集成测试jquery.selectize?
我想测试用户输入几个值.
我一直在尝试使用bundler安装Capybara-Webkit gem并遵循这些说明:https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit#macos-塞拉利昂-1012
我一直遇到没有找到Makefile的错误.我更新了Homebrew,宝石系统,并用cli工具更新了Xcode 8但无济于事.非常感谢任何帮助!
sudo gem install capybara-webkit PATH=/Users/caren/Qt5.5.1/5.5/clang_64/bin:$PATH gem install capybara-webkit
Password:
Building native extensions. This could take a while...
ERROR: Error installing capybara-webkit:
ERROR: Failed to build gem native extension.
/Users/caren/.rbenv/versions/2.2.3/bin/ruby -r ./siteconf20161108-5610-m00680.rb extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog …Run Code Online (Sandbox Code Playgroud) 我跑步的时候,我收到了一些来自webkit的警告rspec.我正在使用capybara-webkit和qt安装brew.我当然希望解决这些问题.谢谢你的帮助.
警告如:"两者都实施"
objc[97388]: Class WebCoreMovieObserver is implemented in both /usr/local/Cellar/qt/4.8.0/lib/QtWebKit.framework/Versions/4/QtWebKit and /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore. One of the two will be used. Which one is undefined.
objc[97388]: Class WebCoreSharedBufferData is implemented in both /usr/local/Cellar/qt/4.8.0/lib/QtWebKit.framework/Versions/4/QtWebKit and /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore. One of the two will be used. Which one is undefined.
objc[97388]: Class WebVideoFullscreenWindow is implemented in both /usr/local/Cellar/qt/4.8.0/lib/QtWebKit.framework/Versions/4/QtWebKit and /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit. One of the two will be used. Which one is undefined.
objc[97388]: Class WebVideoFullscreenController is implemented in both …Run Code Online (Sandbox Code Playgroud) 根据网页更新,显然,sleep或wait_until使用最新版本的Capybara无效.
但是,如果我添加sleep(1)对测试的调用,我有一组只能在快速机器上运行的测试.也就是说,测试看起来像:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
Run Code Online (Sandbox Code Playgroud)
变
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
Run Code Online (Sandbox Code Playgroud)
在那里我定义unix_wait为:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
Run Code Online (Sandbox Code Playgroud)
问题是,我有一台旧的Ubuntu 12.04四核笔记本电脑在Jenkins上运行这些测试,一切都运行良好,没有unix_wait电话.测试在运行Ubuntu 13.10和macbook pro笔记本电脑的六核桌面上随机失败,但是如果我添加了unix_wait调用,那么测试就会通过.
测试失败本身表示加载失败(即某些运行中缺少css元素,但其他运行中没有),并且当手动加载站点时,被测试的内容实际上有效.
那么这里适当的行动是什么?显然,sleep测试期间不允许,也不允许wait_until.然而,睡眠是有效的,但它对我来说似乎非常粗糙.我应该看看#synchronized吗?从我从那些博客文章中收集的内容来看,当我打电话时,它已经被调用click_link,并且测试仍然失败.
这里接受的协议是什么?
我应该补充一下,因为我认为这很重要:这些都是javascript测试.我正在使用基于qt4(而不是qt5)的capybara-webkit.我正在考虑切换到poltergeist或其他一些javascript驱动程序作为调试步骤.
我想在ubuntu 12.04上安装capybara-webkit,但是我收到了这个错误:
$ gem install capybara-webkit -v '1.0.0'
Building native extensions. This could take a while...
ERROR: Error installing capybara-webkit:
ERROR: Failed to build gem native extension.
/home/samir/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb
Command 'qmake -spec linux-g++' not available
Makefile not found
Gem files will remain installed in /home/samir/.rvm/gems/ruby-2.1.0@dcaclab/gems/capybara-webkit-1.0.0 for inspection.
Results logged to /home/samir/.rvm/gems/ruby-2.1.0@dcaclab/extensions/x86-linux/2.1.0/capybara-webkit-1.0.0/gem_make.out
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我有这样的功能:
Feature: Searching chats
In order to find chats
As an user
I want to find different chats by username or ad name
Background:
Given System prepares for chats
And There is a few machines with names:
| machine_1 |
| machine_2 |
| machine_3 |
And There is a few services with names:
| service_1 |
| service_2 |
| service_3 |
And I have chats with ads owners
Scenario: Searching chats
When I am logged in as a …Run Code Online (Sandbox Code Playgroud) ruby-on-rails cucumber capybara capybara-webkit ruby-on-rails-4
Rails 5.1系统测试的文档有点稀疏.我无法进行执行javascript运行的无头测试.我认为一种方法需要安装和运行xvf.但这比我在其他版本的rails中运行capybara时使用的手动设置更多.
实现这一目标最直接的方法是什么?
capybara-webkit ×10
capybara ×7
rspec ×3
cucumber ×1
javascript ×1
macos-sierra ×1
qt ×1
resque ×1
ruby ×1
selectize.js ×1
sleep ×1
timecop ×1
ubuntu-12.04 ×1
webkit ×1