Commit 33c745fc by Vi Huynh

fix step rspec

parent 6c7e97e6
--color --format documentation -r turnip/rspec
source 'https://rubygems.org' source 'https://rubygems.org'
group :development, :test do group :development, :test do
gem 'byebug'
gem 'pry-byebug'
gem 'pry-rails'
# gem 'rspec-rails' # gem 'rspec-rails'
# gem 'capybara-webkit' # gem 'capybara-webkit'
gem 'selenium-webdriver'
gem 'capybara-webkit'
gem 'poltergeist', '1.6.0' gem 'poltergeist', '1.6.0'
gem 'turnip' gem 'turnip'
# gem 'spork' # gem 'spork'
......
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
byebug (5.0.0)
columnize (= 0.9.0)
capybara (2.4.4) capybara (2.4.4)
mime-types (>= 1.16) mime-types (>= 1.16)
nokogiri (>= 1.3.3) nokogiri (>= 1.3.3)
rack (>= 1.0.0) rack (>= 1.0.0)
rack-test (>= 0.5.4) rack-test (>= 0.5.4)
xpath (~> 2.0) xpath (~> 2.0)
capybara-webkit (1.7.0)
capybara (>= 2.3.0, < 2.6.0)
json
celluloid (0.16.0) celluloid (0.16.0)
timers (~> 4.0.0) timers (~> 4.0.0)
childprocess (0.5.6)
ffi (~> 1.0, >= 1.0.11)
cliver (0.3.2) cliver (0.3.2)
coderay (1.1.0) coderay (1.1.0)
columnize (0.9.0)
diff-lcs (1.2.5) diff-lcs (1.2.5)
ffi (1.9.6) ffi (1.9.6)
formatador (0.2.5) formatador (0.2.5)
...@@ -23,6 +31,7 @@ GEM ...@@ -23,6 +31,7 @@ GEM
pry (>= 0.9.12) pry (>= 0.9.12)
thor (>= 0.18.1) thor (>= 0.18.1)
hitimes (1.2.2) hitimes (1.2.2)
json (1.8.3)
listen (2.7.11) listen (2.7.11)
celluloid (>= 0.15.2) celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3) rb-fsevent (>= 0.9.3)
...@@ -43,6 +52,11 @@ GEM ...@@ -43,6 +52,11 @@ GEM
coderay (~> 1.1.0) coderay (~> 1.1.0)
method_source (~> 0.8.1) method_source (~> 0.8.1)
slop (~> 3.4) slop (~> 3.4)
pry-byebug (3.2.0)
byebug (~> 5.0)
pry (~> 0.10)
pry-rails (0.3.4)
pry (>= 0.9.10)
rack (1.6.4) rack (1.6.4)
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
...@@ -61,6 +75,12 @@ GEM ...@@ -61,6 +75,12 @@ GEM
rspec-mocks (3.1.3) rspec-mocks (3.1.3)
rspec-support (~> 3.1.0) rspec-support (~> 3.1.0)
rspec-support (3.1.2) rspec-support (3.1.2)
rubyzip (1.1.7)
selenium-webdriver (2.47.1)
childprocess (~> 0.5)
multi_json (~> 1.0)
rubyzip (~> 1.0)
websocket (~> 1.0)
slop (3.6.0) slop (3.6.0)
thor (0.19.1) thor (0.19.1)
timers (4.0.1) timers (4.0.1)
...@@ -68,6 +88,7 @@ GEM ...@@ -68,6 +88,7 @@ GEM
turnip (1.2.4) turnip (1.2.4)
gherkin (>= 2.5) gherkin (>= 2.5)
rspec (>= 2.14.0, < 4.0) rspec (>= 2.14.0, < 4.0)
websocket (1.2.2)
websocket-driver (0.6.2) websocket-driver (0.6.2)
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2) websocket-extensions (0.1.2)
...@@ -78,8 +99,13 @@ PLATFORMS ...@@ -78,8 +99,13 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
byebug
capybara-webkit
guard guard
poltergeist (= 1.6.0) poltergeist (= 1.6.0)
pry-byebug
pry-rails
selenium-webdriver
turnip turnip
BUNDLED WITH BUNDLED WITH
......
...@@ -5,6 +5,8 @@ cd phantomjs ...@@ -5,6 +5,8 @@ cd phantomjs
git checkout 2.0 git checkout 2.0
echo y | ./build.sh echo y | ./build.sh
ln -s /home/vagrant/phantomjs/bin/phantomjs /usr/local/bin/phantomjs ln -s /home/vagrant/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
# run phantomjs
$ phantomjs
cd .. cd ..
# How to run test # How to run test
......
Feature: page
Scenario: visit top page
Given access host
When visit '/'
Then response code is '200'
# And response include 'じげんQUEST!をもう一度ご確認の上 アクセスしてください。'
# And response 'strong' include 'じげんQUEST!'
# And page title with 'じげんQUES'
# And meta 'description' with '【もれなくお祝い金1万円】がもらえる!アルバイトEXはアルバイト・バイト求人情報や募集情報を日本最大級掲載!日本全国の主要なアルバイト・バイト募集サイトを一括して検索が可能。現金1万円がもらえる!!'
Scenario: visit '/zigexn'
Given access host
When visit '/zigexn'
Then response code is '403'
And response include '403 Forbidden 指定されたページ(URL)へのアクセスが禁止されています。'
Scenario: Login with super_admin
Given logged with supper_admin
Then response code is '200'
And response include 'Company'
Scenario: Check locale
Given logged with supper_admin
When visit '/admin/managements/users'
Then response include 'User'
require 'pry-byebug'
driver = ENV['DRIVER'].to_s.to_sym
Dir.glob("spec/steps/*_steps.rb") { |f| load f, true } Dir.glob("spec/steps/*_steps.rb") { |f| load f, true }
require 'capybara/dsl' require 'capybara/dsl'
require 'capybara/rspec' require 'capybara/rspec'
require 'capybara/poltergeist'
require 'turnip' require 'turnip'
require 'turnip/capybara' require 'turnip/capybara'
Capybara.register_driver :poltergeist do |app| if driver == :sauce
Capybara::Poltergeist::Driver.new(app, configure_sauce
phantomjs: 'phantomjs', Capybara.default_driver = :sauce
js_errors: false, Capybara.javascript_driver = :selenium
debug: false, elsif driver == :poltergeist
phantomjs_options: ['--load-images=no', '--disk-cache=true'], require 'capybara/poltergeist'
timeout: 10 Capybara.default_driver = :poltergeist
) Capybara.current_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(
app,
phantomjs: 'phantomjs',
js_errors: false,
debug: false,
phantomjs_options: ['--load-images=no', '--disk-cache=true'],
timeout: 10
)
end
elsif driver.nil?
require 'capybara/poltergeist'
Capybara.default_driver = :rack_test
Capybara.current_driver = :rack_test
Capybara.javascript_driver = :poltergeist
else
require 'selenium-webdriver'
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, browser: driver)
end
end end
Capybara.run_server = false Capybara.run_server = false
Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
# Capybara.default_driver = :webkit
RSpec.configure do |config| RSpec.configure do |config|
end end
step 'access production' do # step 'access production' do
Capybara.app_host = 'http://arubaito-ex.jp' # Capybara.app_host = 'http://arubaito-ex.jp'
end # end
step 'access production_ssl' do # step 'access production_ssl' do
Capybara.app_host = 'https://arubaito-ex.jp' # Capybara.app_host = 'https://arubaito-ex.jp'
end # end
step 'access staging' do # step 'access staging' do
Capybara.app_host = 'http://staging.arubaito-ex.jp' # Capybara.app_host = 'http://staging.arubaito-ex.jp'
end # end
step 'access development' do # step 'access development' do
Capybara.app_host = 'http://localhost:3001' # Capybara.app_host = 'http://localhost:3001'
end # end
# Get ZIGExN's job item and get it ID # # Get ZIGExN's job item and get it ID
step 'get_sample_job_id' do # step 'get_sample_job_id' do
visit "http://arubaito-ex.jp/jobs/search_result?keywords=%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%81%98%E3%81%92%E3%82%93" #=> 株式会社じげん # visit "http://arubaito-ex.jp/jobs/search_result?keywords=%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%81%98%E3%81%92%E3%82%93" #=> 株式会社じげん
first(:css, '.jobsResult .jobInfo h2 a')[:href] =~ %r{/jobs/(\d+)} # first(:css, '.jobsResult .jobInfo h2 a')[:href] =~ %r{/jobs/(\d+)}
@latest_job_id = $1.to_i # @latest_job_id = $1.to_i
end # end
# entry page # # entry page
step 'visit_sample_entry_page' do # step 'visit_sample_entry_page' do
visit "/entries/new?job_ids%5B%5D=#{@latest_job_id}" # visit "/entries/new?job_ids%5B%5D=#{@latest_job_id}"
end # end
# jobs page # # jobs page
step 'visit_sample_job_page' do # step 'visit_sample_job_page' do
visit "/jobs/#{@latest_job_id}" # visit "/jobs/#{@latest_job_id}"
end # end
step 'check_cookies_has_sample_job' do # step 'check_cookies_has_sample_job' do
expect(page.driver.cookies["history"].value.to_i).to eq(@latest_job_id) # expect(page.driver.cookies["history"].value.to_i).to eq(@latest_job_id)
end # end
step 'have_link_with_sample_job' do # step 'have_link_with_sample_job' do
expect(page).to have_selector(%Q{a[href="/jobs/#{@latest_job_id}"]}) # expect(page).to have_selector(%Q{a[href="/jobs/#{@latest_job_id}"]})
end # end
step 'access host' do
Capybara.app_host = ENV['HOST']
end
step 'logged with supper_admin' do
Capybara.app_host = ENV['HOST']
visit '/admin/users/sign_in?locale=en'
fill_in 'user[email]', with: 'super_admin@zigexn.vn', match: :first
fill_in 'user[password]', with: 'password', match: :first
click_button 'Sign in'
end
# set cookies
step 'I have a :key cookie set to :value' do |key, value|
headers = {}
Rack::Utils.set_cookie_header!(headers, key, value)
cookie_string = headers['Set-Cookie']
Capybara.current_session.driver.browser.set_cookie(cookie_string)
end
# access URL
step 'visit :path' do |path| step 'visit :path' do |path|
visit path visit path
end end
# check response code
step 'response code is :code' do |code| step 'response code is :code' do |code|
expect(page.status_code).to eq(code.to_i) expect(page.status_code).to eq(code.to_i)
end end
...@@ -11,12 +35,19 @@ step 'response include :string' do |string| ...@@ -11,12 +35,19 @@ step 'response include :string' do |string|
expect(page).to have_content(string) expect(page).to have_content(string)
end end
step 'h1 include :string' do |string| step 'response :html_tag include :content' do |html_tag, content|
expect(page.find('h1')).to have_content(string) expect(page.find(html_tag)).to have_content(content)
end
# title page
step 'page title with :content' do |content|
expect(page.title).to have_content(content)
end end
step 'h2 include :string' do |string| # meta tag content
expect(page.find('h2')).to have_content(string) step 'meta :field with :value' do |field, value|
tag = %(meta[name="#{field}"][content="#{value}"])
expect(page).to have_css(tag, visible: false)
end end
step 'textbox include :string' do |string| step 'textbox include :string' do |string|
...@@ -31,8 +62,9 @@ step 'click link :link' do |link| ...@@ -31,8 +62,9 @@ step 'click link :link' do |link|
first(:xpath, "//a[@href='" + link + "']").click first(:xpath, "//a[@href='" + link + "']").click
end end
# fill text into input tag
step 'fill in :field_name with :value' do |field_name, value| step 'fill in :field_name with :value' do |field_name, value|
fill_in field_name, with: value, :match => :first fill_in field_name, with: value, match: :first
end end
step 'click button by class :class_name' do |class_name| step 'click button by class :class_name' do |class_name|
...@@ -59,7 +91,3 @@ step 'use smartphone' do ...@@ -59,7 +91,3 @@ step 'use smartphone' do
page.driver.headers = { "User-Agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" } page.driver.headers = { "User-Agent" => "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" }
end end
step 'check metatag :field with :value' do |field, value|
tag = %Q(meta[name="#{field}"][content="#{value}"])
expect(page).to have_css(tag, visible: false)
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment