Tag: capybara

运行规范时出现的描述性错误,取决于种子

我编写了一个function规范来测试我的应用程序中的正确多租户行为。 它以两个不同的用户身份登录,通过填写表单并将其作为每个用户提交来创建新的Presentation ,并在每次只有租户自己的演示文稿可见时确认。 这个规范有时很好,有时也没有。 真正令人困惑的是发生的错误: Failure/Error: click_button “Präsentation erstellen” TypeError: can’t cast ActiveSupport::HashWithIndifferentAccess to # ./app/controllers/presentations_controller.rb:21:in `create’ # ./spec/features/presentation_management_spec.rb:22:in `block (3 levels) in ‘ 并且这不是粘贴时的错误,它字面上说can’t cast ActiveSupport::HashWithIndifferentAccess to并停在那里。 上下文中引用的行: ./app/controllers/presentations_controller.rb 18 def create 19 @presentation = Presentation.new(presentation_params) 20 21 if @presentation.save 22 flash_for(@presentation, :create) 23 redirect_to @presentation 24 else 25 render :new 26 end 27 […]

如何在Capybara中使用同步?

如果使用wait_until非常清楚(我在使用本机Webdriver方法创建测试时使用了这样的方法),而不是新的同步方法(抱歉:))。 我已经阅读了关于为什么不推荐使用wait_until的主题,我已经阅读了有关该文章的文章,我已经阅读了带有方法描述的文档,并且还阅读了描述所在的代码。 但我没有找到任何示例或教程如何使用此方法。 请允许任何人提供我(也可能是其他人)可以看到并学习如何使用此方法的少数情况 例如案例 expect(actual).to equal(expected) 我应该在哪里“放”同步方法才能在超时过后获得负面exception? UPD:对于有兴趣的人请查看以下链接: http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/base.rb#L44

Rspec – 未定义的方法’let’

