kinchan 0.2.0 → 0.3.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: 93bc12b281b802a4d65f633687ea807eaa65fbb9002f1c4a7600a98ce39549e2
4
- data.tar.gz: 6f9ff2796e4462c4f6d918dd602a0a348fde0783bcb2395a7832bb787df9b976
3
+ metadata.gz: 626e1d1315fb8f5ef0c3839578a2e504c15088d57c5f315d49df29db74f99ce0
4
+ data.tar.gz: 8fccb6524b8198571bc42bc4d1f2dedb7d4fe12d458cd35fe82df81aab73fdef
5
5
  SHA512:
6
- metadata.gz: 6951b48f5e47c2934295b49c7126d58b06f30970c3e59655f5b44ca5be7d916a5a2d3153994d9b874b3ae9a134e4c4cc2032f8ca057a1f614179b54cc181cbbf
7
- data.tar.gz: ea72cab859176ca0c0d5cc16aa9c890c43cd33e68e4c36075bd7030ccf3d12f9345c22f549e48ba1ba59a5331141574f6416951b32a5908b82b5225fc4f6f01b
6
+ metadata.gz: 4f831b30b71aa4bb11cfeb21ab7eb1e323f60ecc14b610f6c069e7941ff86bf25f0e3d18d8a8b2abf6c255eccd2d0afa6c31db2a90f7435c35eea0ad17fa003f
7
+ data.tar.gz: ed5803e8ab161e0e964835ab5959094098b34b1e47df86412d5a38e1ac03fee3a866c6f6e9eca119c15dd05cccf34736a3fb2553a1fe7f50e0496d4eca7f75f7
@@ -1,34 +1,88 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kinchan (0.1.0)
4
+ kinchan (0.3.0)
5
5
  require_all (~> 3.0.0)
6
6
  selenium-webdriver (~> 3.142.6)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
+ ast (2.4.1)
12
+ backport (1.1.2)
13
+ benchmark (0.1.0)
11
14
  childprocess (3.0.0)
12
- diff-lcs (1.3)
15
+ diff-lcs (1.4.4)
16
+ e2mmap (0.1.0)
17
+ jaro_winkler (1.5.4)
18
+ kwalify (0.7.2)
19
+ maruku (0.7.3)
20
+ mini_portile2 (2.4.0)
21
+ nokogiri (1.10.10)
22
+ mini_portile2 (~> 2.4.0)
23
+ parallel (1.19.2)
24
+ parser (2.7.2.0)
25
+ ast (~> 2.4.1)
26
+ psych (3.1.0)
27
+ rainbow (3.0.0)
13
28
  rake (13.0.1)
29
+ reek (6.0.1)
30
+ kwalify (~> 0.7.0)
31
+ parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
32
+ psych (~> 3.1.0)
33
+ rainbow (>= 2.0, < 4.0)
34
+ regexp_parser (1.8.1)
14
35
  require_all (3.0.0)
36
+ reverse_markdown (2.0.0)
37
+ nokogiri
38
+ rexml (3.2.4)
15
39
  rspec (3.9.0)
16
40
  rspec-core (~> 3.9.0)
17
41
  rspec-expectations (~> 3.9.0)
18
42
  rspec-mocks (~> 3.9.0)
19
- rspec-core (3.9.1)
20
- rspec-support (~> 3.9.1)
21
- rspec-expectations (3.9.0)
43
+ rspec-core (3.9.3)
44
+ rspec-support (~> 3.9.3)
45
+ rspec-expectations (3.9.2)
22
46
  diff-lcs (>= 1.2.0, < 2.0)
23
47
  rspec-support (~> 3.9.0)
24
48
  rspec-mocks (3.9.1)
25
49
  diff-lcs (>= 1.2.0, < 2.0)
26
50
  rspec-support (~> 3.9.0)
27
- rspec-support (3.9.2)
28
- rubyzip (2.0.0)
51
+ rspec-support (3.9.3)
52
+ rubocop (0.93.0)
53
+ parallel (~> 1.10)
54
+ parser (>= 2.7.1.5)
55
+ rainbow (>= 2.2.2, < 4.0)
56
+ regexp_parser (>= 1.8)
57
+ rexml
58
+ rubocop-ast (>= 0.6.0)
59
+ ruby-progressbar (~> 1.7)
60
+ unicode-display_width (>= 1.4.0, < 2.0)
61
+ rubocop-ast (0.7.1)
62
+ parser (>= 2.7.1.5)
63
+ ruby-progressbar (1.10.1)
64
+ rubyzip (2.3.0)
29
65
  selenium-webdriver (3.142.7)
30
66
  childprocess (>= 0.5, < 4.0)
31
67
  rubyzip (>= 1.2.2)
68
+ solargraph (0.39.17)
69
+ backport (~> 1.1)
70
+ benchmark
71
+ bundler (>= 1.17.2)
72
+ e2mmap
73
+ jaro_winkler (~> 1.5)
74
+ maruku (~> 0.7, >= 0.7.3)
75
+ nokogiri (~> 1.9, >= 1.9.1)
76
+ parser (~> 2.3)
77
+ reverse_markdown (>= 1.0.5, < 3)
78
+ rubocop (~> 0.52)
79
+ thor (~> 1.0)
80
+ tilt (~> 2.0)
81
+ yard (~> 0.9, >= 0.9.24)
82
+ thor (1.0.1)
83
+ tilt (2.0.10)
84
+ unicode-display_width (1.7.0)
85
+ yard (0.9.25)
32
86
 
