Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Ruby | RubyでCucumberとSelenium WebDriverを組み合わせてWebアプリケーションの自動受け入れテストを行う

概要

RubyでCucumberとSelenium WebDriverを組み合わせてWebアプリケーションの自動受け入れテストを行う

事前情報

当記事は以下の2記事を流用しています。
重複する情報は省略します。
Ruby | RubyでSelenium WebDriverを利用して画面の自動テストを行う
書籍 RSpec Book | Hello Cucumber

詳細

当ブログの検索機能をテストします。
検索結果の1件目に表示される記事の件名がテスト対象です。

テスト対象URL:http://d.hatena.ne.jp/tbpg/
検索キーワード:Cucumber
期待値:書籍 RSpec Book | Hello Cucumber
※2013/05/06 01:16:20 時点

サンプルコード

hatena_tbpg_step.feature

# language: ja
機能: はてなtbpg's programming memoブログ
  シナリオ: はてなtbpg's programming memoブログの検索
    前提 Selenium WebDriverの初期化
    もし 「Cucumber」で検索した場合
    ならば 結果の1件目に「書籍 RSpec Book | Hello Cucumber」が表示されること

hatena_tbpg_step.rb

# encoding: utf-8
require "selenium-webdriver"

Given(/^Selenium WebDriverの初期化$/) do
  # FireFoxで実施 ※引数を変更すればマルチブラウザテストも可能
  @driver = Selenium::WebDriver.for :firefox
  # テスト対象URL
  @driver.navigate.to "http://d.hatena.ne.jp/tbpg/"
end

When(/^(.*)」で検索した場合$/) do |search_word|
  input = @driver.find_element(:name, 'word')
  input.send_keys search_word
  input.submit
  @output = @driver.find_element(:name, '1367767092')
end

Then(/^結果の1件目に「(.*)」が表示されること$/) do |expected|
  @output.text.should == expected
  @driver.quit
end

出力結果

$cucumber features
# language: ja
機能: はてなtbpg's programming memoブログ

  シナリオ: はてなtbpg's programming memoブログの検索               # features\hatena_tbpg_step.feature:3
    前提Selenium WebDriverの初期化                           # features/step_definitions/hatena_tbpg_step.rb:4
    もし「Cucumber」で検索した場合                                # features/step_definitions/hatena_tbpg_step.rb:11
    ならば結果の1件目に「書籍 RSpec Book | Hello Cucumber」が表示されること # features/step_definitions/hatena_tbpg_step.rb:18

1 scenario (1 passed)
3 steps (3 passed)
0m12.187s