ruby_raider 0.1.5 → 0.1.7

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/lib/generators/files/automation_file_generator.rb +31 -130
  4. data/lib/generators/files/common_file_generator.rb +22 -150
  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 +46 -227
  8. data/lib/generators/files/rspec_file_generator.rb +19 -49
  9. data/lib/generators/projects/cucumber_project_generator.rb +17 -15
  10. data/lib/generators/projects/project_generator.rb +7 -5
  11. data/lib/generators/projects/rspec_project_generator.rb +13 -11
  12. data/lib/generators/templates/automation/abstract_component_template.rb +22 -0
  13. data/lib/generators/templates/automation/abstract_page_template.rb +48 -0
  14. data/lib/generators/templates/automation/component_template.rb +16 -0
  15. data/lib/generators/templates/automation/page_template.rb +51 -0
  16. data/lib/generators/templates/common/config_template.rb +9 -0
  17. data/lib/generators/templates/common/gemfile_template.rb +29 -0
  18. data/lib/generators/templates/common/rake_file_template.rb +16 -0
  19. data/lib/generators/templates/common/read_me_template.rb +104 -0
  20. data/lib/generators/templates/cucumber/env_template.rb +38 -0
  21. data/lib/generators/templates/cucumber/example_feature_template.rb +15 -0
  22. data/lib/generators/templates/cucumber/example_steps_template.rb +21 -0
  23. data/lib/generators/templates/helpers/allure_helper_template.rb +47 -0
  24. data/lib/generators/templates/helpers/browser_helper_template.rb +26 -0
  25. data/lib/generators/templates/helpers/driver_helper_template.rb +24 -0
  26. data/lib/generators/templates/helpers/pom_helper_template.rb +25 -0
  27. data/lib/generators/templates/helpers/raider_helper_template.rb +15 -0
  28. data/lib/generators/templates/helpers/selenium_helper_template.rb +42 -0
  29. data/lib/generators/templates/helpers/spec_helper_template.rb +35 -0
  30. data/lib/generators/templates/helpers/watir_helper_template.rb +24 -0
  31. data/lib/generators/templates/rspec/base_spec_template.rb +13 -0
  32. data/lib/generators/templates/rspec/example_spec_template.rb +33 -0
  33. data/lib/generators/templates/template.rb +14 -0
  34. data/ruby_raider.gemspec +1 -1
  35. data/spec/automation_file_generator_spec.rb +14 -5
  36. data/spec/common_file_generator_spec.rb +12 -3
  37. data/spec/cucumber_file_generator_spec.rb +26 -0
  38. data/spec/cucumber_project_generator_spec.rb +60 -0
  39. data/spec/helpers_file_generator_spec.rb +58 -16
  40. data/spec/rspec_file_generator_spec.rb +11 -2
  41. data/spec/rspec_project_generator_spec.rb +18 -9
  42. data/spec/spec_helper.rb +2 -12
  43. metadata +26 -3
  44. data/spec/menu_generator_spec.rb +0 -8
