ruby_raider 0.1.5 → 0.1.9

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/lib/generators/files/automation_file_generator.rb +53 -129
  4. data/lib/generators/files/common_file_generator.rb +24 -148
  5. data/lib/generators/files/cucumber_file_generator.rb +22 -70
  6. data/lib/generators/files/file_generator.rb +7 -5
  7. data/lib/generators/files/helpers_file_generator.rb +51 -225
  8. data/lib/generators/files/rspec_file_generator.rb +20 -49
  9. data/lib/generators/menu_generator.rb +44 -29
  10. data/lib/generators/projects/cucumber_project_generator.rb +25 -15
  11. data/lib/generators/projects/project_generator.rb +21 -5
  12. data/lib/generators/projects/rspec_project_generator.rb +17 -11
  13. data/lib/generators/templates/automation/abstract_component_template.rb +22 -0
  14. data/lib/generators/templates/automation/abstract_page_template.rb +82 -0
  15. data/lib/generators/templates/automation/appium_settings_template.rb +16 -0
  16. data/lib/generators/templates/automation/component_template.rb +16 -0
  17. data/lib/generators/templates/automation/confirmation_page_template.rb +26 -0
  18. data/lib/generators/templates/automation/home_page_template.rb +26 -0
  19. data/lib/generators/templates/automation/login_page_template.rb +113 -0
  20. data/lib/generators/templates/common/config_template.rb +9 -0
  21. data/lib/generators/templates/common/gemfile_template.rb +52 -0
  22. data/lib/generators/templates/common/rake_file_template.rb +16 -0
  23. data/lib/generators/templates/common/read_me_template.rb +104 -0
  24. data/lib/generators/templates/cucumber/env_template.rb +38 -0
  25. data/lib/generators/templates/cucumber/example_feature_template.rb +15 -0
  26. data/lib/generators/templates/cucumber/example_steps_template.rb +21 -0
  27. data/lib/generators/templates/helpers/allure_helper_template.rb +47 -0
  28. data/lib/generators/templates/helpers/browser_helper_template.rb +26 -0
  29. data/lib/generators/templates/helpers/driver_helper_template.rb +54 -0
  30. data/lib/generators/templates/helpers/pom_helper_template.rb +25 -0
  31. data/lib/generators/templates/helpers/raider_helper_template.rb +27 -0
  32. data/lib/generators/templates/helpers/selenium_helper_template.rb +42 -0
  33. data/lib/generators/templates/helpers/spec_helper_template.rb +74 -0
  34. data/lib/generators/templates/helpers/watir_helper_template.rb +24 -0
  35. data/lib/generators/templates/rspec/base_spec_template.rb +13 -0
  36. data/lib/generators/templates/rspec/example_spec_template.rb +56 -0
  37. data/lib/generators/templates/template.rb +14 -0
  38. data/ruby_raider.gemspec +1 -1
  39. data/spec/automation_file_generator_spec.rb +48 -14
  40. data/spec/common_file_generator_spec.rb +12 -3
  41. data/spec/cucumber_file_generator_spec.rb +26 -0
  42. data/spec/cucumber_project_generator_spec.rb +60 -0
  43. data/spec/helpers_file_generator_spec.rb +58 -16
  44. data/spec/rspec_file_generator_spec.rb +11 -2
  45. data/spec/rspec_project_generator_spec.rb +55 -25
  46. data/spec/spec_helper.rb +2 -12
  47. metadata +30 -4
  48. data/spec/menu_generator_spec.rb +0 -8
@@ -1,244 +1,70 @@
1
+ require_relative '../templates/helpers/allure_helper_template'
2
+ require_relative '../templates/helpers/browser_helper_template'
3
+ require_relative '../templates/helpers/driver_helper_template'
4
+ require_relative '../templates/helpers/pom_helper_template'
5
+ require_relative '../templates/helpers/raider_helper_template'
6
+ require_relative '../templates/helpers/spec_helper_template'
7
+ require_relative '../templates/helpers/selenium_helper_template'
8
+ require_relative '../templates/helpers/watir_helper_template'
1
9
  require_relative 'file_generator'
2
10
 
3
11
  module RubyRaider
4
12
  class HelpersFileGenerator < FileGenerator
