我试图让travis传递我的功能规格,但是使用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
事物正在蠢蠢欲动。整个应用程序在不同位置使用visible-lg
/ hidden-lg
个类,因此更改此选项不是一个选项。它也是自助式的。
Associated Travis错误:
Failure/Error: expect(page).to have_content("Line 1: #{question}")
我的规格在本地传递,因为Firefox加载标准大小的窗口与移动大小/小窗口。如何更改.travis.yml
文件以使其尊重我设置的较大屏幕分辨率?
Travis错误的另一个例子:
Failure/Error: click_on 'Preview'
Capybara::ElementNotFound:
Unable to find link or button "Preview"
('预览'存在但不在移动模式下)
我正在使用Ruby 2.3,Rails 4.2.5和AngularJS
答案 0 :(得分: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
中,我在配置部分后面的最底部放了以下内容:
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种不同的窗口大小,这样我就可以测试在移动模式或桌面模式下是否显示汉堡菜单选项。
在我的功能规范中,我在之前的块中调用了该方法,因此我需要它的所有测试都得到它。另外,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
我所有的测试都是预期的绿色!