2016-07-05 14 views
1

Ich versuche travis zu bekommen, meine Feature-Spezifikationen zu bestehen, aber mit xvfb-Standardeinstellungen läuft es mit einem kleineren Fenster. Da die Website responsives Webdesign verwendet, bedeutet dies, dass die Seite wie auf Mobilgeräten angezeigt wird. Meine Tests scheitern deswegen.Travis CI erkennt keine große Auflösung auf xvfb, was dazu führt, dass Feature-Spezifikationen fehlschlagen

Ich suchte herum und fand verschiedene Art und Weise meine .travis.yml Datei, von denen keine Arbeit einzurichten, aber hier ist das, was ich derzeit haben:

.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 

Probe Code anzeigen, der die reaktions Bit (in haml) aufweist:

_view.haml

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

Wie Sie sehen können, ist die visible-lg Sache, was borking Dinge ist. Die gesamte App verwendet visible-lg/hidden-lg Klassen an verschiedenen Stellen, so dass dies keine Option ist. Auch es ist bootstrapped.

Assoziierte Travis Fehler:

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

Meine Spezifikationen lokal passieren, da Firefox Lasten bis ein Standard-Größe Fenster vs Handy-Größe/kleines Fenster. Wie ändere ich meine .travis.yml Datei, um die größere Bildschirmauflösung zu erreichen, die ich eingestellt habe?

Ein weiteres Beispiel Travis Fehler:

Failure/Error: click_on 'Preview' 

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

('Vorschau' vorhanden ist, aber nicht im Mobil-Modus)

Ich bin mit Ruby-2.3, Rails 4.2.5 und AngularJS

Antwort

1

Die Antwort war nicht meine travis.yml-Datei, wie ich ursprünglich dachte.

Nach einer Woche des Suchens, stieß ich auf diesem: https://discuss.circleci.com/t/capybara-driver-rack-test/407, die einen Link zu dieser hatte: http://blaulabs.de/2011/11/22/acceptance-testing-with-responsive-layouts/

In meinem spec/spec_helper.rb ich folgendes zuunterst nach dem Config-Abschnitt setzen (e):

Mit dem obigen Code kann ich jetzt 2 verschiedene Fenstergrößen aufrufen, damit ich testen kann, ob die hamburgler Menüoptionen nicht im mobilen Modus oder im Desktop Modus angezeigt werden.

In meinen Feature-Spezifikationen habe ich dann diese Methode in meinem Vorher-Block aufgerufen, so dass alle meine Tests, die es benötigten, es bekommen. Auch rails_helper ruft spec_helper an, also bin ich auf diese Weise abgedeckt.

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 

Meine .travis.yml Datei ein zu einem einfacheren ging zurück:

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 

Alle meine Tests sind grün wie erwartet!