ruby_raider 0.1.5 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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