2013-11-28 3 views
1

Чтобы подтверждено, что мое расположение работает на различных размеров экрана мои приемочные испытания на самом деле выглядит следующим образом:Run спецификации для различных размеров экрана

require "spec_helper" 

[:small, :medium, :large].each do |size| 
    feature "Some feature", js: true, screen_size: size do 
    scenario "Some scenario" do 
     # ... 
    end 
    end 
end 

В моей спецификации помощника я configued RSpec использовать before(:each) блок, чтобы изменить свой браузер окно.

RSpec.configure do |config| 
config.before(:each) do 
    if example.metadata[:js] 
    if example.metadata[:screen_size] 
     resize_browser_window(example.metadata[:screen_size]) 
    else 
     resize_browser_window(:large) 
    end 
    end 
end 

То, что я на самом деле хотел сделать что-то вроде этого:

require "spec_helper" 

feature "Some feature", js: true, devices: [:small, :medium, :large] do 
    scenario "Some scenario" do 
    # ... 
    end 
end 

, а затем использовать around(:each) блок для запуска сценариев для каждого размера экрана:

RSpec.configure do |config| 
    config.around(:each) do |example| 
    if example.metadata[:devices] 
     example.metadata[:devices].each do |size| 
     resize_browser_window(size) 
     example.run 
     end 
    end 
    end 
end 

Это работает только частично. Пример выполняется для каждого определенного устройства, но окно вообще не изменяет размер.

Есть ли у кого-нибудь намек на меня?

ответ

1

Я нашел обходной путь для архивирования требуемого поведения:

RSpec.configure do |config| 
    config.around(:each) do |example| 
    if example.metadata[:devices] 
     example.metadata[:devices].each do |size| 
     example.metadata[:screen_size] = size 
     example.run 
     end 
    end 
    end 
    config.before(:each) do 
    if example.metadata[:js] 
     if example.metadata[:screen_size] 
     resize_browser_window(example.metadata[:screen_size]) 
     end 
    end 
    end 
end 
Смежные вопросы