calliper 0.0.1 → 0.0.2
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/calliper.gemspec +4 -1
- data/lib/calliper.rb +14 -5
- data/lib/calliper/page.rb +2 -2
- data/lib/calliper/server.rb +13 -11
- data/lib/calliper/webdriver.rb +4 -4
- data/test/test_helper.rb +0 -1
- metadata +30 -4
- metadata.gz.sig +0 -0
- data/lib/calliper/rack.rb +0 -19
- data/lib/calliper/rails.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e618ec8d3e69dfc29492b01d8568aa0d7c3f1ef1
|
4
|
+
data.tar.gz: 618a6203abb30729417b52b68ab985ee7d236985
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59e1c7f61fd7b67f1ec7675f223512d4feb48a95cdf99e32cc78697e021b8a49501f5d19bb94842fad471036237f1795b05019259adcb6ef2e581c601d7bea7b
|
7
|
+
data.tar.gz: 704ecbe792d7e60f3d0b7a3e36a4b409967933c44030a026a4ba97d8249c192d14ee75b1652f48fe9a58746c4d4f7fe10371faa8f4b986ce56e496fb45f15f85
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/calliper.gemspec
CHANGED
@@ -18,6 +18,9 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
|
19
19
|
|
20
20
|
gem.add_dependency 'selenium-webdriver'
|
21
|
-
|
21
|
+
|
22
|
+
gem.add_development_dependency 'rake'
|
23
|
+
gem.add_development_dependency 'json'
|
24
|
+
gem.add_development_dependency 'sinatra'
|
22
25
|
gem.add_development_dependency 'minitest'
|
23
26
|
end
|
data/lib/calliper.rb
CHANGED
@@ -3,15 +3,24 @@ require 'calliper/config'
|
|
3
3
|
require 'calliper/page'
|
4
4
|
require 'calliper/server'
|
5
5
|
require 'calliper/webdriver'
|
6
|
-
require 'calliper/rails' if defined?(Rails)
|
7
6
|
require 'calliper/minitest' if defined?(Minitest)
|
8
7
|
|
9
8
|
module Calliper
|
10
|
-
def self.
|
11
|
-
|
9
|
+
def self.enable!
|
10
|
+
application = Config.application || (::Rails.application if defined?(::Rails))
|
11
|
+
raise "No application configured" unless application
|
12
|
+
|
13
|
+
logger = ::Rails.logger if defined?(::Rails)
|
14
|
+
|
15
|
+
@server = Server.new(application, logger: logger)
|
16
|
+
@server.start
|
12
17
|
end
|
13
18
|
|
14
|
-
def self.
|
15
|
-
server
|
19
|
+
def self.server
|
20
|
+
@server
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.server?
|
24
|
+
!!@server
|
16
25
|
end
|
17
26
|
end
|
data/lib/calliper/page.rb
CHANGED
@@ -8,11 +8,11 @@ module Calliper
|
|
8
8
|
page
|
9
9
|
end
|
10
10
|
|
11
|
-
def get(path,
|
11
|
+
def get(path, options = {})
|
12
12
|
url = path =~ %r(^http://) ? path : "#{base_url}#{path}"
|
13
13
|
driver.get(url)
|
14
14
|
|
15
|
-
if sync
|
15
|
+
if options[:sync].nil? || options[:sync]
|
16
16
|
wait = Selenium::WebDriver::Wait.new(timeout: 10)
|
17
17
|
wait.until { driver.find_element(css: "[ng-app]") }
|
18
18
|
end
|
data/lib/calliper/server.rb
CHANGED
@@ -1,23 +1,16 @@
|
|
1
|
+
require 'timeout'
|
1
2
|
require 'calliper/config'
|
2
3
|
|
3
4
|
module Calliper
|
4
|
-
def self.server
|
5
|
-
@server ||= Server.new(Config.application)
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.server?
|
9
|
-
!!@server
|
10
|
-
end
|
11
|
-
|
12
5
|
# NOTE: Borrows code from the fantastic Teaspoon gem:
|
13
6
|
# http://github.com/modeset/teaspoon
|
14
7
|
class Server
|
15
8
|
attr_reader :application, :port, :logger
|
16
9
|
|
17
|
-
def initialize(application,
|
10
|
+
def initialize(application, options = {})
|
18
11
|
@application = application
|
19
|
-
@port = port
|
20
|
-
@logger = logger
|
12
|
+
@port = options[:port] || Config.port || find_available_port
|
13
|
+
@logger = options[:logger]
|
21
14
|
end
|
22
15
|
|
23
16
|
def start
|
@@ -56,5 +49,14 @@ module Calliper
|
|
56
49
|
def url
|
57
50
|
"http://127.0.0.1:#{port}"
|
58
51
|
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def find_available_port
|
56
|
+
server = TCPServer.new('127.0.0.1', 0)
|
57
|
+
server.addr[1]
|
58
|
+
ensure
|
59
|
+
server.close if server
|
60
|
+
end
|
59
61
|
end
|
60
62
|
end
|
data/lib/calliper/webdriver.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'socket'
|
2
2
|
|
3
3
|
module Calliper
|
4
|
-
#
|
5
|
-
#
|
4
|
+
# FIXME: Only firefox quits correctly when used directly. There are no
|
5
|
+
# problems when using a Selenium Server.
|
6
6
|
def self.driver
|
7
7
|
@driver ||= if local_server_running?
|
8
8
|
Selenium::WebDriver.for(:remote,
|
@@ -15,7 +15,7 @@ module Calliper
|
|
15
15
|
desired_capabilities: Config.capabilities
|
16
16
|
)
|
17
17
|
else
|
18
|
-
Selenium::WebDriver.for(Config.driver)
|
18
|
+
Selenium::WebDriver.for(Config.driver ? Config.driver.to_sym : :firefox)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -39,7 +39,7 @@ end
|
|
39
39
|
# FIXME: use real locators that use protractor's client-side finders:
|
40
40
|
# https://github.com/angular/protractor/blob/master/lib/clientsidescripts.js
|
41
41
|
module Selenium::WebDriver::SearchContext
|
42
|
-
%
|
42
|
+
%w(find_element find_elements).each do |name|
|
43
43
|
alias_method "#{name}_without_angular", name
|
44
44
|
|
45
45
|
define_method name do |*args|
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: calliper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Portalier
|
@@ -47,7 +47,35 @@ dependencies:
|
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: rake
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: json
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: sinatra
|
51
79
|
requirement: !ruby/object:Gem::Requirement
|
52
80
|
requirements:
|
53
81
|
- - '>='
|
@@ -93,8 +121,6 @@ files:
|
|
93
121
|
- lib/calliper/config.rb
|
94
122
|
- lib/calliper/minitest.rb
|
95
123
|
- lib/calliper/page.rb
|
96
|
-
- lib/calliper/rack.rb
|
97
|
-
- lib/calliper/rails.rb
|
98
124
|
- lib/calliper/server.rb
|
99
125
|
- lib/calliper/version.rb
|
100
126
|
- lib/calliper/webdriver.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/lib/calliper/rack.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'calliper/server'
|
2
|
-
|
3
|
-
module Calliper
|
4
|
-
def self.application
|
5
|
-
@app
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.application=(app)
|
9
|
-
@app = app
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.server
|
13
|
-
@server ||= Server.new(application)
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.server?
|
17
|
-
!!@server
|
18
|
-
end
|
19
|
-
end
|
data/lib/calliper/rails.rb
DELETED