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 件のコメント:
コメントを投稿