pludoni_rspec 0.6.0.rc1 → 0.8.0

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
  SHA256:
3
- metadata.gz: 54f297b7f9ccf99f6a469fa815c32dc27891de1669295105e0a6f969b2ea4c3e
4
- data.tar.gz: d63016f635b686b9b5082211c9536ba62237efc0cdac07d279d7d2299d0cebb5
3
+ metadata.gz: 59498ca200fbfc7e40d395c62847d7a54f778f26c09d5f27a50ac7ba3d6e8ac9
4
+ data.tar.gz: dde607bf239acbd3fb08ca91ab6e3fbd4cc15051876eb020888b1e76ef5f6467
5
5
  SHA512:
6
- metadata.gz: 961718971875f0684a91cd09d3bc314f6a1c0016e81e19d9fc3ee6f0ab9c2a486e469a92406543ef950c64a6e9fd4b4ab9b5b119a788ead464e2e0a44de5ca68
7
- data.tar.gz: be026fff600debf216077f224932754ff8ac4e917845412d83ef5fec6e0e94c624d1c1869a0b43506ca70c243a93e93ec1daad80b05b2cb77b3c651f3703d56f
6
+ metadata.gz: 998c37eecf23b0a57b21d84d0cf1b1f677163a85528c81b032a2982d1a6591de46085d817a8268d6b415f775fb3ba781ea15e988d5a3da7e5a5d03990010216f
7
+ data.tar.gz: 4a47c5df60ded585b8d859271a699b8cff9be2e7c49c96e40c0ee825c2b89ea8467085ac5750e07cc9c6955cc2886b3009919d0bae7105ae86ea566ac5d75d41
@@ -1,74 +1,76 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pludoni_rspec (0.6.0)
4
+ pludoni_rspec (0.8.0)
5
5
  capybara (>= 3.13.2)
6
6
  fuubar (>= 2.3.1)
7
- geckodriver-helper (>= 0.23.0)
8
7
  headless (>= 2.3.1)
9
8
  pry-rails
10
9
  puma
11
10
  selenium-webdriver (>= 3.141.0)
12
11
  simplecov (>= 0.16.1)
12
+ webdrivers (>= 4.0.0)
13
13
 
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
- addressable (2.6.0)
18
- public_suffix (>= 2.0.2, < 4.0)
19
- archive-zip (0.11.0)
20
- io-like (~> 0.3.0)
21
- capybara (3.13.2)
17
+ addressable (2.7.0)
18
+ public_suffix (>= 2.0.2, < 5.0)
19
+ capybara (3.33.0)
22
20
  addressable
23
21
  mini_mime (>= 0.1.3)
24
22
  nokogiri (~> 1.8)
25
23
  rack (>= 1.6.0)
26
24
  rack-test (>= 0.6.3)
27
- regexp_parser (~> 1.2)
25
+ regexp_parser (~> 1.5)
28
26
  xpath (~> 3.2)
29
- childprocess (0.9.0)
30
- ffi (~> 1.0, >= 1.0.11)
31
- coderay (1.1.2)
32
- docile (1.3.1)
33
- ffi (1.10.0)
34
- fuubar (2.3.2)
27
+ childprocess (3.0.0)
28
+ coderay (1.1.3)
29
+ docile (1.3.2)
30
+ fuubar (2.5.0)
35
31
  rspec-core (~> 3.0)
36
32
  ruby-progressbar (~> 1.4)
37
- geckodriver-helper (0.23.0)
38
- archive-zip (~> 0.7)
39
33
  headless (2.3.1)
40
- io-like (0.3.0)
41
- json (2.1.0)
42
- method_source (0.9.2)
43
- mini_mime (1.0.1)
34
+ method_source (1.0.0)
35
+ mini_mime (1.0.2)
44
36
  mini_portile2 (2.4.0)
45
- nokogiri (1.10.1)
37
+ nio4r (2.5.4)
38
+ nokogiri (1.10.10)
46
39
  mini_portile2 (~> 2.4.0)
47
- pry (0.12.2)
48
- coderay (~> 1.1.0)
49
- method_source (~> 0.9.0)
40
+ pry (0.13.1)
41
+ coderay (~> 1.1)
42
+ method_source (~> 1.0)
50
43
  pry-rails (0.3.9)
