ruby_raider 0.3.1 → 0.3.4

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: 151af21fd6a33598fc5fef983b3d8277817e438445f8576d6f6135ce13d7cc4b
4
- data.tar.gz: 0665e396c6246632ab922e62fac8dd3ef66701815b95bb8cdc03fa215b7a57b6
3
+ metadata.gz: 8241d616546918759f985468cc03ff74220a13e2f14215b5a95d8338ae25ce59
4
+ data.tar.gz: bfd3346375daade458db2d5ff5a0071abe6ddeb6ba48e664a3aef2cccc2258b6
5
5
  SHA512:
6
- metadata.gz: 613640d0d946f4337bec680bdac7c86e4ae6f00534b7286d6e35a59788197b4f37dd110a4ee3990247e8b2dffee2f7eafc6d92de1b9a6f3216ae88343cd0cc43
7
- data.tar.gz: 3391b2d3debb45de3d923954f64d8c866fb813f276312128c81a4fde78964a56084142ca6266399277b9c4280296da36f495ff3c9e754a4ef90fb16659fd3736
6
+ metadata.gz: 3a16cdbf3e0dd35cdfa3b68c5a9833083510484673f34fad911adc57be61939a8131ed75119d0e4ba95c4240da4cb997f7d09070bd53212248ebd1224919a563
7
+ data.tar.gz: 4a575ffc9c5ef8c21a4bf53730e36aa3c0575dd4094dc17992302c369b9ccab307368650cf71ea33ff00d1ca23e7892ec57810df1bec18fba66e96ab468e696a
data/README.md CHANGED
@@ -25,33 +25,39 @@ This works in all the platforms (Tested on Mac OS, Linux and Windows)
25
25
 
26
26
  **Ruby raider provides the following list of commands**
27
27
  ```
28
- raider browser [BROWSER] # Sets the default browser for a project
29
-
30
- raider feature [FEATURE_NAME] # Creates a new feature
28
+ Commands:
29
+ raider browser [BROWSER] # Sets the default browser for a project
30
+
31
+ raider feature [FEATURE_NAME] # Creates a new feature
32
+
33
+ raider help [COMMAND] # Describe available commands or one specific command
34
+
35
+ raider helper [HELPER_NAME] # Creates a new helper
31
36
 
32
- raider help [COMMAND] # Describe available commands or one specific command
37
+ raider new [PROJECT_NAME] # Creates a new framework based on settings picked
33
38
 
34
- raider new [PROJECT_NAME] # Creates a new framework based on settings picked
39
+ raider page [PAGE_NAME] # Creates a new page object
35
40
 
36
- raider page [PAGE_NAME] # Creates a new page object
41
+ raider path [PATH] # Sets the default path for scaffolding
37
42
 
38
- raider path [PATH] # Sets the default path for scaffolding
43
+ raider raid # It runs all the tests in a project
39
44
 
40
- raider raid # It runs all the tests in a project
45
+ raider scaffold [SCAFFOLD_NAME] # It generates everything needed to start automating
41
46
 
42
- raider spec [SPEC_NAME] # Creates a new spec
47
+ raider spec [SPEC_NAME] # Creates a new spec
43
48
 
44
- raider url [URL] # Sets the default url for a project
49
+ raider url [URL] # Sets the default url for a project
45
50
  ```
46
51
 
47
- It's possible to add the option --path or -p if you want to specify where to create your features, pages and specs.
48
- And also it's possible to delete them using --delete or -d.
52
+ It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and
53
+ specs.
49
54
 
50
- If you want to set the default path for the creation of your features, specs or pages you can do:
55
+ If you want to set the default path for the creation of your features, helpers and specs:
51
56
 
52
57
  ```
53
58
  raider path [PATH_NAME] --feature or -f
54
59
  raider path [PATH_NAME] --spec or -s
60
+ raider path [PATH_NAME] --helper or -h
55
61
  ```
56
62
 
57
63
  If you don't specify an option path will assume you want to change the default path for pages
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
-
@@ -1,4 +1,5 @@
1
1
  # Ruby Raider
2
+
2
3
  This is a gem to make setup and start of UI automation projects easier
3
4
  You can find more information and updates on releases in : https://ruby-raider.com/
4
5
 
@@ -24,33 +25,39 @@ This works in all the platforms (Tested on Mac OS, Linux and Windows)
24
25
 
25
26
  **Ruby raider provides the following list of commands**
26
27
  ```
27
- raider browser [BROWSER] # Sets the default browser for a project
28
+ Commands:
29
+ raider browser [BROWSER] # Sets the default browser for a project
30
+
31
+ raider feature [FEATURE_NAME] # Creates a new feature
32
+
33
+ raider help [COMMAND] # Describe available commands or one specific command
28
34
 
29
- raider feature [FEATURE_NAME] # Creates a new feature
35
+ raider helper [HELPER_NAME] # Creates a new helper
30
36
 
31
- raider help [COMMAND] # Describe available commands or one specific command
37
+ raider new [PROJECT_NAME] # Creates a new framework based on settings picked
32
38
 
33
- raider new [PROJECT_NAME] # Creates a new framework based on settings picked
39
+ raider page [PAGE_NAME] # Creates a new page object
34
40
 
35
- raider page [PAGE_NAME] # Creates a new page object
41
+ raider path [PATH] # Sets the default path for scaffolding
36
42
 
37
- raider path [PATH] # Sets the default path for scaffolding
43
+ raider raid # It runs all the tests in a project
38
44
 
39
- raider raid # It runs all the tests in a project
45
+ raider scaffold [SCAFFOLD_NAME] # It generates everything needed to start automating
40
46
 
41
- raider spec [SPEC_NAME] # Creates a new spec
47
+ raider spec [SPEC_NAME] # Creates a new spec
42
48
 
43
- raider url [URL] # Sets the default url for a project
49
+ raider url [URL] # Sets the default url for a project
44
50
  ```
45
51
 
46
- It's possible to add the option --path or -p if you want to specify where to create your features, pages and specs.
47
- And also it's possible to delete them using --delete or -d.
52
+ It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and
53
+ specs.
48
54
 
49
- If you want to set the default path for the creation of your features, specs or pages you can do:
55
+ If you want to set the default path for the creation of your features, helpers and specs:
50
56
 
51
57
  ```
52
58
  raider path [PATH_NAME] --feature or -f
53
59
  raider path [PATH_NAME] --spec or -s
60
+ raider path [PATH_NAME] --helper or -h
54
61
  ```
55
62
 
56
63
  If you don't specify an option path will assume you want to change the default path for pages
@@ -1,11 +1,13 @@
1
1
  require_relative '../../helpers/driver_helper'
2
2
 
3
+ include Raider::DriverHelper
4
+
3
5
  Before do
4
- @driver = Raider::DriverHelper.new_driver
6
+ new_driver
5
7
  end
6
8
 
7
9
  After do |scenario|
8
- @driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
10
+ driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
9
11
  Raider::AllureHelper.add_screenshot(scenario.name)
10
- @driver.quit
11
- end
12
+ driver.quit
13
+ end
@@ -1,12 +1,13 @@
1
1
  require_relative '../../helpers/browser_helper'
2
2
 
3
+ include Raider::BrowserHelper
4
+
3
5
  Before do
4
- Raider::AllureHelper.configure
5
- @browser = Raider::BrowserHelper.new_browser
6
+ new_browser
6
7
  end
7
8
 
8
9
  After do |scenario|
9
- @browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
10
+ browser.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
10
11
  Raider::AllureHelper.add_screenshot(scenario.name)
11
- @browser.quit
12
- end
12
+ browser.quit
13
+ end
@@ -7,13 +7,13 @@ require 'webdrivers'
7
7
 
8
8
  module Raider
9
9
  module BrowserHelper
10
- class << self
11
10
  attr_reader :browser
12
11
 
13
- def new_browser(options = {})
14
- browser = YAML.load_file('config/config.yml')['browser'].to_sym
15
- @browser = Watir::Browser.new(browser, options: options)
12
+ def new_browser(opts = {})
13
+ @config = YAML.load_file('config/config.yml')
14
+ browser = @config['browser'].to_sym
15
+ opts = opts.nil? ? @config['browser_options'] : opts
16
+ @browser = Watir::Browser.new(browser, options: opts)
16
17
  end
17
- end
18
18
  end
19
19
  end
@@ -9,10 +9,8 @@ require_relative 'driver_helper'
9
9
 
10
10
  module Raider
11
11
  module DriverHelper
12
- class << self
13
12
  attr_reader :driver
14
13
 
15
14
  <%= ERB.new(File.read(File.expand_path('./partials/new_driver.tt', __dir__))).result(binding).strip! %>
16
- end
17
15
  end
18
16
  end
@@ -1,6 +1,8 @@
1
1
  <% if automation == 'selenium' %>
2
2
  def new_driver(caps = {})
3
- browser = YAML.load_file('config/config.yml')['browser'].to_sym
3
+ @config = YAML.load_file('config/config.yml')
4
+ browser = @config['browser'].to_sym
5
+ caps = caps.nil? ? @config['browser_options'] : caps
4
6
  @driver = Selenium::WebDriver.for(browser, desired_capabilities: caps)
5
7
  end
6
8
  <% else %>
@@ -1,8 +1,8 @@
1
1
  <% case automation
2
2
  when 'selenium' %>
3
- DriverHelper.driver.quit
3
+ driver.quit
4
4
  <% when 'watir' %>
5
- BrowserHelper.browser.quit
5
+ browser.quit
6
6
  <% else %>
7
- DriverHelper.driver.quit_driver
7
+ driver.quit_driver
8
8
  <% end %>
@@ -1,8 +1,8 @@
1
1
  <% case automation
2
2
  when 'selenium' %>
3
- @driver.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
3
+ driver.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
4
4
  <% when 'watir' %>
5
- @browser.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
5
+ browser.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
6
6
  <% else %>
7
- @driver.screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
7
+ driver.screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
8
8
  <% end %>
@@ -1,8 +1,8 @@
1
1
  <% if automation == 'watir' %>
2
- @browser = BrowserHelper.new_browser
2
+ new_browser
3
3
  <% else %>
4
- @driver = DriverHelper.new_driver
4
+ new_driver
5
5
  <% end %>
6
6
  <% if %w[appium_ios].include? automation %>
7
- @driver.start_driver
7
+ start_driver
8
8
  <% end %>
@@ -14,6 +14,7 @@ module Raider
14
14
  AllureHelper.configure
15
15
  RSpec.configure do |config|
16
16
  config.formatter = AllureHelper.formatter
17
+ <% if automation == 'watir' %>config.include(BrowserHelper)<% else %>config.include(DriverHelper)<% end %>
17
18
  config.before(:each) do
18
19
  <%= ERB.new(File.read(File.expand_path('./partials/select_driver.tt', __dir__))).result(binding).strip! %>
19
20
  end
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,18 @@ 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
15
+ map '-n' => "new"
13
16
 
14
- desc "page [PAGE_NAME]", "Creates a new page object"
17
+ desc 'page [PAGE_NAME]', 'Creates a new page object'
15
18
  option :path,
16
- :type => :string, :required => false, :desc => 'The path where your page will be created', :aliases => '-p'
19
+ type: :string, required: false, desc: 'The path where your page will be created', aliases: '-p'
17
20
  option :delete,
18
- :type => :boolean, :required => false, :desc => 'This will delete the selected page', :aliases => '-d'
21
+ type: :boolean, required: false, desc: 'This will delete the selected page', aliases: '-d'
19
22
 
20
23
  def page(name)
21
24
  path = options[:path].nil? ? load_config_path('page') : options[:path]
@@ -25,12 +28,13 @@ class RubyRaider < Thor
25
28
  Scaffolding.new([name, path]).generate_class
26
29
  end
27
30
  end
31
+ map '-pg' => "page"
28
32
 
29
- desc "feature [FEATURE_NAME]", "Creates a new feature"
33
+ desc 'feature [FEATURE_NAME]', 'Creates a new feature'
30
34
  option :path,
31
- :type => :string, :required => false, :desc => 'The path where your feature will be created', :aliases => '-p'
35
+ type: :string, required: false, desc: 'The path where your feature will be created', aliases: '-p'
32
36
  option :delete,
33
- :type => :boolean, :required => false, :desc => 'This will delete the selected feature', :aliases => '-d'
37
+ type: :boolean, required: false, desc: 'This will delete the selected feature', aliases: '-d'
34
38
 
35
39
  def feature(name)
36
40
  path = options[:path].nil? ? load_config_path('feature') : options[:path]
@@ -40,12 +44,13 @@ class RubyRaider < Thor
40
44
  Scaffolding.new([name, path]).generate_feature
41
45
  end
42
46
  end
47
+ map '-f' => "feature"
43
48
 
44
- desc "spec [SPEC_NAME]", "Creates a new spec"
49
+ desc 'spec [SPEC_NAME]', 'Creates a new spec'
45
50
  option :path,
46
- :type => :string, :required => false, :desc => 'The path where your spec will be created', :aliases => '-p'
51
+ type: :string, required: false, desc: 'The path where your spec will be created', aliases: '-p'
47
52
  option :delete,
48
- :type => :boolean, :required => false, :desc => 'This will delete the selected spec', :aliases => '-d'
53
+ type: :boolean, required: false, desc: 'This will delete the selected spec', aliases: '-d'
49
54
 
50
55
  def spec(name)
51
56
  path = options[:path].nil? ? load_config_path('spec') : options[:path]
@@ -55,34 +60,89 @@ class RubyRaider < Thor
55
60
  Scaffolding.new([name, path]).generate_spec
56
61
  end
57
62
  end
63
+ map '-s' => "spec"
64
+
65
+ desc 'helper [HELPER_NAME]', 'Creates a new helper'
66
+ option :path,
67
+ type: :string, required: false, desc: 'The path where your helper will be created', aliases: '-p'
68
+ option :delete,
69
+ type: :boolean, required: false, desc: 'This will delete the selected helper', aliases: '-d'
58
70
 
59
- desc "path [PATH]", "Sets the default path for scaffolding"
71
+ def helper(name)
72
+ path = options[:path].nil? ? load_config_path('helper') : options[:path]
73
+ if options[:delete]
74
+ Scaffolding.new([name, path]).delete_helper
75
+ else
76
+ Scaffolding.new([name, path]).generate_helper
77
+ end
78
+ end
79
+ map '-h' => "helper"
80
+
81
+ desc 'path [PATH]', 'Sets the default path for scaffolding'
60
82
  option :feature,
61
- :type => :boolean, :required => false, :desc => 'The default path for your features', :aliases => '-f'
83
+ type: :boolean, required: false, desc: 'The default path for your features', aliases: '-f'
84
+ option :helper,
85
+ type: :boolean, required: false, desc: 'The default path for your helpers', aliases: '-h'
62
86
  option :spec,
63
- :type => :boolean, :required => false, :desc => 'The default path for your specs', :aliases => '-s'
87
+ type: :boolean, required: false, desc: 'The default path for your specs', aliases: '-s'
64
88
  def path(default_path)
65
89
  type = options.empty? ? 'page' : options.keys.first
66
90
  Utilities.new.send("#{type}_path=", default_path)
67
91
  end
92
+ map '-p' => "path"
68
93
 
69
- desc "url [URL]", "Sets the default url for a project"
94
+ desc 'url [URL]', 'Sets the default url for a project'
70
95
 