5
- def self.generate_helper_files(name, automation, framework)
6
- path = framework == 'rspec' ? "#{name}/helpers" : "#{name}/features/support/helpers"
7
- generate_file('raider.rb', path, generate_raider_helper(automation, framework))
8
- generate_file('allure_helper.rb', path, generate_allure_helper(framework))
9
- generate_file('pom_helper.rb', path, generate_pom_helper)
10
- generate_file('spec_helper.rb', path, generate_spec_helper((automation))) if framework == 'rspec'
11
- if automation == 'watir'
12
- generate_file('watir_helper.rb', path, generate_watir_helper)
13
- generate_file('browser_helper.rb', path, generate_browser_helper)
14
- else
15
- generate_file('selenium_helper.rb', path, generate_selenium_helper)
16
- generate_file('driver_helper.rb', path, generate_driver_helper)
13
+ class << self
14
+ def generate_helper_files(automation, name, framework)
15
+ path = framework == 'rspec' ? "#{name}/helpers" : "#{name}/features/support/helpers"
16
+ generate_raider_helper(automation, framework, path)
17
+ generate_allure_helper(framework, path)
18
+ generate_pom_helper(path)
19
+ generate_spec_helper(automation, path) if framework == 'rspec'
20
+ select_helpers(automation, path)
17
21
  end
18
- end
19
-
20
- def self.generate_raider_helper(automation, framework)
21
- spec = ERB.new <<~EOF
22
- module Raider
23
- #{"require_relative 'spec_helper'" if framework == 'rspec'}
24
- require_relative '#{automation}_helper'
25
- require_relative 'pom_helper'
26
- require_relative '#{automation == 'watir' ? 'browser_helper' : 'driver_helper'}'
27
- require_relative 'allure_helper'
28
- end
29
- EOF
30
22
 
31
- spec.result(binding)
32
- end
33
-
34
- def self.generate_allure_helper(framework)
35
- if framework == 'cucumber'
36
- gems = "require 'allure-cucumber'"
37
- allure = 'AllureCucumber'
38
- else
39
- gems = "require 'allure-ruby-commons'
40
- require 'allure-rspec'"
41
- allure = 'AllureRspec'
23
+ def generate_raider_helper(automation, framework, path)
24
+ generate_file('raider.rb', path,
25
+ RaiderHelperTemplate.new(automation: automation, framework: framework).parsed_body)
42
26
  end
43
- spec = ERB.new <<~EOF
44
- #{gems}
45
-
46
- module Raider
47
- module AllureHelper
48
- class << self
49
-
50
- def configure
51
- #{allure}.configure do |config|
52
- config.results_directory = 'allure-results'
53
- config.clean_results_directory = true
54
- end
55
- end
56
-
57
- def add_screenshot(screenshot_name)
58
- Allure.add_attachment(
59
- name: name,
60
- source: "File.open(allure-results/screenshots/\#{screenshot_name}.png)",
61
- type: Allure::ContentType::PNG,
62
- test_case: true
63
- )
64
- end
65
-
66
- #{
67
- if framework == 'rspec'
68
- 'def formatter
69
- AllureRspecFormatter
70
- end'
71
- end }
72
- end
73
- end
74
- end
75
- EOF
76
- spec.result(binding)
77
- end
78
-
79
- def self.generate_browser_helper
80
- spec = ERB.new <<~EOF
81
- require 'yaml'
82
- require 'selenium-webdriver'
83
- require 'watir'
84
- require 'webdrivers'
85
-
86
- module Raider
87
- module BrowserHelper
88
- class << self
89
- attr_reader :browser
90
-
91
- def new_browser
92
- config = YAML.load_file('config/config.yml')
93
- @browser = Watir::Browser.new config['browser']
94
- end
95
- end
96
- end
97
- end
98
-
99
- EOF
100
- spec.result(binding)
101
- end
102
-
103
- def self.generate_pom_helper
104
- spec = ERB.new <<~EOF
105
- module Raider
106
- module PomHelper
107
- def instance
108
- @instance ||= new
109
- end
110
-
111
- def method_missing(message, *args, &block)
112
- return super unless instance.respond_to?(message)
113
-
114
- instance.public_send(message, *args, &block)
115
- end
116
-
117
- def respond_to_missing?(method, *_args, &block)
118
- instance.respond_to?(method) || super
119
- end
120
- end
121
- end
122
- EOF
123
- spec.result(binding)
124
- end
125
-
126
- def self.generate_spec_helper(automation)
127
- spec = ERB.new <<~EOF
128
- require 'active_support/all'
129
- require 'rspec'
130
- require_relative 'allure_helper'
131
- require_relative '#{automation == 'watir' ? 'browser_helper' : 'driver_helper'}'
132
27
 
133
- module Raider
134
- module SpecHelper
135
-
136
- AllureHelper.configure
137
-
138
- RSpec.configure do |config|
139
- config.formatter = AllureHelper.formatter
140
- config.before(:each) do
141
- #{automation == 'watir' ? 'BrowserHelper.new_browser' : 'DriverHelper.new_driver'}
142
- end
143
-
144
- config.after(:each) do
145
- #{automation == 'watir' ? 'browser = BrowserHelper.browser' : 'driver = DriverHelper.driver'}
146
- example_name = self.class.descendant_filtered_examples.first.description
147
- status = self.class.descendant_filtered_examples.first.execution_result.status
148
- #{automation == 'watir' ? 'browser' : 'driver'}.save_screenshot("allure-results/screenshots/#\{example_name}.png") if status == :failed
149
- AllureHelper.add_screenshot example_name if status == :failed
150
- #{automation == 'watir' ? 'browser.quit' : 'driver.quit'}
151
- end
152
- end
153
- end
154
- end
155
- EOF
156
- spec.result(binding)
157
- end
158
-
159
- def self.generate_watir_helper
160
- spec = ERB.new <<~EOF
161
- require 'watir'
162
-
163
- module Raider
164
- module WatirHelper
165
- refine Watir::Element do
166
- def click_when_present
167
- wait_until_present
168
- self.click
169
- end
170
-
171
- def wait_until_present
172
- self.wait_until(&:present?)
173
- end
174
- end
175
- end
176
- end
177
- EOF
178
- spec.result(binding)
179
- end
180
-
181
- def self.generate_selenium_helper
182
- spec = ERB.new <<~EOF
183
- require 'selenium-webdriver'
184
- require_relative 'driver_helper'
185
-
186
- module Raider
187
- module SeleniumHelper
188
- def click_when_present
189
- # This is an example of an implicit wait in selenium
190
- wait = Selenium::WebDriver::Wait.new(timeout: 15)
191
- wait.until { present? }
192
- click
193
- end
194
-
195
- def select_by(key, value)
196
- # Creates new Select object to use the select by method
197
- dropdown = Selenium::WebDriver::Support::Select.new self
198
- dropdown.select_by(key, value)
199
- end
28
+ def generate_allure_helper(framework, path)
29
+ generate_file('allure_helper.rb', path, AllureHelperTemplate.new(framework: framework).parsed_body)
30
+ end
200
31
 
201
- def hover
202
- # Using actions to move the mouse over an element
203
- DriverHelper.driver.action.move_to(self).perform
204
- end
32
+ def generate_browser_helper(path)
33
+ generate_file('browser_helper.rb', path, BrowserHelperTemplate.new.parsed_body)
34
+ end
205
35
 
206
- # How to perform right click through the context click method
207
- def right_click
208
- DriverHelper.driver.action.context_click(self).perform
209
- end
210
- end
36
+ def generate_pom_helper(path)
37
+ generate_file('pom_helper.rb', path, PomHelperTemplate.new.parsed_body)
38
+ end
211
39
 
212
- # Here we are opening the selenium class and adding our custom method
213
- class Selenium::WebDriver::Element
214
- include SeleniumHelper
215
- end
216
- end
40
+ def generate_spec_helper(automation, path)
41
+ generate_file('spec_helper.rb', path, SpecHelperTemplate.new(automation: automation).parsed_body)
42
+ end
217
43
 
218
- EOF
219
- spec.result(binding)
220
- end
44
+ def generate_watir_helper(path)
45
+ generate_file('watir_helper.rb', path, WatirHelperTemplate.new.parsed_body)
46
+ end
221
47
 
222
- def self.generate_driver_helper
223
- spec = ERB.new <<~EOF
224
- require 'selenium-webdriver'
225
- require 'watir'
226
- require 'webdrivers'
227
- require 'yaml'
48
+ def generate_selenium_helper(path)
49
+ generate_file('selenium_helper.rb', path, SeleniumHelperTemplate.new.parsed_body)
50
+ end
228
51
 
229
- module Raider
230
- module DriverHelper
231
- class << self
232
- attr_reader :driver
52
+ def generate_driver_helper(automation, path)
53
+ generate_file('driver_helper.rb', path, DriverHelperTemplate.new(automation: automation).parsed_body)
54
+ end
233
55
 
234
- def new_driver
235
- @driver = Selenium::WebDriver.for :chrome
236
- end
237
- end
238
- end
56
+ def select_helpers(automation, path)
57
+ case automation
58
+ when 'watir'
59
+ generate_watir_helper(path)
60
+ generate_browser_helper(path)
61
+ when 'selenium'
62
+ generate_selenium_helper(path)
63
+ generate_driver_helper(automation, path)
64
+ else
65
+ generate_driver_helper(automation, path)
239
66
  end
240
- EOF
241
- spec.result(binding)
67
+ end
242
68
  end
243
69
  end
244
70
  end
@@ -1,58 +1,29 @@
1
+ require_relative '../templates/rspec/example_spec_template'
2
+ require_relative '../templates/rspec/base_spec_template'
3
+ require_relative 'automation_file_generator'
1
4
  require_relative 'common_file_generator'
2
5
  require_relative 'file_generator'
3
6
  require_relative 'helpers_file_generator'
4
- require_relative 'automation_file_generator'
5
7
 
6
8
  module RubyRaider
7
9
  class RspecFileGenerator < FileGenerator
8
- def self.generate_rspec_files(name, automation)
9
- CommonFileGenerator.generate_common_files(name, 'rspec')
10
- HelpersFileGenerator.generate_helper_files(name, automation, 'rspec')
11
- generate_file('login_page_spec.rb', "#{name}/spec", generate_example_spec)
12
- generate_file('base_spec.rb', "#{name}/spec", generate_base_spec)
13
- AutomationFileGenerator.generate_automation_files(name, automation, 'rspec')
14
- end
15
-
16
- def self.generate_example_spec
17
- spec = ERB.new <<~EOF
18
- require_relative 'base_spec'
19
- require_relative '../page_objects/pages/login_page'
20
-
21
- class LoginSpec < BaseSpec
22
- context 'On the Login Page' do
23
-
24
- before(:each) do
25
- LoginPage.visit
26
- end
27
-
28
- describe 'A user can' do
29
- it 'login with the right credentials', :JIRA_123 do
30
- LoginPage.login('aguspe', '12341234')
31
- expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
32
- end
33
- end
34
-
35
- describe 'A user cannot' do
36
- it 'login with the wrong credentials', :JIRA_123 do
37
- LoginPage.login('aguspe', 'wrongPassword')
38
- expect(LoginPage.header.customer_name).to be_empty
39
- end
40
- end
41
- end
42
- end
43
- EOF
44
- spec.result(binding)
45
- end
46
-
47
- def self.generate_base_spec
48
- spec = ERB.new <<~EOF
49
- require_relative '../helpers/raider'
50
-
51
- class BaseSpec
52
- include Raider::SpecHelper
53
- end
54
- EOF
55
- spec.result(binding)
10
+ class << self
11
+ def generate_rspec_files(automation, name)
12
+ AutomationFileGenerator.generate_automation_files(automation, name,'rspec')
13
+ CommonFileGenerator.generate_common_files(automation, name, 'rspec')
14
+ HelpersFileGenerator.generate_helper_files(automation, name, 'rspec')
15
+ generate_base_spec(name)
16
+ generate_example_spec(automation, name)
17
+ end
18
+
19
+ def generate_example_spec(automation, name)
20
+ generate_file('login_page_spec.rb', "#{name}/spec",
21
+ ExampleSpecTemplate.new(automation: automation).parsed_body)
22
+ end
23
+
24
+ def generate_base_spec(name)
25
+ generate_file('base_spec.rb', "#{name}/spec", BaseSpecTemplate.new.parsed_body)
26
+ end
56
27
  end
57
28
  end
58
29
  end
@@ -4,41 +4,56 @@ require_relative '../generators/projects/rspec_project_generator'
4
4
 
5
5
  module RubyRaider
6
6
  class MenuGenerator