33
87
  PLATFORMS
34
88
  ruby
@@ -36,7 +90,10 @@ PLATFORMS
36
90
  DEPENDENCIES
37
91
  kinchan!
38
92
  rake (~> 13.0)
93
+ reek (~> 6.0)
39
94
  rspec (~> 3.9.0)
95
+ rubocop (~> 0.9)
96
+ solargraph
40
97
 
41
98
  BUNDLED WITH
42
- 2.1.2
99
+ 2.1.4
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # [Kinchan](https://itazuranakiss.fandom.com/wiki/Kinnosuke_Ikezawa)
2
2
  ## Composable browser automation with Ruby.
3
+ [![Gem Version](https://badge.fury.io/rb/kinchan.svg)](https://badge.fury.io/rb/kinchan)
3
4
 
4
5
  ### Requirements
5
6
 
@@ -29,4 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency 'require_all', ['~> 3.0.0']
30
30
 
31
31
  spec.add_development_dependency 'rspec', ['~> 3.9.0']
32
+ spec.add_development_dependency 'reek', ['~> 6.0']
33
+ spec.add_development_dependency 'rubocop', ['~> 0.9']
34
+ spec.add_development_dependency 'solargraph'
32
35
  end
@@ -4,6 +4,7 @@ require 'kinchan/version'
4
4
  require 'selenium-webdriver'
5
5
  require 'require_all'
6
6
 
7
+ # Top-level module contains all the juicy bits for the gem
7
8
  module Kinchan
8
9
  @browser = :chrome
9
10
  @browser_options = nil
@@ -12,18 +13,24 @@ module Kinchan
12
13
  @browser
13
14
  end
14
15
 
15
- def self.browser= b
16
- @browser = b
16
+ def self.browser=(browser)
17
+ @browser = browser
17
18
  end
18
19
 
19
20
  def self.browser_options
20
21
  @browser_options
21
22
  end
22
23
 
23
- def self.browser_options= bo
24
- @browser_options = bo
24
+ def self.browser_options=(browser_options)
25
+ @browser_options = browser_options
25
26
  end
26
27
 
28
+ def self.restore_defaults
29
+ @browser = :chrome
30
+ @browser_options = nil
31
+ end
32
+
33
+ # A single unit of automation in Kinchan
27
34
  class Task
28
35
  singleton_class.send(:attr_accessor, :browser)
29
36
  singleton_class.send(:attr_accessor, :browser_options)
@@ -35,7 +42,7 @@ module Kinchan
35
42
  @after_tasks = []
36
43
  @options = options
37
44
 
38
- Task.start_browser
45
+ Task.start_browser unless defined?(@@browser_webdriver)
39
46
  end
40
47
 
41
48
  def self.inherited(subclass)
@@ -47,33 +54,47 @@ module Kinchan
47
54
  end
48
55
 
49
56
  def self.start_browser
50
- if Kinchan.browser_options.nil?
51
- @@browser_webdriver = Selenium::WebDriver.for Kinchan.browser
52
- else
53
- @@browser_webdriver = Selenium::WebDriver.for(Kinchan.browser, options: Kinchan.browser_options)
54
- end
57
+ browser = Kinchan.browser
58
+ browser_options = Kinchan.browser_options
59
+
60
+ @@browser_webdriver = if browser_options.nil?
61
+ Selenium::WebDriver.for browser
62
+ else
63
+ Selenium::WebDriver.for(browser, options: browser_options)
64
+ end
55
65
  end
56
66
 
57
67
  def self.restart_browser
58
- unless @@browser_webdriver.nil?
59
- @@browser_webdriver.close
60
- @@browser_webdriver = Selenium::WebDriver.for Kinchan.browser
61
- end
68
+ return if @@browser_webdriver.nil?
69
+
70
+ @@browser_webdriver.close
71
+ @@browser_webdriver = Selenium::WebDriver.for Kinchan.browser
62
72
  end
63
73
 
64
- def execute(browser); end
74
+ def execute(_browser); end
65
75
 
66
76
  def run
67
- @before_tasks.each do |task_hash|
68
- task = Task.find_task(task_hash[:task])
69
- task.new(**task_hash[:options]).public_send('run') unless task.nil?
70
- end
71
-
77
+ run_tasks(@before_tasks)
72
78
  execute(@@browser_webdriver)
79
+ run_tasks(@after_tasks)
80
+ end
81
+
82
+ private
83
+
84
+ def get_task(task_hash)
85
+ task = Task.find_task(task_hash[:task])
86
+ options = task_hash[:options]
87
+
88
+ if options.nil?
89
+ task.new
90
+ else
91
+ task.new(**options)
92
+ end
93
+ end
73
94
 
74
- @after_tasks.each do |task_hash|
75
- task = Task.find_task(task_hash[:task])
76
- task.new(**task_hash[:options]).public_send('run') unless task.nil?
95
+ def run_tasks(tasks)
96
+ tasks.each do |task_hash|
97
+ get_task(task_hash)&.public_send('run')
77
98
  end
78
99
  end
79
100
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kinchan
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kinchan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle McGough
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-11 00:00:00.000000000 Z
11
+ date: 2020-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -52,6 +52,48 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.9.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: reek
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '6.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '6.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.9'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.9'
83
+ - !ruby/object:Gem::Dependency
84
+ name: solargraph
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
55
97
  description: Composable browser automation with Ruby. Create, compose, and run tasks
56
98
  that automate the browser with Selenium.
57
99
  email: