acceptance_test 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NTk3NTJiZjc3NThmZjhmMzFlMzBlYTVkMDMwYTQyZDUwMjYxNzU0Mw==
4
+ YjA5NTU3MjYwOTRiYzE2ZTI5ZGZmYjljZWFlZjgyYzBlY2Y3OGE3ZQ==
5
5
  data.tar.gz: !binary |-
6
- ZTE5ZGYyMTVkNDg4ZTg2ZTQ2NWYyMzZiMDQxOWY0ZDQwY2NhMzY2Mw==
6
+ YTBkZDU4N2M0OGIyMzFiMGQxYzA4OTFhMTBlOWZkNDEwNjk2MWY5ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTVjNzVhMGEwZDgyY2EwMzRkMDA3M2FjY2Y2YzkwMmMyYmIzZTYzMTE0NmM1
10
- MmUzZjhhZDJjYjY1MWEyMzNmOWQ2ZWFiMGRkY2RiMjUwOGI5YmM3MWY2MDI1
11
- YWQ4ZDBjOGZjYTM2ZDI1OTgwMjI2YjAyNjVkNjQ2OWM2NGY4M2E=
9
+ MWE4ZTRlNzQwODUyNTIyNDc3N2UzMWI5NTkyOGU5NTg2YzhiZDFlNzVjMmVi
10
+ YzhhZTM5NTNhZWQ4YzI4MWJkNWNkYjViZGZmNThlMWFmY2U3MjYyMDBiZDY4
11
+ ODZjYTUyYzc1M2YzZTFhOWJhNDNlZWY3MDkyOTNhZTVhOTQxOGE=
12
12
  data.tar.gz: !binary |-
13
- MGNlYjQwZmZhMDNiNDdlY2FlOTJhZmQzNTFiZjkwOTRiMTVkNGRiMTgzMTNl
14
- NmY0OTY2M2Q4MjUwMWNlODA1MWQwYzFjMjFkMzYxMDRmNGU1N2U0ZWJiZDc1
15
- M2E4YzYwZmEzMmIwNGEyZWNmYTFkNmI4MjBlMGJmMWQ4YTM5YzM=
13
+ YTk1YjM3Y2YxNjI5OTU0NTc4MDE0ODVhNzZkYjQ3NTA4MDQyNmJlYTVhYmEx
14
+ NWRiY2EzZTlkZjIzMzNhMjk1NDI1MTViZWI0MTNlYTI0ODhjY2FkMWU1ZWI3
15
+ NWFmYTdhNTJiNzNmOTZkNzUyNGM5MDhmZTZjNzI2ZmRmMmNmZDQ=
data/CHANGES CHANGED
@@ -72,3 +72,7 @@
72
72
  == Version 1.3.1
73
73
 
74
74
  * Bug fix
75
+
76
+ == Version 1.4.0
77
+
78
+ * Refactor code to make it simple
@@ -1,4 +1,3 @@
1
1
  require 'acceptance_test/version'
2
- require 'acceptance_test/acceptance_shared_context'
3
2
  require 'acceptance_test/acceptance_test'
4
3
  require 'acceptance_test/screenshot_maker'
@@ -29,21 +29,21 @@ class AcceptanceTest
29
29
  select_driver driver
30
30
  end
31
31
 
32
+ puts "Current Driver : #{Capybara.current_driver}"
33
+
32
34
  setup_app_host app_host
33
35
  end
34
36
 
35
- def after page, exception=nil, metadata={}
36
- if exception
37
+ def after metadata={}, exception=nil, page=nil
37
38
  driver = driver(metadata)
38
39
 
39
- if driver and not [:webkit].include? driver
40
- screenshot_maker = ScreenshotMaker.new screenshot_dir
40
+ if driver and exception and page and not [:webkit].include? driver
41
+ screenshot_maker = ScreenshotMaker.new screenshot_dir
41
42
 
42
- screenshot_maker.make page, metadata
43
+ screenshot_maker.make page, metadata
43
44
 
44
- puts metadata[:full_description]
45
- puts "Screenshot: #{screenshot_maker.screenshot_url(metadata)}"
46
- end
45
+ puts metadata[:full_description]
46
+ puts "Screenshot: #{screenshot_maker.screenshot_url(metadata)}"
47
47
  end
48
48
 
49
49
  Capybara.current_driver = Capybara.default_driver
@@ -63,10 +63,14 @@ class AcceptanceTest
63
63
  driver.to_s =~ /selenium/
64
64
  end
65
65
 
66
+ def self.supported_drivers
67
+ [:webkit, :selenium, :poltergeist, :selenium_remote]
68
+ end
69
+
66
70
  private
67
71
 
68
72
  def default_app_host
69
- "http://#{AcceptanceTestHelper.get_localhost}:3000"
73
+ "http://#{AcceptanceTestHelper.instance.get_localhost}:3000"
70
74
  end
71
75
 
72
76
  def configure
@@ -1,6 +1,83 @@
1
+ require 'yaml'
2
+ require 'singleton'
3
+ require 'active_support/core_ext/hash'
4
+
1
5
  class AcceptanceTestHelper
6
+ include Singleton
7
+
8
+ def create_acceptance_test project_root, config_name, screenshot_dir
9
+ Capybara.configure do |config|
10
+ config.match = :first
11
+
12
+ config.ignore_hidden_elements = false
13
+ end
14
+
15
+ project_root = File.expand_path(project_root.to_s)
16
+
17
+ config = HashWithIndifferentAccess.new(YAML.load_file(config_name))
18
+
19
+ system "mkdir -p #{screenshot_dir}"
20
+
21
+ acceptance_test = AcceptanceTest.new project_root, config, screenshot_dir
22
+
23
+ ENV['ASSET_HOST'] = acceptance_test.app_host
24
+
25
+ puts "Application URL : #{config[:webapp_url]}"
26
+ puts "Selenium URL : #{config[:selenium_url]}" if config[:selenium_url]
27
+ puts "Default Wait Time : #{Capybara.default_wait_time}"
28
+
29
+ acceptance_test
30
+ end
31
+
32
+ def create_shared_context acceptance_test, name
33
+ throw "rspec library is not available" unless defined? RSpec
34
+
35
+ acceptance_test_lambda = lambda do
36
+ attr_reader :acceptance_test
37
+
38
+ before :all do
39
+ @acceptance_test = acceptance_test
40
+ end
41
+
42
+ before do
43
+ metadata = RSpec.current_example.metadata
44
+
45
+ acceptance_test.before metadata
46
+ end
47
+
48
+ after do
49
+ metadata = RSpec.current_example.metadata
50
+
51
+ acceptance_test.after metadata, RSpec.current_example.exception, page
52
+
53
+ self.reset_session!
54
+ end
55
+ end
56
+
57
+ RSpec.shared_context name do
58
+ self.define_singleton_method(:include_context, acceptance_test_lambda)
59
+
60
+ include_context
61
+ end
62
+ end
63
+
64
+ def metadata_from_scenario scenario
65
+ tags = scenario.source_tag_names.collect { |a| a.gsub("@", '') }
66
+
67
+ metadata = {}
68
+
69
+ if tags.size > 0
70
+ tag = tags.first.to_sym
71
+
72
+ if AcceptanceTest.supported_drivers.include? tag
73
+ metadata[:driver] = tag
74
+ end
75
+ end
76
+
77
+ metadata
78
+ end
2
79
 
3
- def self.get_localhost
80
+ def get_localhost
4
81
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily
5
82
 
6
83
  UDPSocket.open do |s|
@@ -1,3 +1,3 @@
1
1
  class AcceptanceTest
2
- VERSION = "1.3.1"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -1,7 +1,7 @@
1
- require 'acceptance_test'
1
+ require File.expand_path("spec/features/spec_helper")
2
2
 
3
3
  RSpec.describe 'Google Search' do
4
- include_context "AcceptanceTest"
4
+ include_context "GoogleAcceptanceTest"
5
5
 
6
6
  before :all do
7
7
  acceptance_test.app_host = "http://www.google.com"
@@ -19,7 +19,7 @@ RSpec.describe 'Google Search' do
19
19
 
20
20
  find("#gbqfbw button").click
21
21
 
22
- all(:xpath, "//li[@class='g']/h3/a").each { |a| puts a[:href] }
22
+ # all(:xpath, "//li[@class='g']/h3/a").each { |a| puts a[:href] }
23
23
  end
24
24
 
25
25
  it "uses webkit driver", driver: :webkit do
@@ -34,7 +34,7 @@ RSpec.describe 'Google Search' do
34
34
 
35
35
  button.click
36
36
 
37
- all(:xpath, "//li[@class='g']/h3/a").each { |a| puts a[:href] }
37
+ #all(:xpath, "//li[@class='g']/h3/a").each { |a| puts a[:href] }
38
38
  end
39
39
 
40
40
  it "uses poltergeist driver", driver: :poltergeist do
@@ -0,0 +1,9 @@
1
+ require 'acceptance_test'
2
+
3
+ config_name = File.expand_path("spec/features/acceptance_config.yml")
4
+
5
+ helper = AcceptanceTestHelper.instance
6
+
7
+ acceptance_test = helper.create_acceptance_test ".", config_name, "tmp"
8
+
9
+ helper.create_shared_context acceptance_test, "GoogleAcceptanceTest"
@@ -1,35 +1,7 @@
1
- require 'acceptance_test'
2
- require 'yaml'
1
+ File.expand_path("spec/features/spec_helper")
3
2
 
4
3
  RSpec.describe 'Google Search' do
