我現在正在使用Cucumber和Rails測試視圖,並真正享受體驗。我可以輕鬆地說:有沒有辦法測試(單元/集成)CSS是否應用於預期的HTML元素?
Background:
Given I am logged in as a customer
Scenario: View the Welcome Page
When I go to the home page
Then I should be on the "Welcome" page
And I should see the following in the sidebar:
| selector | text |
| h3 | Search |
| .home-page | Home |
| .about-page | About |
現在我想知道,我怎麼能走一步說:
And I should see the following colors on the "Welcome" page:
| selector | background |
| #content | white |
| #sidebar | grey |
| #navigation | blue |
我覺得我看到了,這是可能的東西,如要做到這一點Node.js或其他服務器端JavaScript,因爲它都是依賴於瀏覽器的。有沒有辦法做到這一點,也許只有Safari和Firefox的Selenium?
我只是想測試主要是顏色和字體,不一定佈局B/C的跨瀏覽器的瘋狂。我怎麼能這樣做?也許有點Jasmine與Cucumber?
謝謝!
更新
感謝@idlefingers,這裏的一些作品:
設置:黃瓜,水豚。
功能/支持/ env.rb:
Capybara.javascript_driver = :selenium
*功能/ step_definitions/css_steps.rb:*
Then /^I should see the color "([^"]+)" on the ([^"]+)$/ do |color, selector|
element_color = page.evaluate_script('$("##{selector}").css("border-left-color");') # "rgb(221, 221, 221)"
assert_equal color, some_color_conversion_method(element_color)
end
功能/ some.feature:
And I should see the color "red" on the sidebar
如果有更好的方法,我會愛知道!
這將需要我添加渲染特定的類到我寧願避免的元素。尋找完整的方法來檢查計算出的css值。 – 2011-02-18 15:26:34
我得到你 - 我以爲你使用.white作爲課堂......祝你好運! – stef 2011-02-18 16:15:39