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 +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +82 -0
- data/README.md +119 -0
- data/Rakefile +6 -0
- data/autospec.gemspec +32 -0
- data/lib/autospec/driver_helper.rb +87 -0
- data/lib/autospec/general_helper_module.rb +14 -0
- data/lib/autospec/logger.rb +24 -0
- data/lib/autospec/page_helper_module.rb +43 -0
- data/lib/autospec/spec_helper_module.rb +4 -0
- data/lib/autospec/version.rb +3 -0
- data/lib/autospec.rb +16 -0
- metadata +186 -0
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
data/.rspec
ADDED
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
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
|
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:
|