7
- def self.generate_choice_menu(project_name)
8
- cli = HighLine.new
9
- cli.choose do |menu|
10
- menu.prompt = 'Please select your automation framework'
11
- menu.choice(:Selenium) { choose_test_framework('selenium', project_name) }
12
- menu.choice(:Watir) { choose_test_framework('watir', project_name) }
13
- menu.choice(:Quit, 'Exit program.') { exit }
7
+ class << self
8
+ def generate_choice_menu(project_name)
9
+ @cli = HighLine.new
10
+ @cli.choose do |menu|
11
+ menu.prompt = 'Please select your automation framework'
12
+ menu.choice('Selenium') { choose_test_framework('selenium', project_name) }
13
+ menu.choice('Watir') { choose_test_framework('watir', project_name) }
14
+ menu.choice('Appium') { choose_test_framework('appium', project_name) }
15
+ menu.choice('Quit') { exit }
16
+ end
14
17
  end
15
- end
16
18
 
17
- def self.choose_test_framework(automation, project_name)
18
- system('clear') || system('cls')
19
- sleep 0.3
20
- cli = HighLine.new
21
- framework = ''
22
- cli.choose do |menu|
23
- menu.prompt = 'Please select your test framework'
24
- menu.choice(:Rspec) do
25
- framework = 'rspec'
26
- set_framework(automation, framework, project_name)
19
+ def choose_test_framework(automation, project_name)
20
+ system('clear') || system('cls')
21
+ sleep 0.3
22
+ automation = automation == 'appium' ? choose_mobile_platform : automation
23
+ framework = ''
24
+ @cli.choose do |menu|
25
+ menu.prompt = 'Please select your test framework'
26
+ menu.choice('Rspec') { framework = 'rspec'; set_framework(automation, framework, project_name) }
27
+ menu.choice('Cucumber') do
28
+ if %w[selenium watir].include? automation
29
+ framework = 'cucumber'
30
+ set_framework(automation, framework, project_name)
31
+ else
32
+ pp 'We will support iOS with cucumber on the next release'
33
+ exit
34
+ end
35
+ end
36
+ menu.choice('Quit') { exit }
27
37
  end
28
- menu.choice(:Cucumber) do
29
- framework = 'cucumber'
30
- set_framework(automation, framework, project_name)
38
+ @cli.say("You have chosen to use #{framework} with #{automation}")
39
+ end
40
+
41
+ def set_framework(automation, framework, project_name)
42
+ if framework == 'rspec'
43
+ RspecProjectGenerator.generate_rspec_project(automation, project_name)
44
+ else
45
+ CucumberProjectGenerator.generate_cucumber_project(automation, project_name)
31
46
  end
32
- menu.choice(:Quit, 'Exit program.') { exit }
33
47
  end
34
- cli.say("You have chosen to use #{framework} with #{automation}")
35
- end
36
48
 
37
- def self.set_framework(automation, framework, project_name)
38
- if framework == 'rspec'
39
- RspecProjectGenerator.generate_rspec_project(project_name, automation: automation)
40
- else
41
- CucumberProjectGenerator.generate_cucumber_project(project_name, automation: automation)
49
+ def choose_mobile_platform
50
+ @cli.choose do |menu|
51
+ menu.prompt = 'Please select your mobile platform'
52
+ menu.choice('iOS') { 'appium_ios' }
53
+ menu.choice('Android') { pp 'Android appium is coming soon. Thank you for the interest'; exit }
54
+ menu.choice('Cross Platform') { pp 'Cross platform appium is coming soon. Thank you for the interest'; exit }
55
+ menu.choice('Quit') { exit }
56
+ end
42
57
  end
43
58
  end
44
59
  end
@@ -3,22 +3,32 @@ require_relative 'project_generator'
3
3
 
4
4
  module RubyRaider
5
5
  class CucumberProjectGenerator < ProjectGenerator
6
- def self.generate_cucumber_project(name, automation: 'watir')
7
- cucumber_folder_structure(name)
8
- CucumberFileGenerator.generate_cucumber_files(name, automation)
9
- ProjectGenerator.install_gems(name)
10
- end
6
+ class << self
7
+ def generate_cucumber_project(automation, name)
8
+ cucumber_folder_structure(automation, name)
9
+ CucumberFileGenerator.generate_cucumber_files(automation, name)
10
+ ProjectGenerator.install_gems(name)
11
+ end
12
+
13
+ def cucumber_folder_structure(automation, name)
14
+ create_project_folder(name)
15
+ create_base_folders(automation, name)
16
+ create_features_child_folders(name)
17
+ Dir.mkdir "#{name}/features/support/helpers"
18
+ create_po_child_folders(automation, name)
19
+ Dir.mkdir "#{name}/allure-results/screenshots"
20
+ end
21
+
22
+ def create_base_folders(automation, name)
23
+ folders = %w[features page_objects allure-results]
24
+ create_children_folders("#{name}", folders)
25
+ Dir.mkdir "#{name}/config" if %w[selenium watir].include?(automation)
26
+ end
11
27
 
12
- def self.cucumber_folder_structure(name)
13
- Dir.mkdir name.to_s
14
- folders = %w[features config page_objects allure-results]
15
- create_children_folders("#{name}", folders)
16
- folders = %w[step_definitions support]
17
- create_children_folders("#{name}/features", folders)
18
- Dir.mkdir "#{name}/features/support/helpers"
19
- folders = %w[abstract pages components]
20
- create_children_folders("#{name}/page_objects", folders)
21
- Dir.mkdir "#{name}/allure-results/screenshots"
28
+ def create_features_child_folders(name)
29
+ folders = %w[step_definitions support]
30
+ create_children_folders("#{name}/features", folders)
31
+ end
22
32
  end
23
33
  end
24
34
  end
@@ -1,11 +1,27 @@
1
1
  module RubyRaider
2
2
  class ProjectGenerator
3
- def self.create_children_folders(parent, folders)
4
- folders.each { |folder| Dir.mkdir "#{parent}/#{folder}" }
5
- end
3
+ class << self
4
+ def create_children_folders(parent, folders)
5
+ folders.each { |folder| Dir.mkdir "#{parent}/#{folder}" }
6
+ end
7
+
8
+ def install_gems(name)
9
+ system "cd #{name} && gem install bundler && bundle install"
10
+ end
11
+
12
+ def create_project_folder(name)
13
+ Dir.mkdir name.to_s
14
+ end
15
+
16
+ def create_base_folders
17
+ raise 'Please specify the base folders for the projects'
18
+ end
6
19
 
7
- def self.install_gems(name)
8
- system "cd #{name} && gem install bundler && bundle install"
20
+ def create_po_child_folders(automation, name)
21
+ folders = %w[pages abstract]
22
+ create_children_folders("#{name}/page_objects", folders)
23
+ Dir.mkdir "#{name}/page_objects/components" if %w[selenium watir].include?(automation)
24
+ end
9
25
  end
10
26
  end
11
27
  end
@@ -3,18 +3,24 @@ require_relative '../files/rspec_file_generator'
3
3
 
4
4
  module RubyRaider
5
5
  class RspecProjectGenerator < ProjectGenerator
6
- def self.generate_rspec_project(name, automation: 'watir')
7
- rspec_folder_structure(name)
8
- RspecFileGenerator.generate_rspec_files(name, automation)
9
- ProjectGenerator.install_gems(name)
10
- end
6
+ class << self
7
+ def generate_rspec_project(automation, name)
8
+ rspec_folder_structure(automation, name)
9
+ RspecFileGenerator.generate_rspec_files(automation, name)
10
+ ProjectGenerator.install_gems(name)
11
+ end
12
+
13
+ def rspec_folder_structure(automation, name)
14
+ create_project_folder(name)
15
+ create_base_folders(automation, name)
16
+ create_po_child_folders(automation, name)
17
+ end
11
18
 
12
- def self.rspec_folder_structure(name)
13
- Dir.mkdir name.to_s
14
- folders = %w[config data page_objects helpers spec]
15
- create_children_folders(name, folders)
16
- pages = %w[pages components abstract]
17
- create_children_folders("#{name}/page_objects", pages)
19
+ def create_base_folders(automation, name)
20
+ folders = %w[data page_objects helpers spec]
21
+ create_children_folders(name, folders)
22
+ Dir.mkdir "#{name}/config" if %w[selenium watir].include?(automation)
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -0,0 +1,22 @@
1
+ require_relative '../template'
2
+
3
+ class AbstractComponentTemplate < Template
4
+ def body
5
+ raider = if @framework == 'rspec'
6
+ "require_relative '../../helpers/raider'"
7
+ else
8
+ "require_relative '../../features/support/helpers/raider'"
9
+ end
10
+
11
+ <<~EOF
12
+ #{raider}
13
+
14
+ class AbstractComponent
15
+
16
+ def initialize(component)
17
+ @component = component
18
+ end
19
+ end
20
+ EOF
21
+ end
22
+ end