@@ -1,244 +1,63 @@
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)
17
- 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'
13
+ class << self
14
+ def generate_helper_files(name, automation, 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
+ if automation == 'watir'
21
+ generate_watir_helper(path)
22
+ generate_browser_helper(path)
23
+ else
24
+ generate_selenium_helper(path)
25
+ generate_driver_helper(path)
28
26
  end
29
- EOF
30
-
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'
42
27
  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
28
 
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
29
+ def generate_raider_helper(automation, framework, path)
30
+ generate_file('raider.rb', path,
31
+ RaiderHelperTemplate.new(automation: automation, framework: framework).parsed_body)
32
+ end
200
33
 
201
- def hover
202
- # Using actions to move the mouse over an element
203
- DriverHelper.driver.action.move_to(self).perform
204
- end
34
+ def generate_allure_helper(framework, path)
35
+ generate_file('allure_helper.rb', path, AllureHelperTemplate.new(framework: framework).parsed_body)
36
+ end
205
37
 
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
38
+ def generate_browser_helper(path)
39
+ generate_file('browser_helper.rb', path, BrowserHelperTemplate.new.parsed_body)
40
+ end
211
41
 
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
42
+ def generate_pom_helper(path)
43
+ generate_file('pom_helper.rb', path, PomHelperTemplate.new.parsed_body)
44
+ end
217
45
 
218
- EOF
219
- spec.result(binding)
220
- end
46
+ def generate_spec_helper(automation, path)
47
+ generate_file('spec_helper.rb', path, SpecHelperTemplate.new(automation: automation).parsed_body)
48
+ end
221
49
 
222
- def self.generate_driver_helper
223
- spec = ERB.new <<~EOF
224
- require 'selenium-webdriver'
225
- require 'watir'
226
- require 'webdrivers'
227
- require 'yaml'
50
+ def generate_watir_helper(path)
51
+ generate_file('watir_helper.rb', path, WatirHelperTemplate.new.parsed_body)
52
+ end
228
53
 
229
- module Raider
230
- module DriverHelper
231
- class << self
232
- attr_reader :driver
54
+ def generate_selenium_helper(path)
55
+ generate_file('selenium_helper.rb', path, SeleniumHelperTemplate.new.parsed_body)
56
+ end
233
57
 
234
- def new_driver
235
- @driver = Selenium::WebDriver.for :chrome
236
- end
237
- end
238
- end
239
- end
240
- EOF
241
- spec.result(binding)
58
+ def generate_driver_helper(path)
59
+ generate_file('driver_helper.rb', path, DriverHelperTemplate.new.parsed_body)
60
+ end
242
61
  end
243
62
  end
244
63
  end
@@ -1,58 +1,28 @@
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(name, automation)
12
+ AutomationFileGenerator.generate_automation_files(name, automation, 'rspec')
13
+ CommonFileGenerator.generate_common_files(name, 'rspec')
14
+ HelpersFileGenerator.generate_helper_files(name, automation, 'rspec')
15
+ generate_base_spec(name)
16
+ generate_example_spec(name)
17
+ end
18
+
19
+ def generate_example_spec(name)
20
+ generate_file('login_page_spec.rb', "#{name}/spec", ExampleSpecTemplate.new.parsed_body)
21
+ end
22
+
23
+ def generate_base_spec(name)
24
+ generate_file('base_spec.rb', "#{name}/spec", BaseSpecTemplate.new.parsed_body)
25
+ end
56
26
  end
57
27
  end
58
28
  end
@@ -3,22 +3,24 @@ 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(name, automation: 'watir')
8
+ cucumber_folder_structure(name)
9
+ CucumberFileGenerator.generate_cucumber_files(name, automation)
10
+ ProjectGenerator.install_gems(name)
11
+ end
11
12
 
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"
13
+ def cucumber_folder_structure(name)
14
+ Dir.mkdir name.to_s
15
+ folders = %w[features config page_objects allure-results]
16
+ create_children_folders("#{name}", folders)
17
+ folders = %w[step_definitions support]
18
+ create_children_folders("#{name}/features", folders)
19
+ Dir.mkdir "#{name}/features/support/helpers"
20
+ folders = %w[abstract pages components]
21
+ create_children_folders("#{name}/page_objects", folders)
22
+ Dir.mkdir "#{name}/allure-results/screenshots"
23
+ end
22
24
  end
23
25
  end
24
26
  end
@@ -1,11 +1,13 @@
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
6
7
 
7
- def self.install_gems(name)
8
- system "cd #{name} && gem install bundler && bundle install"
8
+ def install_gems(name)
9
+ system "cd #{name} && gem install bundler && bundle install"
10
+ end
9
11
  end
10
12
  end
11
13
  end
@@ -3,18 +3,20 @@ 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(name, automation: 'watir')
8
+ rspec_folder_structure(name)
9
+ RspecFileGenerator.generate_rspec_files(name, automation)
10
+ ProjectGenerator.install_gems(name)
11
+ end
11
12
 
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)
13
+ def rspec_folder_structure(name)
14
+ Dir.mkdir name.to_s
15
+ folders = %w[config data page_objects helpers spec]
16
+ create_children_folders(name, folders)
17
+ pages = %w[pages components abstract]
18
+ create_children_folders("#{name}/page_objects", pages)
19
+ end
18
20
  end
19
21
  end
20
22
  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
@@ -0,0 +1,48 @@
1
+ require_relative '../template'
2
+
3
+ class AbstractPageTemplate < Template
4
+ def body
5
+ browser = "def browser
6
+ Raider::BrowserHelper.browser
7
+ end"
8
+ driver = "def driver
9
+ Raider::DriverHelper.driver
10
+ end"
11
+
12
+ visit = @automation == 'watir' ? 'browser.goto full_url(page.first)' : 'driver.navigate.to full_url(page.first)'
13
+ raider = if @framework == 'rspec'
14
+ "require_relative '../../helpers/raider'"
15
+ else
16
+ "require_relative '../../features/support/helpers/raider'"
17
+ end
18
+
19
+ <<~EOF
20
+ require 'rspec'
21
+ #{raider}
22
+
23
+ class AbstractPage
24
+
25
+ include RSpec::Matchers
26
+ extend Raider::PomHelper
27
+
28
+ #{@automation == 'watir' ? browser : driver}
29
+
30
+ def visit(*page)
31
+ #{visit}
32
+ end
33
+
34
+ def full_url(*page)
35
+ "#\{base_url}#\{url(*page)}"
36
+ end
37
+
38
+ def base_url
39
+ 'https://automationteststore.com/'
40
+ end
41
+
42
+ def url(_page)
43
+ raise 'Url must be defined on child pages'
44
+ end
45
+ end
46
+ EOF
47
+ end
48
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../template'
2
+
3
+ class ComponentTemplate < Template
4
+ def body
5
+ <<~EOF
6
+ require_relative '../abstract/abstract_component'
7
+
8
+ class HeaderComponent < AbstractComponent
9
+
10
+ def customer_name
11
+ @component.text
12
+ end
13
+ end
14
+ EOF
15
+ end
16
+ end
@@ -0,0 +1,51 @@
1
+ require_relative '../template'
2
+
3
+ class PageTemplate < Template
4
+ def body
5
+ element = @automation == 'watir' ? 'browser.element' : 'driver.find_element'
6
+ helper = @automation == 'watir' ? 'Raider::WatirHelper' : 'Raider::SeleniumHelper'
7
+
8
+ <<~EOF
9
+ require_relative '../abstract/abstract_page'
10
+ require_relative '../components/header_component'
11
+
12
+ class LoginPage < AbstractPage
13
+ using #{helper}
14
+
15
+ def url(_page)
16
+ 'index.php?rt=account/login'
17
+ end
18
+
19
+ # Actions
20
+
21
+ def login(username, password)
22
+ username_field.send_keys username
23
+ password_field.send_keys password
24
+ login_button.click_when_present
25
+ end
26
+
27
+ # Components
28
+
29
+ def header
30
+ HeaderComponent.new(#{element}(class: 'menu_text'))
31
+ end
32
+
33
+ private
34
+
35
+ # Elements
36
+
37
+ def username_field
38
+ #{element}(id: 'loginFrm_loginname')
39
+ end
40
+
41
+ def password_field
42
+ #{element}(id: 'loginFrm_password')
43
+ end
44
+
45
+ def login_button
46
+ #{element}(xpath: "//button[@title='Login']")
47
+ end
48
+ end
49
+ EOF
50
+ end
51
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../template'
2
+
3
+ class ConfigTemplate < Template
4
+ def body
5
+ <<~EOF
6
+ browser: :chrome
7
+ EOF
8
+ end
9
+ end
@@ -0,0 +1,29 @@
1
+ require_relative '../template'
2
+
3
+ class GemfileTemplate < Template
4
+ def body
5
+ if @framework == 'cucumber'
6
+ allure_cucumber = "gem 'allure-cucumber'"
7
+ rspec = "gem 'rspec'"
8
+ end
9
+
10
+ <<~EOF
11
+ # frozen_string_literal: true
12
+
13
+ source 'https://rubygems.org'
14
+
15
+ gem 'activesupport'
16
+ gem 'allure-rspec'
17
+ gem 'allure-ruby-commons'
18
+ #{allure_cucumber}
19
+ gem 'parallel_split_test'
20
+ gem 'parallel_tests'
21
+ gem 'rake'
22
+ gem '#{@framework}'
23
+ #{rspec}
24
+ gem 'selenium-webdriver'
25
+ gem 'watir'
26
+ gem 'webdrivers'
27
+ EOF
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../template'
2
+
3
+ class RakeFileTemplate < Template
4
+ def body
5
+ <<~EOF
6
+ require 'yaml'
7
+
8
+ desc 'Selects browser for automation run'
9
+ task :select_browser, [:browser] do |_t, args|
10
+ config = YAML.load_file('config/config.yml')
11
+ config['browser'] = args.browser
12
+ File.write('config/config.yml', config.to_yaml)
13
+ end
14
+ EOF
15
+ end
16
+ end