71
96
  def url(default_url)
72
97
  Utilities.new.url = default_url
73
98
  end
99
+ map '-u' => "url"
74
100
 
75
- desc "browser [BROWSER]", "Sets the default browser for a project"
76
-
77
- def browser(default_browser)
78
- Utilities.new.browser = default_browser
101
+ desc 'browser [BROWSER]', 'Sets the default browser for a project'
102
+ option :opts,
103
+ type: :hash, required: false, desc: 'The options you want your browser to run with', aliases: '-o'
104
+ option :delete,
105
+ type: :boolean, required: false, desc: 'This will delete your browser options', aliases: '-d'
106
+ def browser(default_browser = nil)
107
+ Utilities.new.browser = default_browser unless default_browser.nil?
108
+ Utilities.new.browser_options = options[:opts] unless options[:opts].nil?
109
+ Utilities.new.delete_browser_options if options[:delete]
79
110
  end
111
+ map '-b' => "browser"
80
112
 
81
- desc "raid", "It runs all the tests in a project"
82
-
113
+ desc 'raid', 'It runs all the tests in a project'
83
114
  def raid
84
115
  Utilities.new.run
85
116
  end
117
+ map '-r' => "raid"
118
+
119
+ desc 'scaffold [SCAFFOLD_NAME]', 'It generates everything needed to start automating'
120
+ def scaffold(name)
121
+ if Pathname.new('spec').exist? && !Pathname.new('features').exist?
122
+ Scaffolding.new([name, load_config_path('spec')]).generate_spec
123
+ Scaffolding.new([name, load_config_path('page')]).generate_class
124
+ elsif Pathname.new('features').exist?
125
+ Scaffolding.new([name, load_config_path('feature')]).generate_feature
126
+ Scaffolding.new([name, load_config_path('page')]).generate_class
127
+ else
128
+ raise 'No features or spec folders where found. We are not sure which type of project you are running'
129
+ end
130
+ end
131
+ map '-sf' => "scaffold"
132
+
133
+ desc 'config', 'Creates a new config file'
134
+ option :path,
135
+ type: :string, required: false, desc: 'The path where your config file will be created', aliases: '-p'
136
+ option :delete,
137
+ type: :boolean, required: false, desc: 'This will delete the selected config file', aliases: '-d'
138
+ def config
139
+ if options[:delete]
140
+ Scaffolding.new.delete_config
141
+ else
142
+ Scaffolding.new.generate_config
143
+ end
144
+ end
145
+ map '-c' => "config"
86
146
 
87
147
  no_commands do
88
148
  def load_config_path(type)
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
 
3
5
  class Scaffolding < Thor::Group
4
6
  include Thor::Actions
5
7
 
6
- argument :name
8
+ argument :name, optional: true
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
@@ -22,6 +24,15 @@ class Scaffolding < Thor::Group
22
24
  template('spec.tt', default_path("spec/#{name}_spec.rb", '_spec.rb'))
23
25
  end
24
26
 
27
+ def generate_helper
28
+ template('helper.tt', default_path("helpers/#{name}_helper.rb", '_helper.rb'))
29
+ end
30
+
31
+ def generate_config
32
+ template('../../generators/templates/common/config.tt',
33
+ default_path("config/config.yml", '.yml'))
34
+ end
35
+
25
36
  def delete_class
26
37
  remove_file(default_path("page_objects/pages/#{name}_page.rb", '_page.rb'))
27
38
  end
@@ -34,6 +45,14 @@ class Scaffolding < Thor::Group
34
45
  remove_file(default_path("spec/#{name}_spec.rb", '_spec.rb'))
35
46
  end
36
47
 
48
+ def delete_helper
49
+ remove_file(default_path("helpers/#{name}_helper.rb", '_helper.rb'))
50
+ end
51
+
52
+ def delete_config
53
+ remove_file(default_path("config/config.yml", '.yml'))
54
+ end
55
+
37
56
  def default_path(standard_path, file_type)
38
57
  path.nil? ? standard_path : "#{path}/#{name}#{file_type}"
39
58
  end
@@ -0,0 +1,3 @@
1
+ module <%= name.split('_').map {|word| word.capitalize }.join + 'Helper' %>
2
+ # Add your helper code here
3
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  class Utilities
@@ -26,11 +28,26 @@ class Utilities
26
28
  overwrite_yaml
27
29
  end
28
30
 
31
+ def helper_path=(path)
32
+ @config['helper_path'] = path
33
+ overwrite_yaml
34
+ end
35
+
29
36
  def url=(url)
30
37
  @config['url'] = url
31
38
  overwrite_yaml
32
39
  end
33
40
 
41
+ def browser_options=(opts)
42
+ @config['browser_options'] = opts
43
+ overwrite_yaml
44
+ end
45
+
46
+ def delete_browser_options
47
+ @config.delete('browser_options')
48
+ overwrite_yaml
49
+ end
50
+
34
51
  def run
35
52
  if File.directory? 'spec'
36
53
  system 'rspec spec/'
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.1'
5
+ s.version = '0.3.4'
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'
@@ -29,6 +29,11 @@ describe RubyRaider do
29
29
  expect(Pathname.new("spec/#{name}_spec.rb")).to be_file
30
30
  end
31
31
 
