2016-03-07 16:52:19 -08:00
|
|
|
# frozen_string_literal: true
|
2018-02-28 16:11:41 -08:00
|
|
|
|
2020-09-05 12:24:43 -07:00
|
|
|
# rubocop:disable RSpec/MultipleDescribes
|
|
|
|
|
2011-02-11 14:44:58 +01:00
|
|
|
require 'spec_helper'
|
|
|
|
require 'capybara/rspec'
|
|
|
|
|
2019-02-25 15:50:24 -08:00
|
|
|
# rubocop:disable RSpec/InstanceVariable
|
2018-07-10 14:18:39 -07:00
|
|
|
RSpec.configuration.before(:each, file_path: './spec/rspec/features_spec.rb') do
|
2011-03-13 14:31:04 +01:00
|
|
|
@in_filtered_hook = true
|
|
|
|
end
|
|
|
|
|
2016-07-22 10:21:24 -07:00
|
|
|
feature "Capybara's feature DSL" do
|
2011-02-11 14:44:58 +01:00
|
|
|
background do
|
|
|
|
@in_background = true
|
|
|
|
end
|
2016-07-22 10:21:24 -07:00
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'includes Capybara' do
|
2011-02-11 14:44:58 +01:00
|
|
|
visit('/')
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(page).to have_content('Hello world!')
|
2011-02-11 14:44:58 +01:00
|
|
|
end
|
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'preserves description' do |ex|
|
2018-05-15 12:39:40 -07:00
|
|
|
expect(ex.metadata[:full_description])
|
2013-11-14 09:43:36 -08:00
|
|
|
.to eq("Capybara's feature DSL preserves description")
|
2011-02-11 14:44:58 +01:00
|
|
|
end
|
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'allows driver switching', driver: :selenium do
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(Capybara.current_driver).to eq(:selenium)
|
2011-02-11 14:44:58 +01:00
|
|
|
end
|
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'runs background' do
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(@in_background).to be_truthy
|
2011-02-11 14:44:58 +01:00
|
|
|
end
|
2011-03-31 18:05:58 +02:00
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'runs hooks filtered by file path' do
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(@in_filtered_hook).to be_truthy
|
2011-03-13 14:31:04 +01:00
|
|
|
end
|
2011-03-31 18:05:58 +02:00
|
|
|
|
2011-03-12 12:38:48 +01:00
|
|
|
scenario "doesn't pollute the Object namespace" do
|
2018-04-27 11:01:47 -07:00
|
|
|
expect(Object.new).not_to respond_to(:feature)
|
2011-03-12 12:38:48 +01:00
|
|
|
end
|
2013-07-09 15:58:18 -07:00
|
|
|
|
|
|
|
feature 'nested features' do
|
|
|
|
scenario 'work as expected' do
|
|
|
|
visit '/'
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(page).to have_content 'Hello world!'
|
2013-07-09 15:58:18 -07:00
|
|
|
end
|
|
|
|
|
2018-05-15 12:39:40 -07:00
|
|
|
scenario 'are marked in the metadata as capybara_feature' do |ex|
|
|
|
|
expect(ex.metadata[:capybara_feature]).to be_truthy
|
2013-07-09 15:58:18 -07:00
|
|
|
end
|
|
|
|
|
2018-05-15 12:39:40 -07:00
|
|
|
scenario 'have a type of :feature' do |ex|
|
|
|
|
expect(ex.metadata[:type]).to eq :feature
|
2013-07-09 15:58:18 -07:00
|
|
|
end
|
|
|
|
end
|
2011-02-11 14:44:58 +01:00
|
|
|
end
|
2019-02-25 15:50:24 -08:00
|
|
|
# rubocop:enable RSpec/InstanceVariable
|
2011-02-11 14:44:58 +01:00
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
feature 'given and given! aliases to let and let!' do
|
2012-10-03 18:49:44 -04:00
|
|
|
given(:value) { :available }
|
|
|
|
given!(:value_in_background) { :available }
|
|
|
|
|
|
|
|
background do
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(value_in_background).to be(:available)
|
2012-10-03 18:49:44 -04:00
|
|
|
end
|
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'given and given! work as intended' do
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(value).to be(:available)
|
|
|
|
expect(value_in_background).to be(:available)
|
2012-10-03 18:49:44 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-02-28 16:11:41 -08:00
|
|
|
feature "Capybara's feature DSL with driver", driver: :culerity do
|
2018-07-10 14:18:39 -07:00
|
|
|
scenario 'switches driver' do
|
2013-11-14 09:43:36 -08:00
|
|
|
expect(Capybara.current_driver).to eq(:culerity)
|
2011-02-11 14:44:58 +01:00
|
|
|
end
|
|
|
|
end
|
2015-12-15 14:03:59 +00:00
|
|
|
|
2018-04-27 11:01:47 -07:00
|
|
|
# rubocop:disable RSpec/RepeatedExample
|
2018-07-10 14:18:39 -07:00
|
|
|
xfeature 'if xfeature aliases to pending then' do
|
2018-02-28 16:11:41 -08:00
|
|
|
scenario "this should be 'temporarily disabled with xfeature'" do
|
|
|
|
# dummy
|
|
|
|
end
|
2019-10-15 17:40:27 -07:00
|
|
|
|
2018-02-28 16:11:41 -08:00
|
|
|
scenario "this also should be 'temporarily disabled with xfeature'" do
|
|
|
|
# dummy
|
|
|
|
end
|
2016-08-17 11:41:40 -07:00
|
|
|
end
|
2015-12-15 14:03:59 +00:00
|
|
|
|
2018-07-10 14:18:39 -07:00
|
|
|
ffeature 'if ffeature aliases focused tag then' do # rubocop:disable RSpec/Focus
|
|
|
|
scenario 'scenario inside this feature has metatag focus tag' do |example|
|
2022-04-30 10:26:55 -07:00
|
|
|
expect(example.metadata[:focus]).to be true
|
2016-08-17 11:41:40 -07:00
|
|
|
end
|
2015-12-15 14:03:59 +00:00
|
|
|
|
2021-10-23 22:17:35 -07:00
|
|
|
scenario 'other scenarios also has metatag focus tag' do |example|
|
2022-04-30 10:26:55 -07:00
|
|
|
expect(example.metadata[:focus]).to be true
|
2015-12-15 14:03:59 +00:00
|
|
|
end
|
|
|
|
end
|
2020-09-05 12:24:43 -07:00
|
|
|
# rubocop:enable RSpec/RepeatedExample, RSpec/MultipleDescribes
|