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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/lib/generators/files/automation_file_generator.rb +53 -129
- data/lib/generators/files/common_file_generator.rb +24 -148
- data/lib/generators/files/cucumber_file_generator.rb +22 -70
- data/lib/generators/files/file_generator.rb +7 -5
- data/lib/generators/files/helpers_file_generator.rb +51 -225
- data/lib/generators/files/rspec_file_generator.rb +20 -49
- data/lib/generators/menu_generator.rb +44 -29
- data/lib/generators/projects/cucumber_project_generator.rb +25 -15
- data/lib/generators/projects/project_generator.rb +21 -5
- data/lib/generators/projects/rspec_project_generator.rb +17 -11
- data/lib/generators/templates/automation/abstract_component_template.rb +22 -0
- data/lib/generators/templates/automation/abstract_page_template.rb +82 -0
- data/lib/generators/templates/automation/appium_settings_template.rb +16 -0
- data/lib/generators/templates/automation/component_template.rb +16 -0
- data/lib/generators/templates/automation/confirmation_page_template.rb +26 -0
- data/lib/generators/templates/automation/home_page_template.rb +26 -0
- data/lib/generators/templates/automation/login_page_template.rb +113 -0
- data/lib/generators/templates/common/config_template.rb +9 -0
- data/lib/generators/templates/common/gemfile_template.rb +52 -0
- data/lib/generators/templates/common/rake_file_template.rb +16 -0
- data/lib/generators/templates/common/read_me_template.rb +104 -0
- data/lib/generators/templates/cucumber/env_template.rb +38 -0
- data/lib/generators/templates/cucumber/example_feature_template.rb +15 -0
- data/lib/generators/templates/cucumber/example_steps_template.rb +21 -0
- data/lib/generators/templates/helpers/allure_helper_template.rb +47 -0
- data/lib/generators/templates/helpers/browser_helper_template.rb +26 -0
- data/lib/generators/templates/helpers/driver_helper_template.rb +54 -0
- data/lib/generators/templates/helpers/pom_helper_template.rb +25 -0
- data/lib/generators/templates/helpers/raider_helper_template.rb +27 -0
- data/lib/generators/templates/helpers/selenium_helper_template.rb +42 -0
- data/lib/generators/templates/helpers/spec_helper_template.rb +74 -0
- data/lib/generators/templates/helpers/watir_helper_template.rb +24 -0
- data/lib/generators/templates/rspec/base_spec_template.rb +13 -0
- data/lib/generators/templates/rspec/example_spec_template.rb +56 -0
- data/lib/generators/templates/template.rb +14 -0
- data/ruby_raider.gemspec +1 -1
- data/spec/automation_file_generator_spec.rb +48 -14
- data/spec/common_file_generator_spec.rb +12 -3
- data/spec/cucumber_file_generator_spec.rb +26 -0
- data/spec/cucumber_project_generator_spec.rb +60 -0
- data/spec/helpers_file_generator_spec.rb +58 -16
- data/spec/rspec_file_generator_spec.rb +11 -2
- data/spec/rspec_project_generator_spec.rb +55 -25
- data/spec/spec_helper.rb +2 -12
- metadata +30 -4
- 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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
32
|
-
|
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
|
-
|
134
|
-
|
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
|
-
|
202
|
-
|
203
|
-
|
204
|
-
end
|
32
|
+
def generate_browser_helper(path)
|
33
|
+
generate_file('browser_helper.rb', path, BrowserHelperTemplate.new.parsed_body)
|
34
|
+
end
|
205
35
|
|
206
|
-
|
207
|
-
|
208
|
-
|
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
|
-
|
213
|
-
|
214
|
-
|
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
|
-
|
219
|
-
|
220
|
-
|
44
|
+
def generate_watir_helper(path)
|
45
|
+
generate_file('watir_helper.rb', path, WatirHelperTemplate.new.parsed_body)
|
46
|
+
end
|
221
47
|
|
222
|
-
|
223
|
-
|
224
|
-
|
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
|
-
|
230
|
-
|
231
|
-
|
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
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
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
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
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
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
8
|
-
|
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|