32
+ it 'creates a helper' do
33
+ raider.new.invoke(:helper, nil, %W[#{name}])
34
+ expect(Pathname.new("helpers/#{name}_helper.rb")).to be_file
35
+ end
36
+
32
37
  it 'deletes a page' do
33
38
  raider.new.invoke(:page, nil, %W[#{name}])
34
39
  raider.new.invoke(:page, nil, %W[#{name} --delete])
@@ -47,8 +52,14 @@ describe RubyRaider do
47
52
  expect(Pathname.new("spec/#{name}_spec.rb")).to_not be_file
48
53
  end
49
54
 
55
+ it 'deletes a helper' do
56
+ raider.new.invoke(:helper, nil, %W[#{name}])
57
+ raider.new.invoke(:helper, nil, %W[#{name} --delete])
58
+ expect(Pathname.new("helpers/#{name}_helper.rb")).to_not be_file
59
+ end
60
+
50
61
  after(:all) do
51
- folders = %w[test config page_objects features]
62
+ folders = %w[test config page_objects features helpers]
52
63
  folders.each do |folder|
53
64
  FileUtils.rm_rf(folder)
54
65
  end
@@ -74,6 +85,11 @@ describe RubyRaider do
74
85
  expect(Pathname.new("#{path}/#{name}_spec.rb")).to be_file
75
86
  end
76
87
 
88
+ it 'creates a helper' do
89
+ raider.new.invoke(:helper, nil, %W[#{name} --path #{path}])
90
+ expect(Pathname.new("#{path}/#{name}_helper.rb")).to be_file
91
+ end
92
+
77
93
  after(:each) do
78
94
  FileUtils.rm_rf(path)
79
95
  end
@@ -117,12 +133,18 @@ describe RubyRaider do
117
133
  expect(Pathname.new("#{path}/#{name}.feature")).to be_file
118
134
  end
119
135
 
120
- it 'creates feature' do
136
+ it 'creates spec' do
121
137
  raider.new.invoke(:path, nil, %W[#{path} -s])
122
138
  raider.new.invoke(:spec, nil, %W[#{name}])
123
139
  expect(Pathname.new("#{path}/#{name}_spec.rb")).to be_file
124
140
  end
125
141
 
142
+ it 'creates spec' do
143
+ raider.new.invoke(:path, nil, %W[#{path} -h])
144
+ raider.new.invoke(:helper, nil, %W[#{name}])
145
+ expect(Pathname.new("#{path}/#{name}_helper.rb")).to be_file
146
+ end
147
+
126
148
  after(:all) do
127
149
  folders = %w[test_folder test config]
128
150
  folders.each do |folder|
@@ -133,7 +155,7 @@ describe RubyRaider do
133
155
 
134
156
  context 'updates the config file' do
135
157
  before(:all) do
136
- CommonGenerator.new(%w[rspec cucumber test]).invoke(:generate_config_file)
158
+ CommonGenerator.new(%w[rspec selenium test]).invoke(:generate_config_file)
137
159
  FileUtils.cp_lr('test/config', './')
138
160
  end
139
161
 
@@ -149,6 +171,32 @@ describe RubyRaider do
149
171
  expect(config['browser']).to eql ':firefox'
150
172
  end
151
173
 
174
+ it 'updates the browser and the browser options' do
175
+ raider.new.invoke(:browser, nil, %W[:firefox --opts headless:test])
176
+ config = YAML.load_file('config/config.yml')
177
+ expect(config['browser']).to eql ':firefox'
178
+ expect(config['browser_options']).to eql "headless" => "test"
179
+ end
180
+
181
+ it 'updates only the browser options' do
182
+ raider.new.invoke(:browser, nil, %W[:firefox --opts headless:test])
183
+ config = YAML.load_file('config/config.yml')
184
+ expect(config['browser_options']).to eql "headless" => "test"
185
+ end
186
+
187
+ it 'deletes the browser options when passed with the delete parameter' do
188
+ raider.new.invoke(:browser, nil, %W[:firefox --opts headless:test --delete])
189
+ config = YAML.load_file('config/config.yml')
190
+ expect(config['browser_options']).to be_nil
191
+ end
192
+
193
+ it 'deletes the browser options' do
194
+ raider.new.invoke(:browser, nil, %W[:firefox --opts headless:test])
195
+ raider.new.invoke(:browser, nil, %W[--delete])
196
+ config = YAML.load_file('config/config.yml')
197
+ expect(config['browser_options']).to be_nil
198
+ end
199
+
152
200
  after(:all) do
153
201
  folders = %w[test config]
154
202
  folders.each do |folder|
@@ -156,4 +204,36 @@ describe RubyRaider do
156
204
  end
157
205
  end
158
206
  end
207
+
208
+ context 'scaffolding' do
209
+ before(:all) do
210
+ CommonGenerator.new(%w[rspec selenium test]).invoke(:generate_config_file)
211
+ FileUtils.cp_lr('test/config', './')
212
+ end
213
+
214
+ context 'with a spec folder' do
215
+ it 'scaffolds for rspec' do
216
+ raider.new.invoke(:scaffold, nil, %W[#{name}])
217
+ expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file
218
+ expect(Pathname.new("spec/#{name}_spec.rb")).to be_file
219
+ end
220
+ end
221
+
222
+ context 'with a features folder' do
223
+ it 'scaffolds for cucumber' do
224
+ FileUtils.mkdir 'features'
225
+ raider.new.invoke(:scaffold, nil, %W[#{name}])
226
+ expect(Pathname.new("page_objects/pages/#{name}_page.rb")).to be_file
227
+ expect(Pathname.new("features/#{name}.feature")).to be_file
228
+ end
229
+ end
230
+
231
+ after(:all) do
232
+ folders = %w[test config page_objects features]
233
+ folders.each do |folder|
234
+ FileUtils.rm_rf(folder)
235
+ end
236
+ FileUtils.rm('spec/test_spec.rb') if Pathname.new('spec/test_spec.rb').exist?
237
+ end
238
+ end
159
239
  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.1
4
+ version: 0.3.4
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-15 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
@@ -180,6 +180,7 @@ files:
180
180
  - lib/ruby_raider.rb
181
181
  - lib/scaffolding/scaffolding.rb
182
182
  - lib/scaffolding/templates/feature.tt
183
+ - lib/scaffolding/templates/helper.tt
183
184
  - lib/scaffolding/templates/page_object.tt
184
185
  - lib/scaffolding/templates/spec.tt
185
186
  - lib/utilities/utilities.rb