这是我的rspec文件: require ‘spec_helper’ describe “Birds” do before { visit birds_path } it “should have the right title” do expect(page).to have_content(“Approved Birds”) end it “should contain the bird’s name, genus, species” do let(:bird) { FactoryGirl.create(:bird) } expect(page).to have_content(“#{bird.name}”) expect(page).to have_content(“#{bird.genus}”) expect(page).to have_content(“#{bird.species}”) end end 当我运行它时,我收到以下错误: Failure/Error: let(:bird) { FactoryGirl.create(:bird) } NoMethodError: undefined method `let’ for # […]

使用capybara捕获浏览器控制台日志

我需要使用Ruby和Capybara捕获浏览器的控制台日志(类别:信息)。 直到现在我已经尝试使用driver.manage.logs.get(:browser)或(:client),但是使用它,结果不是我想要的。 它给出了selenium和浏览器之间的交互结果,我可以看到我的javascript语句被发送执行,但结果输出无法捕获。 需要帮忙!!!

未定义方法’访问’#(NoMethodError)

当我尝试运行rspec测试时,我收到以下错误: /srv/offerme/spec/requests/static_pages_spec.rb:13: undefined method `visit’ for # (NoMethodError) from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `module_eval’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `subclass’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:224:in `describe’ from /srv/offerme/spec/requests/static_pages_spec.rb:12 from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `module_eval’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `subclass’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:224:in `describe’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/dsl.rb:18:in `describe’ from /srv/offerme/spec/requests/static_pages_spec.rb:3 from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load_spec_files’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `map’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load_spec_files’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:22:in `run’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:69:in `run’ from /var/lib/gems/1.8/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `autorun’ from […]

是否可以在Heroku Cedar上运行capybara-webkit(即forked webkit_server)?

我需要在Rails应用程序中运行capybara-webkit,以便在JavaScript支持下启用无头Web浏览(即不用于测试/ CI目的,webrat或其他验收测试驱动程序/框架将不起作用)。 我想知道在Heroku部署中是否可行,特别是因为它需要QtWebKit并能够使用套接字通信分叉webkit_server进程。 我对如何在Heroku上工作(例如工人dynos池)的创意很开心。 我希望有人能更好地处理Heroku环境中存在的约束,或者可以断然排除这种可能性,以便我可以在必要时转移到AWS EC2。 对此进行搜索往往会导致很多关于CI服务器的水豚测试和附加组件,这两者都与我的用例无关。 我没有测试任何东西(至少没有测试传统的黄瓜/ rspec /等) – 我正在使用Capybara与webkit驱动程序,finders和node / element模型的集成来导航需要大量客户端的网站 – 方JS为了工作。 我也对其他(本机Ruby)解决方案持开放态度,以便使用支持JavaScript的DOM以编程方式与网站进行交互。

不区分大小写的Rspec匹配

我正在编写Capybara测试并使用Rspec进行断言。 我的测试失败了,因为正在应用的CSS样式导致文本全部大写。 我怎样才能重写这个,这是一个不区分大小写的断言? “ALL CAPS”.should include(‘All Caps’)

用capybara-webkit检测到死锁

我正试图通过这个规范: scenario “Edit a service”, js: true do service = create_service_for(provider, title: “First service”) fill_edit_service_form(service) expect(page).to have_css(‘#price’, text: ‘10,00 $’) end 这是使用水豚的标准导轨规格。 我使用capybara-webkit用于javascript的所有场景。 当我试图传递它时,有时候它会起作用,有时它标记的数据库中有一条丢失的记录,有时候我有这个错误: Run options: include {:locations=>{“./spec/acceptances/provider_services_spec.rb”=>[31]}} [K 1) Provider Services Edit a service Failure/Error: Unable to find matching line from backtrace ActiveRecord::StatementInvalid: PG::TRDeadlockDetected: ERROR: deadlock detected DETAIL: Process 24164 waits for AccessExclusiveLock on […]

用水豚进行平行selenium试验

背景: 我有一组针对我的Rails 3应用程序运行的Capybara集成测试。 对于测试套件的其他部分,我正在使用Rspec 。 我的Mac OSX开发机器上有一个selenium 2.6.0独立服务器集线器。 java -jar selenium-server-standalone-2.6.0.jar -role hub 我正在运行几个虚拟机,每个虚拟机都与一个selenium节点连接到集线器: java -jar selenium-server-standalone-2.6.0.jar -role webdriver -hub http://0.0.1.12:4444/grid/register port 5555 -browser browserName=”internet explorer”,version=8,platform=WINDOWS 这很好用,在这个截图中,控制台显示我有一个连接到集线器的IE7和IE8浏览器: 我已经设置了capybara来对抗selenium hub(将测试委托给节点)。 Capybara.app_host = “myapp.dev” Capybara.default_driver = :selenium Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, :browser => :remote, :url => “http://localhost:4444/wd/hub”, :desired_capabilities => :internet_explorer) end 它可以工作,但它只会在单个internet_explorer节点上运行测试。 它似乎是“排在第一位”的那个; 如果我将其关闭,测试将在另一个节点上成功运行。 我一直在尝试parallel_tests项目,按照建议配置capybara,但这仍然只会启动一个集成测试。 如何同时在所有internet_explorer节点上运行我的集成? […]

为什么我不建议“在全球范围内包括Capybara :: DSL!”

每次运行规范时,即使规范通过,例如 $ rspec spec/integration/view_homepage_spec.rb including Capybara::DSL in the global scope is not recommended! . Finished in 0.6174 seconds 1 example, 0 failures Randomized with seed 14130 $ 我的Gemfile有: group :test, :development do gem ‘rspec-rails’ gem ‘capybara’ end 我的spec_helper有: ENV[“RAILS_ENV”] ||= ‘test’ require File.expand_path(“../../config/environment”, __FILE__) require ‘rspec/rails’ require ‘rspec/autorun’ require ‘capybara’ include Capybara::DSL Dir[Rails.root.join(“spec/support/**/*.rb”)].each { |f| […]