2016-07-05 33 views
1

我想让travis通过我的功能规格,但是使用xvfb默认设置时,它会使用较小的窗口运行。由于该网站使用响应式网页设计,这意味着它正在查看网页,就好像它是在移动网站上一样。因为这个,我的测试失败了。Travis CI不承认xvfb上的大分辨率导致功能规格失败

我寻找了一圈,发现各种不同的方式来建立我.travis.yml文件,其中没有工作,但这里是我目前有:

.travis.yml

language: ruby 
rvm: 
- 2.3.0 
addons: 
    postgresql: "9.4" 

before_install: 
    - "export DISPLAY=:99.0" 
    - "sh -e /etc/init.d/xvfb start" 
    - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16" 
    - "sleep 3" 

before_script: 
- cp config/database.yml.travis config/database.yml 
- cp config/application.yml.example config/application.yml 
- psql -c 'create database db_test;' -U postgres 

script: 
- bundle exec rake db:migrate 
- bundle exec rake 

样品具有响应位(HAML)视图代码:

_view.haml

.row 
    .col-xs-12 
    %label 
     %span.visible-lg-inline Line {{question + 1}}: 
     %b 

正如你所看到的,visible-lg的东西是什么borking的东西。整个应用程序使用visible-lg/hidden-lg类在不同的景点,所以改变这是不是一种选择。它也是自举的。

相关特拉维斯错误:

Failure/Error: expect(page).to have_content("Line 1: #{question}") 

我的规格在当地传,因为Firefox的加载了一个标准大小的窗口VS移动尺寸/小窗口。如何更改我的.travis.yml文件以使其符合我设置的较大屏幕分辨率?

又如特拉维斯错误:

Failure/Error: click_on 'Preview' 

Capybara::ElementNotFound: 
    Unable to find link or button "Preview" 

( '预览' 存在但不是在移动模式)

我使用红宝石2.3,Rails的4.2.5和AngularJS

回答

1

答案不像我原先想象的那样是我的travis.yml文件。

搜索的一个星期后,我偶然发现了这一点: https://discuss.circleci.com/t/capybara-driver-rack-test/407其中有一个连结此:http://blaulabs.de/2011/11/22/acceptance-testing-with-responsive-layouts/

在我spec/spec_helper.rb我把下面的配置部分(S)后的最底部:

def set_selenium_window_size_to_large 
    page.driver.browser.manage.window.resize_to(1280, 1280) 
end 

def set_selenium_window_size_to_small 
    page.driver.browser.manage.window.resize_to(600, 600) 
end 

通过上面的代码,我现在可以调用2个不同的窗口大小,因此我可以测试在移动模式下或桌面模式下是否显示hamburgler菜单选项。

在我的功能规格中,我然后在我之前的块中调用该方法,以便所有需要它的测试都可以得到它。另外,rails_helper调用spec_helper,所以我被覆盖了。

require 'rails_helper' 

feature 'A question page', :devise, js: true do 
    before do 
    @question = create :question 

    set_selenium_window_size_to_large 

    visit question_path 
    click_on 'Get started' 
    end 
    scenario 'it has some questions' do 
    expect(page).to have_content("Line 1: #{question}") 
    end 
end 

.travis.yml文件又回到一个简单的办法:如预期

language: ruby 
rvm: 
- 2.3.0 
addons: 
    postgresql: "9.4" 

before_install: 
- "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16" 

before_script: 
- cp config/database.yml.travis config/database.yml 
- cp config/application.yml.example config/application.yml 
- psql -c 'create database db_test;' -U postgres 
- export DISPLAY=:99.0 
- sh -e /etc/init.d/xvfb start 

script: 
- bundle exec rake db:migrate 
- bundle exec rake 

我所有的测试都是绿色的!

相关问题