ruby_raider 0.3.2 → 0.3.3

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