pludoni_rspec 0.6.0.rc1 → 0.8.0

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