5
- include_context "AcceptanceTest"
6
-
7
- before :all do
8
- #acceptance_config_file = "spec/features/acceptance_config.yml"
9
-
10
- # acceptance_test.acceptance_config = YAML.load_file(acceptance_config_file)
11
- #
12
- # acceptance_config = acceptance_test.acceptance_config
13
-
14
- # env = acceptance_config[:env]
15
- #
16
- # puts "\nEnvironment: #{@acceptance_config[:env]}" if env
17
- # puts "Application: #{@acceptance_config[:webapp_url]}"
18
- #
19
- # driver = acceptance_test.driver(metadata)
20
- #
21
- # if acceptance_test.selenium_driver?(driver)
22
- # selenium_host = acceptance_config[:selenium_host]
23
- # selenium_port = acceptance_config[:selenium_port]
24
- #
25
- # puts "Selenium: #{selenium_host}:#{selenium_port}"
26
- # end
27
- end
28
-
29
- before do
30
- # puts "Using driver: #{Capybara.current_driver}."
31
- # puts "Default wait time: #{Capybara.default_wait_time}."
32
- end
4
+ include_context "GoogleAcceptanceTest"
33
5
 
34
6
  it "uses selenium driver", driver: :selenium_remote do
35
7
  visit('/')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acceptance_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Shvets
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-19 00:00:00.000000000 Z
11
+ date: 2014-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gemspec_deps_gen
@@ -64,14 +64,13 @@ files:
64
64
  - acceptance_test.gemspec
65
65
  - acceptance_test.gemspec.erb
66
66
  - lib/acceptance_test.rb
67
- - lib/acceptance_test/acceptance_shared_context.rb
68
67
  - lib/acceptance_test/acceptance_test.rb
69
- - lib/acceptance_test/acceptance_test_builder.rb
70
68
  - lib/acceptance_test/acceptance_test_helper.rb
71
69
  - lib/acceptance_test/screenshot_maker.rb
72
70
  - lib/acceptance_test/version.rb
73
71
  - spec/features/acceptance_config.yml
74
72
  - spec/features/google_search_spec.rb
73
+ - spec/features/spec_helper.rb
75
74
  - spec/features/with_selenium_conf_spec.rb
76
75
  homepage: http://github.com/shvets/acceptance_test
77
76
  licenses:
@@ -100,4 +99,5 @@ summary: Simplifies congiguration and run of acceptance tests.
100
99
  test_files:
101
100
  - spec/features/acceptance_config.yml
102
101
  - spec/features/google_search_spec.rb
102
+ - spec/features/spec_helper.rb
103
103
  - spec/features/with_selenium_conf_spec.rb
@@ -1,36 +0,0 @@
1
- if defined? RSpec
2
- require 'acceptance_test/acceptance_test_builder'
3
-
4
- acceptance_test_lambda = lambda do
5
- attr_reader :acceptance_test
6
-
7
- before :all do
8
- config_name = File.expand_path("spec/features/acceptance_config.yml")
9
-
10
- @acceptance_test = AcceptanceTestBuilder.instance.create ".", config_name, "tmp"
11
- end
12
-
13
- before do
14
- metadata = RSpec.current_example.metadata
15
-
16
- acceptance_test.before metadata
17
- end
18
-
19
- after do
20
- metadata = RSpec.current_example.metadata
21
-
22
- acceptance_test.after page, RSpec.current_example.exception, metadata
23
-
24
- self.reset_session!
25
- end
26
- end
27
-
28
- RSpec.shared_context "AcceptanceTest" do
29
- self.define_singleton_method(:include_context, acceptance_test_lambda)
30
-
31
- include_context
32
- end
33
- end
34
-
35
-
36
-
@@ -1,37 +0,0 @@
1
- require 'yaml'
2
- require 'singleton'
3
- require 'active_support/core_ext/hash'
4
-
5
- class AcceptanceTestBuilder
6
- include Singleton
7
-
8
- def create project_root, config_name, screenshot_dir
9
- Capybara.default_driver = :selenium
10
-
11
- ENV['DRIVER'] = 'selenium'
12
-
13
- Capybara.configure do |config|
14
- config.match = :first
15
-
16
- config.ignore_hidden_elements = false
17
- end
18
-
19
- project_root = File.expand_path(project_root.to_s)
20
-
21
- config = HashWithIndifferentAccess.new(YAML.load_file(config_name))
22
-
23
- system "mkdir -p #{screenshot_dir}"
24
-
25
- acceptance_test = AcceptanceTest.new project_root, config, screenshot_dir
26
-
27
- ENV['ASSET_HOST'] = acceptance_test.app_host
28
-
29
- puts "Application URL : #{config[:webapp_url]}"
30
- puts "Selenium URL : #{config[:selenium_url]}" if config[:selenium_url]
31
- puts "ENV['DRIVER'] : #{ENV['DRIVER']}" if ENV['DRIVER']
32
- puts "Default Wait Time : #{Capybara.default_wait_time}"
33
-
34
- acceptance_test
35
- end
36
-
37
- end