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 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