calliper 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6744c434f323e9ef6685ecb0ac6eb918fa8c5711
4
- data.tar.gz: 3384b9224c9767b45edc52233c707ecd060ca059
3
+ metadata.gz: e618ec8d3e69dfc29492b01d8568aa0d7c3f1ef1
4
+ data.tar.gz: 618a6203abb30729417b52b68ab985ee7d236985
5
5
  SHA512:
6
- metadata.gz: 07b6681def6e25bfb470f39f4250b3a904fa0fd20067ca3c9da52e35dffc42b41719573f3668ce57706b11a2a533b914c76eb52cbade3f50786d94b4ccb31ae3
7
- data.tar.gz: b62ef597f198e12f311487a2b6d5131ccdafbc771e9145913355b075ef27335cf0cd85213cc927993ae0d434bf54556ef3b00da5dbc31bd9451ac794cb0c39ee
6
+ metadata.gz: 59e1c7f61fd7b67f1ec7675f223512d4feb48a95cdf99e32cc78697e021b8a49501f5d19bb94842fad471036237f1795b05019259adcb6ef2e581c601d7bea7b
7
+ data.tar.gz: 704ecbe792d7e60f3d0b7a3e36a4b409967933c44030a026a4ba97d8249c192d14ee75b1652f48fe9a58746c4d4f7fe10371faa8f4b986ce56e496fb45f15f85
Binary file
data.tar.gz.sig CHANGED
Binary file
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  *.log
2
+ *.gem
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -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
- gem.add_development_dependency 'rack'
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
@@ -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.server?
11
- false
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.enable!
15
- server.start
19
+ def self.server
20
+ @server
21
+ end
22
+
23
+ def self.server?
24
+ !!@server
16
25
  end
17
26
  end
@@ -8,11 +8,11 @@ module Calliper
8
8
  page
9
9
  end
10
10
 
11
- def get(path, sync: true)
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
@@ -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, port = Config.port, logger = nil)
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
@@ -1,8 +1,8 @@
1
1
  require 'socket'
2
2
 
3
3
  module Calliper
4
- # TODO: connect to any remote server (eg: custom, saucelabs, browserstack)
5
- # FIXME: only firefox quits correctly when used directly
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
- %i(find_element find_elements).each do |name|
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|
@@ -5,7 +5,6 @@ require_relative 'sample/application'
5
5
 
6
6
  Calliper.setup do |config|
7
7
  config.application = SampleApplication
8
- config.port = 3002
9
8
 
10
9
  if ENV['CI']
11
10
  config.driver = :remote
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.1
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: rack
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
@@ -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
@@ -1,2 +0,0 @@
1
- require 'calliper/server'
2
- Calliper::Config.application = Rails.application