autospec 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 826e093752e432a327554f83c84a237b38abd31a
4
+ data.tar.gz: 1b72c6ed4f73cd02b35b3cb8ad321bb6eff30428
5
+ SHA512:
6
+ metadata.gz: c6cee272b9648fd42efc029932e16034c3f5c8630b19c2f6da9838d8a221a58ba7f7bb44738fe6261d6619c8a7850f9289ca3934410ea4953e1b738599a02c93
7
+ data.tar.gz: f3065602f80fa5e88a2a65e66a06bebe74fc73017fc0f6f259908e6731ce6eaac375090afaacff49f9ff498073af17eed7bcffdd809dd1e4025f2dc5415e8fa5
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ # Ignore project files. Project files should never be committed.
2
+ .idea
3
+ .project
4
+ .projects
5
+ .settings
6
+ *.sublime-*
7
+
8
+ # YARDoc files
9
+ .yardoc
10
+ doc
11
+
12
+ # Log files and temporary files
13
+ logs
14
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.3
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'capybara'
4
+ gem 'selenium-webdriver', '~> 2.46'
5
+ gem 'activesupport', '~> 4.0.0'
6
+ gem 'rake'
7
+ gem 'rest-client'
8
+ gem 'capybara-webkit'
9
+
10
+ group :development do
11
+ gem 'rspec'
12
+ # gem 'parallel_tests'
13
+ gem 'pry'
14
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,82 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ activesupport (4.0.13)
5
+ i18n (~> 0.6, >= 0.6.9)
6
+ minitest (~> 4.2)
7
+ multi_json (~> 1.3)
8
+ thread_safe (~> 0.1)
9
+ tzinfo (~> 0.3.37)
10
+ capybara (2.4.4)
11
+ mime-types (>= 1.16)
12
+ nokogiri (>= 1.3.3)
13
+ rack (>= 1.0.0)
14
+ rack-test (>= 0.5.4)
15
+ xpath (~> 2.0)
16
+ capybara-webkit (1.5.2)
17
+ capybara (>= 2.3.0, < 2.5.0)
18
+ json
19
+ childprocess (0.5.6)
20
+ ffi (~> 1.0, >= 1.0.11)
21
+ coderay (1.1.0)
22
+ diff-lcs (1.2.5)
23
+ ffi (1.9.8)
24
+ i18n (0.7.0)
25
+ json (1.8.3)
26
+ method_source (0.8.2)
27
+ mime-types (2.6.1)
28
+ mini_portile (0.6.2)
29
+ minitest (4.7.5)
30
+ multi_json (1.11.1)
31
+ netrc (0.10.3)
32
+ nokogiri (1.6.6.2)
33
+ mini_portile (~> 0.6.0)
34
+ pry (0.10.1)
35
+ coderay (~> 1.1.0)
36
+ method_source (~> 0.8.1)
37
+ slop (~> 3.4)
38
+ rack (1.6.4)
39
+ rack-test (0.6.3)
40
+ rack (>= 1.0)
41
+ rake (10.4.2)
42
+ rest-client (1.7.3)
43
+ mime-types (>= 1.16, < 3.0)
44
+ netrc (~> 0.7)
45
+ rspec (3.2.0)
46
+ rspec-core (~> 3.2.0)
47
+ rspec-expectations (~> 3.2.0)
48
+ rspec-mocks (~> 3.2.0)
49
+ rspec-core (3.2.3)
50
+ rspec-support (~> 3.2.0)
51
+ rspec-expectations (3.2.1)
52
+ diff-lcs (>= 1.2.0, < 2.0)
53
+ rspec-support (~> 3.2.0)
54
+ rspec-mocks (3.2.1)
55
+ diff-lcs (>= 1.2.0, < 2.0)
56
+ rspec-support (~> 3.2.0)
57
+ rspec-support (3.2.2)
58
+ rubyzip (1.1.7)
59
+ selenium-webdriver (2.46.2)
60
+ childprocess (~> 0.5)
61
+ multi_json (~> 1.0)
62
+ rubyzip (~> 1.0)
63
+ websocket (~> 1.0)
64
+ slop (3.6.0)
65
+ thread_safe (0.3.4)
66
+ tzinfo (0.3.43)
67
+ websocket (1.2.2)
68
+ xpath (2.0.0)
69
+ nokogiri (~> 1.3)
70
+
71
+ PLATFORMS
72
+ ruby
73
+
74
+ DEPENDENCIES
75
+ activesupport (~> 4.0.0)
76
+ capybara
77
+ capybara-webkit
78
+ pry
79
+ rake
80
+ rest-client
81
+ rspec
82
+ selenium-webdriver (~> 2.46)
data/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # Autospec
2
+
3
+ Gem prototype abstracted from [automation-rspec](https://github.com/peijiehu/automation-rspec)
4
+
5
+ ## Installation
6
+
7
+ Install this gem.
8
+ In your spec_helper.rb, add the following lines before Rspec.configure:
9
+ ```
10
+
11
+ require 'capybara'
12
+ require 'capybara/rspec'
13
+ require 'site_prism'
14
+ require 'autospec'
15
+
16
+ # if you want to include Autospec::PageHelperModule for your pages
17
+ # require 'page_objects/all_page_objects'
18
+
19
+ Capybara.run_server = false
20
+
21
+ # set default js enabled driver based on user input(env variable),
22
+ # which applies to all tests marked with :type => :feature
23
+ # default is :selenium, and selenium uses :firefox by default
24
+ driver_helper = Autospec::DriverHelper.new("#{Dir.pwd}/config/autospec/saucelabs.yml")
25
+ driver_to_use = driver_helper.driver
26
+ Capybara.javascript_driver = driver_to_use.to_sym
27
+
28
+ # sets app_host based on user input(env variable)
29
+ app_host = ENV['r_env'] || begin
30
+ Autospec.logger.debug "r_env is not set, using default env 'qa'"
31
+ 'qa'
32
+ end
33
+ env_yaml = YAML.load_file("#{Dir.pwd}/config/autospec/env.yml")
34
+ Capybara.app_host = env_yaml[app_host]
35
+
36
+ ```
37
+ And, add this in your Rspec.configure in spec_helper.rb,
38
+ ```
39
+
40
+ config.before :each do |example|
41
+ example_full_description = example.full_description
42
+ begin
43
+ driver_helper.set_sauce_session_name(example_full_description) if driver_to_use.include?('saucelabs') && !driver_to_use.nil?
44
+ Autospec.logger.debug "Finished setting saucelabs session name for #{example_full_description}"
45
+ rescue
46
+ Autospec.logger.debug "Failed setting saucelabs session name for #{example_full_description}"
47
+ end
48
+ page.driver.allow_url '*' if driver_to_use == 'webkit'
49
+ end
50
+
51
+ ```
52
+ #### config/autospec/saucelabs.yml
53
+
54
+ ```
55
+
56
+ ---
57
+ driver: 'remote'
58
+ hub:
59
+ url: 'http://ondemand.saucelabs.com/wd/hub'
60
+ user: 'qa'
61
+ pass: 'key'
62
+
63
+ timeouts:
64
+ driver: 120
65
+ implicit_wait: 120
66
+ page_load: 60
67
+ script_timeout: 120
68
+
69
+ overrides:
70
+ peijie:
71
+ hub:
72
+ user: 'peijiehu'
73
+ pass: 'key'
74
+
75
+ smoke:
76
+ hub:
77
+ user: 'smoketest'
78
+ pass: 'key'
79
+
80
+ # Platforms and browsers we support
81
+ android_4_phone:
82
+ archetype: 'android'
83
+ capabilities:
84
+ browserName: 'Browser'
85
+ platformVersion: '4.4'
86
+ appium-version: '1.2.2'
87
+ platformName: 'Android'
88
+ deviceName: 'Android Emulator'
89
+ device-orientation: 'portrait'
90
+
91
+ osx10_safari8:
92
+ archetype: 'safari'
93
+ capabilities:
94
+ version: '8'
95
+ platform: 'OS X 10.9'
96
+ screen-resolution: '1600x1200'
97
+ safariIgnoreFraudWarning: true
98
+
99
+ win7_ff38:
100
+ archetype: 'firefox'
101
+ capabilities:
102
+ version: '38'
103
+ platform: 'Windows 7'
104
+ screen-resolution: '1600x1200'
105
+
106
+ ```
107
+
108
+ #### config/autospec/env.yml
109
+ ```
110
+
111
+ ---
112
+ qa: 'http://www.qa.xxx.com'
113
+ prod: 'http://www.xxx.com'
114
+ duck: 'https://duckduckgo.com'
115
+
116
+ ```
117
+
118
+ #### logs/autospec.log
119
+ (empty file, add it to gitignore)
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ begin
2
+ require 'rspec/core/rake_task'
3
+ RSpec::Core::RakeTask.new(:spec)
4
+ task :default => :test
5
+ rescue LoadError
6
+ end
data/autospec.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'autospec/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "autospec"
8
+ spec.version = Autospec::VERSION
9
+ spec.authors = ["Peijie Hu"]
10
+ spec.email = ["tradev.pj@gmail.com"]
11
+
12
+ spec.summary = %q{Helper to build test automation framework with rspec and capybara}
13
+ spec.description = %q{Helper to build test automation framework with rspec and capybara}
14
+ spec.homepage = "https://github.com/peijiehu/autospec"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency 'capybara', '~> 2.4.4'
23
+ spec.add_dependency 'selenium-webdriver', '~> 2.46'
24
+ spec.add_dependency 'activesupport', '~> 4.0.0'
25
+ spec.add_dependency 'rest-client', '~> 1.7.3'
26
+ spec.add_dependency 'capybara-webkit', '~> 1.5.2'
27
+
28
+ spec.add_development_dependency 'bundler', '~> 1.8'
29
+ spec.add_development_dependency 'rake', '~> 10.0'
30
+ spec.add_development_dependency 'rspec'
31
+ spec.add_development_dependency 'pry'
32
+ end
@@ -0,0 +1,87 @@
1
+ module Autospec
2
+ class DriverHelper
3
+
4
+ LOCAL_DRIVERS = [:firefox]
5
+ attr_accessor :user, :pass, :driver_to_use
6
+ attr_accessor :sauce_config
7
+
8
+ def initialize(sauce_config)
9
+ self.sauce_config = sauce_config
10
+ end
11
+
12
+ def driver
13
+ # Local drivers registration
14
+ LOCAL_DRIVERS.each do |driver|
15
+ Capybara.register_driver driver do |app|
16
+ Capybara::Selenium::Driver.new(app, :browser => driver)
17
+ end
18
+ end
19
+
20
+ if ENV['r_driver'].nil?
21
+ # set default_driver to a local firefox
22
+ driver_to_use = 'firefox'
23
+ else
24
+ # cmd_r_driver may be 'chrome' or ['saucelabs', 'phu', 'win7_ff34'], etc
25
+ cmd_r_driver = ENV['r_driver'].split(':')
26
+
27
+ # Remote driver registration
28
+ # Retrieve hub url, user credentials and browser info from saucelabs.yml
29
+ if ENV['r_driver'].include?('saucelabs')
30
+ remote_driver_yaml = self.sauce_config
31
+ remote_capabilities = Selenium::WebDriver::Remote::Capabilities.new
32
+ overrides_hash = remote_driver_yaml['overrides']
33
+ if cmd_r_driver[1].nil?
34
+ # set default
35
+ self.user = remote_driver_yaml['hub']['user']
36
+ self.pass = remote_driver_yaml['hub']['pass']
37
+ remote_capabilities = {
38
+ 'browserName' => 'firefox',
39
+ 'version' => '34',
40
+ 'platform' => 'Windows 7'
41
+ }
42
+ else
43
+ # set by overrides
44
+ self.user = overrides_hash[cmd_r_driver[1]]['hub']['user']
45
+ self.pass = overrides_hash[cmd_r_driver[1]]['hub']['pass']
46
+ remote_capabilities = overrides_hash[cmd_r_driver[2]]['capabilities']
47
+ end
48
+
49
+ Autospec.logger.debug "remote_capabilities: #{remote_capabilities}"
50
+
51
+ default_remote_options = {
52
+ :browser => :remote,
53
+ :url => "http://#{self.user}:#{self.pass}@ondemand.saucelabs.com/wd/hub",
54
+ :desired_capabilities => remote_capabilities
55
+ }
56
+ Capybara.register_driver :saucelabs do |app|
57
+ Capybara::Selenium::Driver.new(app, default_remote_options)
58
+ end
59
+ end
60
+ # set default_driver to a local browser or saucelabs
61
+ driver_to_use = cmd_r_driver[0]
62
+ end
63
+
64
+ driver_to_use
65
+ end
66
+
67
+
68
+ # update session name on saucelabs
69
+ def set_sauce_session_name(new_name)
70
+ new_tags = "started by #{self.user}"
71
+ require 'json'
72
+ # current session is a wrapper of Capybara::Selenium::Driver,
73
+ # Capybara::Selenium::Driver instantiates a browser from Selenium::Webdriver
74
+ # then bridge is a private method in Selenium::Webdriver::Driver
75
+ bridge = Capybara.current_session.driver.browser.send :bridge
76
+ session_id = bridge.session_id
77
+ Autospec.logger.debug "bridge session_id: #{session_id}"
78
+ http_auth = "https://#{self.user}:#{self.pass}@saucelabs.com/rest/v1/#{self.user}/jobs/#{session_id}"
79
+ # to_json need to: require "active_support/core_ext", but will mess up the whole framework, require 'json' in this method solved it
80
+ body = {"name" => new_name, "tags" => [new_tags]}.to_json
81
+ # gem 'rest-client'
82
+ Autospec.logger.debug "About to send request to saucelabs with url as #{http_auth} and body as #{body}"
83
+ RestClient.put(http_auth, body, {:content_type => "application/json"})
84
+ end
85
+
86
+ end
87
+ end
@@ -0,0 +1,14 @@
1
+ module Autospec
2
+ module GeneralHelperModule
3
+
4
+ # Generate a unique id with a random hex string and time stamp string
5
+ def generate_unique_id
6
+ SecureRandom.hex(3) + Time.now.to_i.to_s
7
+ end
8
+
9
+ def generate_new_email
10
+ [generate_unique_id, 'pj@mailinator.com'].join('.')
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ module Autospec
2
+ class MyLogger < ActiveSupport::Logger
3
+ def initialize
4
+ log_file_path = "#{Dir.pwd}/logs/autospec.log"
5
+ log_file = File.open(log_file_path, File::WRONLY | File::APPEND | File::CREAT) unless log_file_path.respond_to?(:write)
6
+ super(log_file)
7
+ end
8
+ end
9
+
10
+ # module method for Autospec
11
+ def logger
12
+ logger = MyLogger.new
13
+ my_format = "[%s#%d] %5s -- %s: %s\n"
14
+ original_formatter = ActiveSupport::Logger::Formatter.new
15
+ logger.formatter = proc { |severity, datetime, progname, msg|
16
+ formatted_datetime = original_formatter.send :format_datetime, datetime
17
+ str_msg = original_formatter.send :msg2str, msg
18
+ my_format % [formatted_datetime, $$, severity, progname, str_msg]
19
+ }
20
+ logger
21
+ end
22
+
23
+ module_function :logger
24
+ end
@@ -0,0 +1,43 @@
1
+ module Autospec
2
+ module PageHelperModule
3
+
4
+ def current_session
5
+ Capybara.current_session
6
+ end
7
+
8
+ # Wait on all DOM events to finish
9
+ # Note that #find(from Capybara::Node::Finders) continuously retry finding an element
10
+ # and timeout for #find is controlled by Capybara.default_wait_time
11
+ def wait_for_dom
12
+ uuid = SecureRandom.uuid
13
+ current_session.find("body")
14
+ current_session.evaluate_script <<-EOS
15
+ _.defer(function() {
16
+ $('body').append("<div id='#{uuid}'></div>");
17
+ });
18
+ EOS
19
+ current_session.find("div##{uuid}")
20
+ end
21
+
22
+ # Wait on all AJAX requests to finish
23
+ def wait_for_ajax(timeout = Capybara.default_wait_time)
24
+ wait(timeout: timeout, msg: "Timeout after waiting #{timeout} for all ajax requests to finish") do
25
+ current_session.evaluate_script 'jQuery.active == 0'
26
+ end
27
+ end
28
+
29
+ # Explicitly wait for a certain condition to be true:
30
+ # wait.until { driver.find_element(:css, 'body.tmpl-srp') }
31
+ # when timeout is not specified, default timeout 5 sec will be used
32
+ # when timeout is larger than 15, max timeout 15 sec will be used
33
+ def wait(opts = {})
34
+ if !opts[:timeout].nil? && opts[:timeout] > 15
35
+ puts "WARNING: #{opts[:timeout]} sec timeout is NOT supported by wait method,
36
+ max timeout 15 sec will be used instead"
37
+ opts[:timeout] = 15
38
+ end
39
+ Selenium::WebDriver::Wait.new(opts)
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,4 @@
1
+ module Autospec
2
+ module SpecHelperModule
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Autospec
2
+ VERSION = "0.0.1"
3
+ end
data/lib/autospec.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'capybara'
2
+ require 'yaml'
3
+ require 'pry'
4
+ require 'selenium-webdriver'
5
+ require 'capybara-webkit'
6
+ require 'rest-client'
7
+ require 'active_support'
8
+
9
+ require_relative 'autospec/driver_helper'
10
+ require_relative 'autospec/general_helper_module'
11
+ require_relative 'autospec/logger'
12
+ require_relative 'autospec/page_helper_module'
13
+ require_relative 'autospec/spec_helper_module'
14
+
15
+ module Autospec
16
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: autospec
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Peijie Hu
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-07-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.4.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.4.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: selenium-webdriver
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.46'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.46'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 4.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 4.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rest-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.7.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.7.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: capybara-webkit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.5.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.5.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: Helper to build test automation framework with rspec and capybara
140
+ email:
141
+ - tradev.pj@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".rspec"
148
+ - ".ruby-version"
149
+ - Gemfile
150
+ - Gemfile.lock
151
+ - README.md
152
+ - Rakefile
153
+ - autospec.gemspec
154
+ - lib/autospec.rb
155
+ - lib/autospec/driver_helper.rb
156
+ - lib/autospec/general_helper_module.rb
157
+ - lib/autospec/logger.rb
158
+ - lib/autospec/page_helper_module.rb
159
+ - lib/autospec/spec_helper_module.rb
160
+ - lib/autospec/version.rb
161
+ homepage: https://github.com/peijiehu/autospec
162
+ licenses:
163
+ - MIT
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubyforge_project:
181
+ rubygems_version: 2.2.2
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: Helper to build test automation framework with rspec and capybara
185
+ test_files: []
186
+ has_rdoc: