group :development do gem "rspec" gem "rspec-rails" gem "mocha" gem "axlsx" gem 'capybara' gem 'capybara-webkit' gem 'turnip' gem 'selenium-webdriver' end
bundle installspec/spec_helperの設定
def excel @@excel ||= Axlsx::Package.new end def font1(v=nil) if v f = Struct.new(:value) @@font1 = f.new(v) else @@font1 end end def font2(v=nil) if v f = Struct.new(:value) @@font2 = f.new(v) else @@font2 end end def wb @@wb = excel.workbook font1(@@wb.styles.add_style :sz => 15, :name => "MS Pゴシック") font2(@@wb.styles.add_style :sz => 15, :name => "MS Pゴシック", :bg_color => "FFFF0000") @@wb end def worksheet @@worksheet ||= wb.add_worksheet(name: 'test') end config.before(:suite) do worksheet.add_row(['検証項目', '○/×'], :style => font1.value) end # テスト実行後に成否を取得してレポートに記入する config.after(:each) do # テストの検証項目名を取得する description = self.example.full_description if self.example.metadata[:description].empty? description += RSpec::Matchers.generated_description end #Modelの英語表記を日本語に返還 Module.constants.select do |constant_name| constant = eval constant_name.to_s if not constant.nil? and constant.is_a? Class and constant.superclass == ActiveRecord::Base description.gsub!(/#{constant}/, constant.model_name.human) end end # テスト実行時に発生した例外を取得する exception = self.example.exception if exception worksheet.add_row([description, 'x'], :style => font2.value) else worksheet.add_row([description, 'o'], :style => font1.value) end end # テスト実行後に xlsx ファイルを保存する config.after(:suite) do excel.use_shared_strings = true # for Numbers excel.serialize("#{Time.new.strftime("%Y-%m-%d-%H:%M:%S")}_test_report.xlsx") end Dir.glob("spec/**/*steps.rb") { |f| load f, true } require 'capybara/dsl' require 'capybara/rspec' require 'capybara/webkit' # require 'capybara/poltergeist' require 'rspec/rails' require 'rspec/autorun' require 'turnip' require 'turnip/capybara' Capybara.default_driver = :selenium
spec/features/login.featureにシナリオを書く
Feature: ポータル画面からログイン Scenario: トップページが正しく表示されることを確認 When トップページを表示する Then QAポータルと表示されていること Then ログインと表示されていること Scenario: トップページからログインする When トップページを表示する Then idとpasswordを入力する Then ログインボタンをクリックする Then 画面にユーザ一覧が表示されていること Then ユーザ一覧をクリックする Then 所属会社と表示されていること Scenario: トップページからログインしてログアウトする When トップページを表示する Then idとpasswordを入力する Then ログインボタンをクリックする Then 画面にユーザ一覧が表示されていること Then ログアウトをクリックする Then ログインと表示されていることspec/steps/login.steps.rbにソースを書く
#encoding: utf-8 step "トップページを表示する" do visit 'http://localhost:3000/users/sign_in' end step "QAポータルと表示されていること" do expect(page).to have_content('QAポータル') end step "ログインと表示されていること" do expect(page).to have_content('ログイン') end step "idとpasswordを入力する" do fill_in 'user_email', :with => 'joji.urano@gree.net' fill_in 'user_password', :with => 'akagisigeru' end step "ログインボタンをクリックする" do click_button "ログイン" sleep 1 end step "画面にユーザ一覧が表示されていること" do expect(page).to have_content('ユーザ一覧') end step "ユーザ一覧をクリックする" do click_link "ユーザ一覧" sleep 1 end step "所属会社と表示されていること" do expect(page).to have_content('所属会社') end step "ログアウトと表示されていること" do expect(page).to have_content('ログアウト') end step "ログアウトをクリックする" do click_link "ログアウト" sleep 1 end step "ログインと表示されていること" do expect(page).to have_content('ログイン') endテストコマンドで実行
rspec -r turnip/rspec spec/features/login.feature
0 件のコメント:
コメントを投稿