pludoni_rspec 0.1.0 → 0.2.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
  SHA1:
3
- metadata.gz: '08b09ba8a72676f98ff5b64eb550ed5dbb45146f'
4
- data.tar.gz: c9f319b0c614251f3d593fc76095a4a076b88746
3
+ metadata.gz: f064dd6d3cf6747fccd078d7be705168e3f2c7ed
4
+ data.tar.gz: b0126a8924628bd52a44426d47479f3999ff8006
5
5
  SHA512:
6
- metadata.gz: 91d7215e7a0a26f7774e88f574196f2a38265ce81f0399eaf9ac501c9dfdf62d4573dbbbf04170ea823593f8cfebce969be6c35e277acf916e7328e9cb3a182d
7
- data.tar.gz: 91d88bc5ba92d811c164bb22e6e2b71ae80ccfede4dd2785318178a39768d4a3042d18f7b97bdff4d135b99bb0e3bf220726fc78cfcb4ffeb2bab3eba1a0a193
6
+ metadata.gz: 6e0d2358c1af571b6090fdd51b314b6c22109f41bc9d9c05b6cec71c0e54a354e9b620309c08faefe2c5e569b3f1364298c0609bd05881a7b4479c3391688e4f
7
+ data.tar.gz: d7027fe06dfd6ec85454c45fc86df53c70a8b4a0311c61841fa05c5f54ed8060659ffcea7e00a4bb445915e47a237251fe6c718d9d000072f9383bc4dee472fb
data/Gemfile.lock ADDED
@@ -0,0 +1,75 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ pludoni_rspec (0.2.0)
5
+ capybara (>= 3.0.0)
6
+ chromedriver-helper (>= 1.2.0)
7
+ headless (>= 2.3.1)
8
+ pry-rails
9
+ puma
10
+ selenium-webdriver (>= 3.12.0)
11
+ simplecov (>= 0.16.1)
12
+
13
+ GEM
14
+ remote: https://rubygems.org/
15
+ specs:
16
+ addressable (2.5.2)
17
+ public_suffix (>= 2.0.2, < 4.0)
18
+ archive-zip (0.11.0)
19
+ io-like (~> 0.3.0)
20
+ capybara (3.2.1)
21
+ addressable
22
+ mini_mime (>= 0.1.3)
23
+ nokogiri (~> 1.8)
24
+ rack (>= 1.6.0)
25
+ rack-test (>= 0.6.3)
26
+ xpath (~> 3.1)
27
+ childprocess (0.9.0)
28
+ ffi (~> 1.0, >= 1.0.11)
29
+ chromedriver-helper (1.2.0)
30
+ archive-zip (~> 0.10)
31
+ nokogiri (~> 1.8)
32
+ coderay (1.1.2)
33
+ docile (1.3.1)
34
+ ffi (1.9.25)
35
+ headless (2.3.1)
36
+ io-like (0.3.0)
37
+ json (2.1.0)
38
+ method_source (0.9.0)
39
+ mini_mime (1.0.0)
40
+ mini_portile2 (2.3.0)
41
+ nokogiri (1.8.2)
42
+ mini_portile2 (~> 2.3.0)
43
+ pry (0.11.3)
44
+ coderay (~> 1.1.0)
45
+ method_source (~> 0.9.0)
46
+ pry-rails (0.3.6)
47
+ pry (>= 0.10.4)
48
+ public_suffix (3.0.2)
49
+ puma (3.11.4)
50
+ rack (2.0.5)
51
+ rack-test (1.0.0)
52
+ rack (>= 1.0, < 3)
53
+ rake (10.5.0)
54
+ rubyzip (1.2.1)
55
+ selenium-webdriver (3.12.0)
56
+ childprocess (~> 0.5)
57
+ rubyzip (~> 1.2)
58
+ simplecov (0.16.1)
59
+ docile (~> 1.1)
60
+ json (>= 1.8, < 3)
61
+ simplecov-html (~> 0.10.0)
62
+ simplecov-html (0.10.2)
63
+ xpath (3.1.0)
64
+ nokogiri (~> 1.8)
65
+
66
+ PLATFORMS
67
+ ruby
68
+
69
+ DEPENDENCIES
70
+ bundler (~> 1.16)
71
+ pludoni_rspec!
72
+ rake (~> 10.0)
73
+
74
+ BUNDLED WITH
75
+ 1.16.0
data/README.md CHANGED
@@ -37,3 +37,11 @@ What's done:
37
37
  * nf -> rspec --next-failure