51
44
  pry (>= 0.10.4)
52
- public_suffix (3.0.3)
53
- puma (3.12.0)
54
- rack (2.0.6)
45
+ <<<<<<< HEAD
46
+ public_suffix (4.0.1)
47
+ puma (4.3.5)
48
+ =======
49
+ public_suffix (4.0.6)
50
+ puma (5.0.2)
51
+ >>>>>>> 41f9d46... V.0.8.0
52
+ nio4r (~> 2.0)
53
+ rack (2.2.3)
55
54
  rack-test (1.1.0)
56
55
  rack (>= 1.0, < 3)
57
56
  rake (10.5.0)
58
- regexp_parser (1.3.0)
59
- rspec-core (3.8.0)
60
- rspec-support (~> 3.8.0)
61
- rspec-support (3.8.0)
62
- ruby-progressbar (1.10.0)
63
- rubyzip (1.2.2)
64
- selenium-webdriver (3.141.0)
65
- childprocess (~> 0.5)
66
- rubyzip (~> 1.2, >= 1.2.2)
67
- simplecov (0.16.1)
57
+ regexp_parser (1.8.2)
58
+ rspec-core (3.9.3)
59
+ rspec-support (~> 3.9.3)
60
+ rspec-support (3.9.3)
61
+ ruby-progressbar (1.10.1)
62
+ rubyzip (2.3.0)
63
+ selenium-webdriver (3.142.7)
64
+ childprocess (>= 0.5, < 4.0)
65
+ rubyzip (>= 1.2.2)
66
+ simplecov (0.19.0)
68
67
  docile (~> 1.1)
69
- json (>= 1.8, < 3)
70
- simplecov-html (~> 0.10.0)
71
- simplecov-html (0.10.2)
68
+ simplecov-html (~> 0.11)
69
+ simplecov-html (0.12.3)
70
+ webdrivers (4.4.1)
71
+ nokogiri (~> 1.6)
72
+ rubyzip (>= 1.3.0)
73
+ selenium-webdriver (>= 3.0, < 4.0)
72
74
  xpath (3.2.0)
73
75
  nokogiri (~> 1.8)
74
76
 
@@ -81,4 +83,4 @@ DEPENDENCIES
81
83
  rake (~> 10.0)
82
84
 
83
85
  BUNDLED WITH
84
- 1.17.1
86
+ 1.17.3
@@ -11,14 +11,16 @@ module PludoniRspec
11
11
  attr_accessor :capybara_timeout
12
12
  attr_accessor :capybara_driver
13
13
  attr_accessor :firefox_arguments
14
+ attr_accessor :apparition_arguments
14
15
  end
15
- self.chrome_driver_version = "2.36"
16
- self.destroy_headless = true
16
+ # self.chrome_driver_version = "2.36"
17
+ self.destroy_headless = false
17
18
  self.wrap_js_spec_in_headless = RbConfig::CONFIG['host_os']['linux']
18
- self.chrome_arguments = ['headless', 'disable-gpu', "window-size=1600,1200", 'no-sandbox', 'disable-dev-shm-usage', 'lang=de']
19
+ # self.chrome_arguments = ['headless', 'disable-gpu', "window-size=1600,1200", 'no-sandbox', 'disable-dev-shm-usage', 'lang=de']
19
20
  self.capybara_timeout = ENV['CI'] == '1' ? 30 : 5
20
21
  self.firefox_arguments = ['--headless', '--window-size=1600,1200']
21
- self.capybara_driver = :headless_chrome
22
+ self.apparition_arguments = { js_errors: false, screen_size: [1600, 1200], window_size: [1600, 1200], browser_logger: File.open(File::NULL, 'w') }
23
+ self.capybara_driver = :firefox
22
24
  end
23
25
  def self.run
24
26
  ENV["RAILS_ENV"] ||= 'test'
@@ -29,7 +31,12 @@ module PludoniRspec
29
31
  require 'rspec/rails'
30
32
 
31
33
  require 'pludoni_rspec/spec_helper'
32
- require 'pludoni_rspec/capybara'
34
+ if PludoniRspec::Config.capybara_driver == :apparition
35
+ puts "Apparition is deprecated for us, use Firefox"
36
+ require 'pludoni_rspec/apparition'
37
+ else
38
+ require 'pludoni_rspec/capybara'
39
+ end
33
40
  require 'pludoni_rspec/freeze_time'
