ruby_raider 0.3.2 → 0.3.3

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: 3b40b177b2b89c4585ae988d6c1747e7eb58761d4817cac54a194ae532f80d77
4
- data.tar.gz: e758ab9ef9922f963b5f3da0763713c7c1cba1890d1d6974b687a6fa62a7eaed
3
+ metadata.gz: 07240bddaf0b3edae4d1d8202df31ac428c143941680f02fb51ea54a8b478d37
4
+ data.tar.gz: 887a4fc52c2c5899cc5999292a1edd3a357d1ecedbac9dea691edb06f980c6f5
5
5
  SHA512:
6
- metadata.gz: 574e301014b379f362a08aba90a5dda00391210c602d751a0f6e953c37f19c9c07364c9556944eae47b5ef15a58f2170b1530436fef6c520454895de72f8c253
7
- data.tar.gz: a2f4a9319b508daf6ffb39498eeeacb97b1544ddd44eb19e9832c2db69c121c8df7c784002de9e5847e9d6732db997b63996d98ea285eda8f4c10544f170f8dd
6
+ metadata.gz: d4cf0f65241e104cb96ee22ee79e61a24e049cf834aed0ea0098ea801f64cabe0a037d3846f50c5d60148b50e4a2621fa06329f1a697ea2ee8750b6656c78a49
7
+ data.tar.gz: ed34541a0df8cf638630d6db03617e1aff99a0fb7432378971ccd371242be91624c3940e94769acc9d5058194b27a946d40c15a955291ff2d5dee5de5d413e55
data/Rakefile CHANGED
@@ -12,4 +12,4 @@ desc 'Create a page'
12
12
  task :page, [:name] do |_t, args|
13
13
  RubyRaider.start
14
14
  RubyRaider.page(args.page)
15
- end
15
+ end
@@ -12,32 +12,30 @@ class AutomationGenerator < Generator
12
12
  end
13
13
 
14
14
  def generate_home_page
15
- if @_initializer.first.include?('appium_ios')
16
- template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
17
- end
15
+ return unless @_initializer.first.include?('appium_ios')
16
+
17
+ template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
18
18
  end
19
19
 
20
20
  def generate_header_component
21
- unless @_initializer.first.include?('appium_ios')
22
- template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
23
- end
21
+ return if @_initializer.first.include?('appium_ios')
22
+
23
+ template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
24
24
  end
25
25
 
26
26
  def generate_abstract_component
27
- unless @_initializer.first.include?('appium_ios')
28
- template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
29
- end
27
+ return if @_initializer.first.include?('appium_ios')
28
+
29
+ template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
30
30
  end
31
31
 
32
32
  def generate_confirmation_page
33
- if @_initializer.first.include?('appium_ios')
34
- template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
35
- end
33
+ return unless @_initializer.first.include?('appium_ios')
34
+
35
+ template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
36
36
  end
37
37
 
38
38
  def generate_appium_settings
39
- if @_initializer.first.include?('appium_ios')
40
- template('automation/appium_settings.tt', "#{name}/appium.txt")
41
- end
39
+ template('automation/appium_settings.tt', "#{name}/appium.txt") if @_initializer.first.include?('appium_ios')
42
40
  end
43
41
  end
@@ -27,4 +27,3 @@ class CommonGenerator < Generator
27
27
  empty_directory "#{name}/allure-results/screenshots"
28
28
  end
29
29
  end
30
-
@@ -15,4 +15,3 @@ class CucumberGenerator < Generator
15
15
  template('cucumber/env.tt', "#{name}/features/support/env.rb")
16
16
  end
17
17
  end
18
-
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'thor'
3
4
 
4
5
  class Generator < Thor::Group
@@ -9,7 +10,6 @@ class Generator < Thor::Group
9
10
  argument :name
10
11
 
11
12
  def self.source_root
12
- File.dirname(__FILE__) + '/templates'
13
+ "#{File.dirname(__FILE__)}/templates"
13
14
  end
14
15
  end
15
-
@@ -3,7 +3,6 @@
3
3
  require_relative 'generator'
4
4
 
5
5
  class HelpersGenerator < Generator
6
-
7
6
  def generate_raider_helper
8
7
  template('helpers/raider_helper.tt', "#{name}/helpers/raider.rb")
9
8
  end
@@ -13,26 +12,22 @@ class HelpersGenerator < Generator
13
12
  end
14
13
 
15
14
  def generate_browser_helper
16
- if @_initializer.first.include?('watir')
17
- template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
18
- end
15
+ template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb") if @_initializer.first.include?('watir')
19
16
  end
20
17
 
21
18
  def generate_spec_helper
22
- if @_initializer.first.include?('rspec')
23
- template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
24
- end
19
+ template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb") if @_initializer.first.include?('rspec')
25
20
  end
26
21
 
27
22
  def generate_selenium_helper
28
- if @_initializer.first.include?('selenium')
29
- template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
30
- end
23
+ return unless @_initializer.first.include?('selenium')
24
+
25
+ template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
31
26
  end
32
27
 
33
28
  def generate_driver_helper
34
- unless @_initializer.first.include?('watir')
35
- template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
36
- end
29
+ return if @_initializer.first.include?('watir')
30
+
31
+ template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
37
32
  end
38
33
  end
@@ -3,7 +3,6 @@
3
3
  require_relative 'generator'
4
4
 
5
5
  class RspecGenerator < Generator
6
-
7
6
  def generate_spec
8
7
  template('rspec/spec.tt', "#{name}/spec/login_page_spec.rb")
9
8
  end
@@ -12,4 +11,3 @@ class RspecGenerator < Generator
12
11
  template('rspec/base_spec.tt', "#{name}/spec/base_spec.rb")
13
12
  end
14
13
  end
15
-
data/lib/ruby_raider.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
  require 'yaml'
3
5
  require_relative 'generators/menu_generator'
@@ -5,17 +7,17 @@ require_relative '../lib/scaffolding/scaffolding'
5
7
  require_relative '../lib/utilities/utilities'
6
8
 
7
9
  class RubyRaider < Thor
8
- desc "new [PROJECT_NAME]", "Creates a new framework based on settings picked"
10
+ desc 'new [PROJECT_NAME]', 'Creates a new framework based on settings picked'
9
11
 
10
12
  def new(project_name)
11
13
  MenuGenerator.generate_choice_menu(project_name)
12
14
  end
13
15
 
14
- desc "page [PAGE_NAME]", "Creates a new page object"
16
+ desc 'page [PAGE_NAME]', 'Creates a new page object'
15
17
  option :path,
16
- :type => :string, :required => false, :desc => 'The path where your page will be created', :aliases => '-p'
18
+ type: :string, required: false, desc: 'The path where your page will be created', aliases: '-p'
17
19
  option :delete,
18
- :type => :boolean, :required => false, :desc => 'This will delete the selected page', :aliases => '-d'
20
+ type: :boolean, required: false, desc: 'This will delete the selected page', aliases: '-d'
19
21
 
20
22
  def page(name)
21
23
  path = options[:path].nil? ? load_config_path('page') : options[:path]
@@ -26,11 +28,11 @@ class RubyRaider < Thor
26
28
  end
27
29
  end
28
30
 
29
- desc "feature [FEATURE_NAME]", "Creates a new feature"
31
+ desc 'feature [FEATURE_NAME]', 'Creates a new feature'
30
32
  option :path,
31
- :type => :string, :required => false, :desc => 'The path where your feature will be created', :aliases => '-p'
33
+ type: :string, required: false, desc: 'The path where your feature will be created', aliases: '-p'
32
34
  option :delete,
33
- :type => :boolean, :required => false, :desc => 'This will delete the selected feature', :aliases => '-d'
35
+ type: :boolean, required: false, desc: 'This will delete the selected feature', aliases: '-d'
34
36
 
35
37
  def feature(name)
36
38
  path = options[:path].nil? ? load_config_path('feature') : options[:path]
@@ -41,11 +43,11 @@ class RubyRaider < Thor
41
43
  end
42
44
  end
43
45
 
44
- desc "spec [SPEC_NAME]", "Creates a new spec"
46
+ desc 'spec [SPEC_NAME]', 'Creates a new spec'
45
47
  option :path,
46
- :type => :string, :required => false, :desc => 'The path where your spec will be created', :aliases => '-p'
48
+ type: :string, required: false, desc: 'The path where your spec will be created', aliases: '-p'
47
49
  option :delete,
48
- :type => :boolean, :required => false, :desc => 'This will delete the selected spec', :aliases => '-d'
50
+ type: :boolean, required: false, desc: 'This will delete the selected spec', aliases: '-d'
49
51
 
50
52
  def spec(name)
51
53
  path = options[:path].nil? ? load_config_path('spec') : options[:path]
@@ -56,11 +58,11 @@ class RubyRaider < Thor
56
58
  end
57
59
  end
58
60
 
59
- desc "helper [HELPER_NAME]", "Creates a new helper"
61
+ desc 'helper [HELPER_NAME]', 'Creates a new helper'
60
62
  option :path,
61
- :type => :string, :required => false, :desc => 'The path where your helper will be created', :aliases => '-p'
63
+ type: :string, required: false, desc: 'The path where your helper will be created', aliases: '-p'
62
64
  option :delete,
63
- :type => :boolean, :required => false, :desc => 'This will delete the selected helper', :aliases => '-d'
65
+ type: :boolean, required: false, desc: 'This will delete the selected helper', aliases: '-d'
64
66
 
65
67
  def helper(name)
66
68
  path = options[:path].nil? ? load_config_path('helper') : options[:path]
@@ -71,36 +73,49 @@ class RubyRaider < Thor
71
73
  end
72
74
  end
73
75
 
74
- desc "path [PATH]", "Sets the default path for scaffolding"
76
+ desc 'path [PATH]', 'Sets the default path for scaffolding'
75
77
  option :feature,
76
- :type => :boolean, :required => false, :desc => 'The default path for your features', :aliases => '-f'
78
+ type: :boolean, required: false, desc: 'The default path for your features', aliases: '-f'
77
79
  option :helper,
78
- :type => :boolean, :required => false, :desc => 'The default path for your helpers', :aliases => '-h'
80
+ type: :boolean, required: false, desc: 'The default path for your helpers', aliases: '-h'
79
81
  option :spec,
80
- :type => :boolean, :required => false, :desc => 'The default path for your specs', :aliases => '-s'
82
+ type: :boolean, required: false, desc: 'The default path for your specs', aliases: '-s'
81
83
  def path(default_path)
82
84
  type = options.empty? ? 'page' : options.keys.first
83
85
  Utilities.new.send("#{type}_path=", default_path)
84
86
  end
85
87
 
86
- desc "url [URL]", "Sets the default url for a project"
88
+ desc 'url [URL]', 'Sets the default url for a project'
87
89
 
88
90
  def url(default_url)
89
91
  Utilities.new.url = default_url
90
92
  end
91
93
 
92
- desc "browser [BROWSER]", "Sets the default browser for a project"
94
+ desc 'browser [BROWSER]', 'Sets the default browser for a project'
93
95
 
94
96
  def browser(default_browser)
95
97
  Utilities.new.browser = default_browser
96
98
  end
97
99
 
98
- desc "raid", "It runs all the tests in a project"
100
+ desc 'raid', 'It runs all the tests in a project'
99
101
 
100
102
  def raid
101
103
  Utilities.new.run
102
104
  end
103
105
 
106
+ desc 'scaffold [SCAFFOLD_NAME]', 'It generates everything needed to start automating'
107
+ def scaffold(name)
108
+ if Pathname.new('spec').exist? && !Pathname.new('features').exist?
109
+ Scaffolding.new([name, load_config_path('spec')]).generate_spec
110
+ Scaffolding.new([name, load_config_path('page')]).generate_class
111
+ elsif Pathname.new('features').exist?
112
+ Scaffolding.new([name, load_config_path('feature')]).generate_feature
113
+ Scaffolding.new([name, load_config_path('page')]).generate_class
114
+ else
115
+ raise 'No features or spec folders where found. We are not sure which type of project you are running'
116
+ end
117
+ end
118
+
104
119
  no_commands do
105
120
  def load_config_path(type)
106
121
  YAML.load_file('config/config.yml')["#{type}_path"] unless YAML.load_file('config/config.yml').nil?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
 
3
5
  class Scaffolding < Thor::Group
@@ -7,7 +9,7 @@ class Scaffolding < Thor::Group
7
9
  argument :path, optional: true
8
10
 
9
11
  def self.source_root
10
- File.dirname(__FILE__) + '/templates'
12
+ "#{File.dirname(__FILE__)}/templates"
11
13
  end
12
14
 
13
15
  def generate_class
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  class Utilities
data/ruby_raider.gemspec CHANGED
@@ -2,13 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ruby_raider'
5
- s.version = '0.3.2'
5
+ s.version = '0.3.3'
6
6
  s.summary = 'A gem to make setup and start of UI automation projects easier'
7
7
  s.description = 'This gem has everything you need to start working with test automation'
8
8
  s.authors = ['Agustin Pequeno']
9
9
  s.email = 'agustin.pe94@gmail.com'
10
10
  s.homepage = 'https://github.com/RubyRaider/ruby_raider'
11
- s.files = %w[bin/* lib/* lib/**/*]
12
11
  s.license = 'MIT'
13
12
  s.required_ruby_version = '>= 3.0.0'
14
13
  s.files = `git ls-files -z`.split("\x0")
@@ -16,9 +15,9 @@ Gem::Specification.new do |s|
16
15
  s.executables << 'raider'
17
16
  s.add_development_dependency 'rake', '~> 13.0.6'
18
17
  s.add_development_dependency 'reek', '~> 6.1.0'
18
+ s.add_development_dependency 'rspec', '~> 3.11.0'
19
19
  s.add_development_dependency 'rubocop', '~> 1.27'
20
20
  s.add_development_dependency 'rubocop-rspec', '~> 2.9.0'
21
- s.add_development_dependency 'rspec', '~> 3.11.0'
22
21
 
23
22
  s.add_runtime_dependency 'highline', '~> 2.0.3'
24
23
  s.add_runtime_dependency 'thor', '~> 1.2.1'
@@ -155,7 +155,7 @@ describe RubyRaider do
155
155
 
156
156
  context 'updates the config file' do
157
157
  before(:all) do
158
- CommonGenerator.new(%w[rspec cucumber test]).invoke(:generate_config_file)
158
+ CommonGenerator.new(%w[rspec selenium test]).invoke(:generate_config_file)
159
159
  FileUtils.cp_lr('test/config', './')
160
160
  end
161
161
 
@@ -178,4 +178,36 @@ describe RubyRaider do
178
178
  end
179
179
  end
180
180
  end
181
+
182
+ context 'scaffolding' do
183
+ before(:all) do
184
+ CommonGenerator.new(%w[rspec selenium test]).invoke(:generate_config_file)
185
+ FileUtils.cp_lr('test/config', './')
186
+ end
187
+
188
+ context 'with a spec folder' do
189
+ it 'scaffolds for rspec' do
190
+ raider.new.invoke(:scaffold, nil, %W[#{name}])
191
+ expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file
192
+ expect(Pathname.new("spec/#{name}_spec.rb")).to be_file
193
+ end
194
+ end
195
+
196
+ context 'with a features folder' do
197
+ it 'scaffolds for cucumber' do
198
+ FileUtils.mkdir 'features'
199
+ raider.new.invoke(:scaffold, nil, %W[#{name}])
200
+ expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file
201
+ expect(Pathname.new("features/#{name}.feature")).to be_file
202
+ end
203
+ end
204
+
205
+ after(:all) do
206
+ folders = %w[test config page_objects features]
207
+ folders.each do |folder|
208
+ FileUtils.rm_rf(folder)
209
+ end
210
+ FileUtils.rm('spec/test_spec.rb') if Pathname.new('spec/test_spec.rb').exist?
211
+ end
212
+ end
181
213
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_raider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-04 00:00:00.000000000 Z
11
+ date: 2022-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -39,47 +39,47 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 6.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rubocop
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.27'
47
+ version: 3.11.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.27'
54
+ version: 3.11.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop-rspec
56
+ name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.9.0
61
+ version: '1.27'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.9.0
68
+ version: '1.27'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: rubocop-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.11.0
75
+ version: 2.9.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.11.0
82
+ version: 2.9.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: highline
85
85
  requirement: !ruby/object:Gem::Requirement