38
38
  * of -> rspec --only-failures
39
39
 
40
+ * Shared Contexts that can be included on demand:
41
+ * include_context 'mails' - For working with ActionMailer::Base.deliveries
42
+ * mails_with(to: '') - Filter mails sent to a user
43
+ * last_mail == ActionMailer::Base.deliveries.last
44
+ * mails == ActionMailer::Base.deliveries
45
+ * extract_link_from(last_mail, link: 0) - gets you the link (without protocol + host) of the first link in the last mail with a html body
46
+ * include_context 'active_job_inline'
47
+ * all ActiveJobs will be run immediately in this group
data/lib/pludoni_rspec.rb CHANGED
@@ -2,6 +2,14 @@ require "pludoni_rspec/version"
2
2
 
3
3
  # rubocop:disable Rails/FilePath
4
4
  module PludoniRspec
5
+ class Config
6
+ class << self
7
+ attr_accessor :chrome_driver_version
8
+ attr_accessor :chrome_window_size
9
+ end
10
+ self.chrome_driver_version = "2.36"
11
+ self.chrome_window_size = '1600,1200'
12
+ end
5
13
  def self.run
6
14
  ENV["RAILS_ENV"] ||= 'test'
7
15
  coverage!
@@ -12,6 +20,7 @@ module PludoniRspec
12
20
  require 'pludoni_rspec/spec_helper'
13
21
  require 'pludoni_rspec/capybara'
14
22
  require 'pludoni_rspec/freeze_time'
23
+ require 'pludoni_rspec/shared_context'
15
24
  if defined?(VCR)
16
25
  require 'pludoni_rspec/vcr'
17
26
  end
@@ -4,46 +4,7 @@ require "selenium-webdriver"
4
4
  require "headless"
5
5
  require "selenium/webdriver"
6
6
  require "puma"
7
-
8
- module SystemTestChromeHelper
9
- def console_logs
10
- page.driver.browser.manage.logs.get(:browser)
11
- end
12
-
13
- def drop_in_dropzone(file_path)
14
- # Generate a fake input selector
15
- page.execute_script <<-JS
16
- fakeFileInput = window.$('<input/>').attr(
17
- {id: 'fakeFileInput', type:'file'}
18
- ).appendTo('body');
19
- JS
20
- # Attach the file to the fake input selector
21
- attach_file("fakeFileInput", file_path)
22
- # Add the file to a fileList array
23
- page.execute_script("var fileList = [fakeFileInput.get(0).files[0]]")
24
- # Trigger the fake drop event
25
- page.execute_script <<-JS
26
- var e = jQuery.Event('drop', { dataTransfer : { files : [fakeFileInput.get(0).files[0]] } });
27
- $('.uploader-action')[0].dropzone.listeners[0].events.drop(e);
28
- JS
29
- end
30
-
31
- def screenshot(path = '1')
32
- page.save_screenshot(Rails.root.join("public/screenshots/#{1.png}.png"))
33
- end
34
-
35
- # skip any confirm: "Really delete?"
36
- def skip_confirm(page)
37
- page.evaluate_script('window.confirm = function() { return true; }')
38
- end
39
-
40
- def in_browser(name)
41
- old_session = Capybara.session_name
42
- Capybara.session_name = name
43
- yield
44
- Capybara.session_name = old_session
45
- end
46
- end
7
+ require 'pludoni_rspec/system_test_chrome_helper'
47
8
 
48
9
  Capybara.register_driver :chrome do |app|
49
10
  Capybara::Selenium::Driver.new(app, browser: :chrome, timeout: 300)
@@ -52,7 +13,7 @@ end
52
13
  Capybara.register_driver :headless_chrome do |app|
53
14
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
54
15
  'chromeOptions' => {
55
- args: %w(headless disable-gpu window-size=1600,1200 no-sandbox)
16
+ args: ['headless', 'disable-gpu', "window-size=#{PludoniRspec::Config.chrome_window_size}", 'no-sandbox']
56
17
  }
57
18
  )
58
19
 
@@ -81,10 +42,12 @@ RSpec.configure do |c|
81
42
  end
82
43
  end
83
44
 
45
+ Chromedriver.set_version(PludoniRspec::Config.chrome_driver_version)
46
+
84
47
  Capybara.javascript_driver = :headless_chrome
85
48
 
86
49
  RSpec.configure do |config|
87
- config.include SystemTestChromeHelper, type: :feature
88
- config.include SystemTestChromeHelper, type: :system
50
+ config.include PludoniRspec::SystemTestChromeHelper, type: :feature
51
+ config.include PludoniRspec::SystemTestChromeHelper, type: :system
89
52
  end
90
53
  Capybara.default_max_wait_time = 60
@@ -0,0 +1,31 @@
1
+ if defined?(ActiveJob)
2
+ RSpec.shared_context "active_job_inline" do
3
+ include ActiveJob::TestHelper
4
+ around(:each) do |ex|
5
+ perform_enqueued_jobs do
6
+ ex.run
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ if defined?(ActionMailer::Base)
13
+ RSpec.shared_context "mails" do
14
+ def mails_with(to: nil)
15
+ ActionMailer::Base.deliveries.select { |i| i.to.to_s[to] }
16
+ end
17
+
18
+ def last_mail
19
+ ActionMailer::Base.deliveries.last
20
+ end
21
+
22
+ def mails
23
+ ActionMailer::Base.deliveries
24
+ end
25
+
26
+ def extract_link_from(mail, link: 0)
27
+ link = Nokogiri.parse(mail.html_part.decoded.to_s).search('a')[link]['href']
28
+ URI.parse(link).tap { |i| i.host = nil; i.scheme = nil }.to_s
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,40 @@
1
+ module PludoniRspec::SystemTestChromeHelper
2
+ def console_logs
3
+ page.driver.browser.manage.logs.get(:browser)
4
+ end
5
+
6
+ def drop_in_dropzone(file_path)
7
+ # Generate a fake input selector
8
+ page.execute_script <<-JS
9
+ fakeFileInput = window.$('<input/>').attr(
10
+ {id: 'fakeFileInput', type:'file'}
11
+ ).appendTo('body');
12
+ JS
13
+ # Attach the file to the fake input selector
14
+ attach_file("fakeFileInput", file_path)
15
+ # Add the file to a fileList array
16
+ page.execute_script("var fileList = [fakeFileInput.get(0).files[0]]")
17
+ # Trigger the fake drop event
18
+ page.execute_script <<-JS
19
+ var e = jQuery.Event('drop', { dataTransfer : { files : [fakeFileInput.get(0).files[0]] } });
20
+ $('.uploader-action')[0].dropzone.listeners[0].events.drop(e);
21
+ JS
22
+ end
23
+
24
+ def screenshot(path = '1')
25
+ page.save_screenshot(Rails.root.join("public/screenshots/#{1.png}.png"))
26
+ end
27
+
28
+ # skip any confirm: "Really delete?"
29
+ def skip_confirm(page)
30
+ page.evaluate_script('window.confirm = function() { return true; }')
31
+ end
32
+
33
+ def in_browser(name)
34
+ old_session = Capybara.session_name
35
+ Capybara.session_name = name
36
+ yield
37
+ Capybara.session_name = old_session
38
+ end
39
+ end
40
+
@@ -1,3 +1,3 @@
1
1
  module PludoniRspec
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pludoni_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Wienert
@@ -147,6 +147,7 @@ extra_rdoc_files: []
147
147
  files:
148
148
  - ".gitignore"
149
149
  - Gemfile
150
+ - Gemfile.lock
150
151
  - LICENSE.txt
151
152
  - README.md
152
153
  - Rakefile
@@ -157,7 +158,9 @@ files:
157
158
  - lib/pludoni_rspec.rb
158
159
  - lib/pludoni_rspec/capybara.rb
159
160
  - lib/pludoni_rspec/freeze_time.rb
161
+ - lib/pludoni_rspec/shared_context.rb
160
162
  - lib/pludoni_rspec/spec_helper.rb
163
+ - lib/pludoni_rspec/system_test_chrome_helper.rb
161
164
  - lib/pludoni_rspec/vcr.rb
162
165
  - lib/pludoni_rspec/version.rb
163
166
  - pludoni_rspec.gemspec