34
41
  require 'pludoni_rspec/shared_context'
35
42
  if defined?(VCR)
@@ -43,7 +50,17 @@ module PludoniRspec
43
50
  end
44
51
 
45
52
  def self.coverage!
53
+ if File.exists?('coverage/.resultset.json') && (
54
+ File.ctime('coverage/.resultset.json') < (Time.now - 900) ||
55
+ (JSON.parse(File.read('coverage/.resultset.json')).keys.length > 4)
56
+ )
57
+ File.unlink('coverage/.resultset.json')
58
+ if File.exists?('coverage/.resultset.json.lock')
59
+ File.unlink('coverage/.resultset.json.lock')
60
+ end
61
+ end
46
62
  require 'simplecov'
63
+ SimpleCov.command_name "spec:#{Time.now.to_i}"
47
64
  SimpleCov.start 'rails' do
48
65
  add_filter do |source_file|
49
66
  source_file.lines.count < 10
@@ -0,0 +1,44 @@
1
+ require "capybara"
2
+ require "headless"
3
+ require "puma"
4
+ require 'pludoni_rspec/system_test_chrome_helper'
5
+
6
+ require 'capybara/apparition'
7
+ Capybara.register_driver :apparition_debug do |app|
8
+ Capybara::Apparition::Driver.new(app, js_errors: true, browser_options: { 'no-sandbox' => true })
9
+ end
10
+ Capybara.register_driver :apparition do |app|
11
+ if ENV['CI']
12
+ options[:browser_options] = { 'no-sandbox' => true }
13
+ end
14
+ Capybara::Apparition::Driver.new(app, PludoniRspec::Config.apparition_arguments)
15
+ end
16
+ Capybara.javascript_driver = :apparition
17
+
18
+ RSpec.configure do |c|
19
+ c.include PludoniRspec::SystemTestChromeHelper, type: :feature
20
+ c.include PludoniRspec::SystemTestChromeHelper, type: :system
21
+ c.before(:all, js: true) do
22
+ # disable puma output
23
+ Capybara.server = :puma, { Silent: true }
24
+ end
25
+ c.before(:each, type: :system) do
26
+ if defined?(driven_by)
27
+ driven_by :apparition
28
+ end
29
+ end
30
+ c.around(:all, js: true) do |ex|
31
+ begin
32
+ if !@headless and PludoniRspec::Config.wrap_js_spec_in_headless
33
+ @headless = Headless.new(destroy_at_exit: true, reuse: true)
34
+ @headless.start
35
+ end
36
+ ex.run
37
+ ensure
38
+ if @headless and PludoniRspec::Config.destroy_headless
39
+ @headless.destroy
40
+ end
41
+ end
42
+ end
43
+ end
44
+ Capybara.default_max_wait_time = PludoniRspec::Config.capybara_timeout
@@ -1,12 +1,15 @@
1
1
  require "capybara"
2
2
  require "selenium-webdriver"
3
3
  require "headless"
4
- require "selenium/webdriver"
5
4
  require "puma"
6
5
  require 'pludoni_rspec/system_test_chrome_helper'
7
- require 'geckodriver/helper'
6
+ require 'webdrivers/geckodriver'
8
7
 
9
8
  RSpec.configure do |c|
9
+ c.before(:all, js: true) do
10
+ Webdrivers.cache_time = 86_400
11
+ Webdrivers::Geckodriver.update
12
+ end
10
13
  c.include PludoniRspec::SystemTestChromeHelper, type: :feature
11
14
  c.include PludoniRspec::SystemTestChromeHelper, type: :system
12
15
  c.before(:all, js: true) do
@@ -3,6 +3,13 @@ RSpec.configure do |config|
3
3
  config.expect_with :rspec do |expectations|
4
4
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
5
5
  end
6
+ config.include RSpec::Rails::RequestExampleGroup, type: :request, file_path: /spec\/api/
7
+ config.before do
8
+ I18n.locale = I18n.default_locale
9
+ if defined?(Fabrication)
10
+ Fabrication::Sequencer.reset
11
+ end
12
+ end
6
13
 
7
14
  config.mock_with :rspec do |mocks|
8
15
  mocks.verify_partial_doubles = true
@@ -21,4 +28,11 @@ RSpec.configure do |config|
21
28
  config.filter_gems_from_backtrace("fabrication")
22
29
  config.filter_gems_from_backtrace("grape")
23
30
  config.filter_gems_from_backtrace("rack")
31
+
32
+ config.around(:each, :timeout) do |example|
33
+ time = 10 unless time.kind_of?(Numeric)
34
+ Timeout.timeout(time) do
35
+ example.run
36
+ end
37
+ end
24
38
  end
@@ -36,4 +36,26 @@ module PludoniRspec::SystemTestChromeHelper
36
36
  yield
37
37
  Capybara.session_name = old_session
38
38
  end
39
+
40
+ # wait_until { page.has_content?("Something") }
41
+ def wait_until(timeout = 10, &blk)
42
+ end_time = Time.zone.now + timeout
43
+ last_exception = nil
44
+
45
+ until Time.zone.now >= end_time
46
+ begin
47
+ result = yield
48
+ return result if result
49
+ rescue RSpec::Expectations::ExpectationNotMetError => ex
50
+ last_exception = ex
51
+ end
52
+
53
+ sleep 0.01
54
+ end
55
+
56
+ msg = "timed out after #{timeout} seconds"
57
+ msg << ":\n#{last_exception.message}" if last_exception
58
+
59
+ raise msg
60
+ end
39
61
  end
@@ -2,4 +2,9 @@ VCR.configure do |config|
2
2
  config.cassette_library_dir = "spec/fixtures/vcr_cassettes"
3
3
  config.hook_into :webmock # or :fakeweb
4
4
  config.ignore_localhost = true
5
+ config.ignore_request do |request|
6
+ uri = URI.parse(request.uri)
7
+ uri.port == 9200 || # Elasticsearch requests
8
+ uri.host[/^172\.17|localhost|^10\./] || request.uri.to_s['geckodriver']
9
+ end
5
10
  end
@@ -1,3 +1,3 @@
1
1
  module PludoniRspec
2
- VERSION = "0.6.0.rc1"
2
+ VERSION = "0.8.0".freeze
3
3
  end
@@ -21,13 +21,16 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  # spec.add_dependency "vcr", ">= 3.0.0"
24
- spec.add_dependency "geckodriver-helper", ">= 0.23.0"
24
+ # spec.add_dependency "geckodriver-helper", ">= 0.23.0"
25
25
  spec.add_dependency 'capybara', ">= 3.13.2"
26
26
  spec.add_dependency 'fuubar', '>= 2.3.1'
27
27
  spec.add_dependency 'headless', ">= 2.3.1"
28
28
  spec.add_dependency 'pry-rails'
29
29
  spec.add_dependency 'puma'
30
+ # We don't need selenium, but rails system specs checks for availability
30
31
  spec.add_dependency 'selenium-webdriver', ">= 3.141.0"
32
+ spec.add_dependency "webdrivers", ">= 4.0.0"
33
+ # spec.add_dependency 'apparition'
31
34
  spec.add_dependency 'simplecov', ">= 0.16.1"
32
35
  spec.add_development_dependency "bundler", "~> 1.16"
33
36
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pludoni_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.rc1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Wienert
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: geckodriver-helper
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.23.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 0.23.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: capybara
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +94,20 @@ dependencies:
108
94
  - - ">="
109
95
  - !ruby/object:Gem::Version
110
96
  version: 3.141.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: webdrivers
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 4.0.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 4.0.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -171,6 +171,7 @@ files:
171
171
  - exe/nf
172
172
  - exe/of
173
173
  - lib/pludoni_rspec.rb
174
+ - lib/pludoni_rspec/apparition.rb
174
175
  - lib/pludoni_rspec/capybara.rb
175
176
  - lib/pludoni_rspec/devise.rb
176
177
  - lib/pludoni_rspec/freeze_time.rb
@@ -195,9 +196,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
196
  version: '0'
196
197
  required_rubygems_version: !ruby/object:Gem::Requirement
197
198
  requirements:
198
- - - ">"
199
+ - - ">="
199
200
  - !ruby/object:Gem::Version
200
- version: 1.3.1
201
+ version: '0'
201
202
  requirements: []
202
203
  rubyforge_project:
203
204
  rubygems_version: 2.7.6