ruby_raider 0.1.2 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/Gemfile +5 -0
  4. data/README.md +8 -3
  5. data/bin/raider +0 -0
  6. data/lib/generators/files/automation_file_generator.rb +38 -0
  7. data/lib/generators/files/common_file_generator.rb +27 -127
  8. data/lib/generators/files/cucumber_file_generator.rb +33 -0
  9. data/lib/generators/files/file_generator.rb +7 -5
  10. data/lib/generators/files/helpers_file_generator.rb +47 -218
  11. data/lib/generators/files/rspec_file_generator.rb +16 -51
  12. data/lib/generators/menu_generator.rb +15 -5
  13. data/lib/generators/projects/cucumber_project_generator.rb +20 -8
  14. data/lib/generators/projects/project_generator.rb +7 -5
  15. data/lib/generators/projects/rspec_project_generator.rb +13 -14
  16. data/lib/generators/templates/automation/abstract_component_template.rb +22 -0
  17. data/lib/generators/templates/automation/abstract_page_template.rb +48 -0
  18. data/lib/generators/templates/automation/component_template.rb +16 -0
  19. data/lib/generators/templates/automation/page_template.rb +51 -0
  20. data/lib/generators/templates/common/config_template.rb +9 -0
  21. data/lib/generators/templates/common/gemfile_template.rb +29 -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 +24 -0
  30. data/lib/generators/templates/helpers/pom_helper_template.rb +25 -0
  31. data/lib/generators/templates/helpers/raider_helper_template.rb +15 -0
  32. data/lib/generators/templates/helpers/selenium_helper_template.rb +42 -0
  33. data/lib/generators/templates/helpers/spec_helper_template.rb +35 -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 +33 -0
  37. data/lib/generators/templates/template.rb +14 -0
  38. data/lib/ruby_raider.rb +3 -3
  39. data/ruby_raider.gemspec +4 -3
  40. data/spec/automation_file_generator_spec.rb +34 -0
  41. data/spec/common_file_generator_spec.rb +12 -3
  42. data/spec/cucumber_file_generator_spec.rb +26 -0
  43. data/spec/cucumber_project_generator_spec.rb +60 -0
  44. data/spec/helpers_file_generator_spec.rb +58 -16
  45. data/spec/rspec_file_generator_spec.rb +11 -2
  46. data/spec/rspec_project_generator_spec.rb +18 -9
  47. data/spec/spec_helper.rb +2 -12
  48. metadata +52 -15
  49. data/lib/generators/files/selenium_file_generator.rb +0 -159
  50. data/lib/generators/files/watir_file_generator.rb +0 -142
  51. data/spec/menu_generator_spec.rb +0 -8
  52. data/spec/selenium_file_generator_spec.rb +0 -29
  53. data/spec/watir_file_generator_spec.rb +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b0c6d3fae74a6d921b96f3aeb216fef51378824aa78a24cbb5f9bb8a2f7c22e
4
- data.tar.gz: 274ef6e35550c02473a6e6d6ffee85ca88f3a9279e379241da6b0177c7c1210e
3
+ metadata.gz: a9bd00a5bda20ac8d1d05adbe7fe90223dcdfe98f670b7a919a143d76cecbbea
4
+ data.tar.gz: bacd7bb799e99f97b00b06176299859661da195a62c534dc388f7edc7159f948
5
5
  SHA512:
6
- metadata.gz: 0bc058b73aff5b99a92a06220c5d6f84e3314fca9eb99cb8a02f983308f755de245c751133fc9f9357bad8836c7cf575e0dddfd9ee83c2231e2ed5934ad71dc2
7
- data.tar.gz: 5d45ba62bde3a8e3f317ec0392d3b7448b2b2ae56896f6d143916dcee9b4b37847b7fcc3e5e5dee2f1dcd8e1a735812744bc7c18943c08c4a130bffe0f653686
6
+ metadata.gz: 27ffb1a238e188672c991e8cc23b67e89efbe0c6254edffdd05de8e5523e4e928fab1b403de3c258dd24e4385a7452ecd32892815604a4494ab219ddad6c1fac
7
+ data.tar.gz: bc11ab83b8a776d9ccc49227dece33474039e1ef00636356d6d0224697a0bca7753f6b71e0a00d555c865d5d01c5b9504a81a1f0acfeaaf31f9092bef643dbd4
data/.gitignore CHANGED
@@ -1,2 +1,4 @@
1
1
  ruby_raider-*.gem
2
- .idea/
2
+ .idea/
3
+ ruby_raider.iml
4
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
data/README.md CHANGED
@@ -3,13 +3,18 @@ This is a gem to make setup and start of UI automation projects easier
3
3
 
4
4
  Just do:
5
5
 
6
- gem install ruby_raider
6
+ **gem install ruby_raider**
7
7
 
8
- then do raider [name_of_project]
8
+ then do:
9
+
10
+ **raider [name_of_project]**
9
11
 
10
12
  and you will have a new project in the folder you are in
11
13
 
12
- Currently we only support Watir with Rspec.
14
+ Currently we only support:
15
+
16
+ * Gerating a Selenium with Rspec framework
17
+ * Gerating a Watir with Rspec framework
13
18
 
14
19
  We have only tested this in mac and linux, so it works in both platforms.
15
20
 
data/bin/raider CHANGED
File without changes
@@ -0,0 +1,38 @@
1
+ require_relative 'file_generator'
2
+ require_relative '../templates/automation/abstract_page_template'
3
+ require_relative '../templates/automation/abstract_component_template'
4
+ require_relative '../templates/automation/component_template'
5
+ require_relative '../templates/automation/page_template'
6
+
7
+ module RubyRaider
8
+ class AutomationFileGenerator < FileGenerator
9
+ class << self
10
+ def generate_automation_files(name, automation, framework)
11
+ generate_example_page(automation, name)
12
+ generate_abstract_page(automation, framework, name)
13
+ generate_example_component(name)
14
+ generate_abstract_component(framework, name)
15
+ end
16
+
17
+ def generate_example_page(automation, name)
18
+ generate_file('login_page.rb', "#{name}/page_objects/pages",
19
+ PageTemplate.new(automation: automation, name: name).parsed_body)
20
+ end
21
+
22
+ def generate_abstract_page(automation, framework, name)
23
+ generate_file('abstract_page.rb', "#{name}/page_objects/abstract",
24
+ AbstractPageTemplate.new(automation: automation, framework: framework, name: name).parsed_body)
25
+ end
26
+
27
+ def generate_example_component(name)
28
+ generate_file('header_component.rb',"#{name}/page_objects/components",
29
+ ComponentTemplate.new.parsed_body)
30
+ end
31
+
32
+ def generate_abstract_component(framework, name)
33
+ generate_file('abstract_component.rb',"#{name}/page_objects/abstract",
34
+ AbstractComponentTemplate.new(framework: framework).parsed_body)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,134 +1,34 @@
1
+ require_relative '../templates/common/config_template'
2
+ require_relative '../templates/common/gemfile_template'
3
+ require_relative '../templates/common/rake_file_template'
4
+ require_relative '../templates/common/read_me_template'
1
5
  require_relative 'file_generator'
2
6
 
3
7
  module RubyRaider
4
8
  class CommonFileGenerator < FileGenerator
5
- def self.generate_common_files(name)
6
- generate_file('config.yml', "#{name}/config", config_file)
7
- generate_file('Rakefile', name.to_s, rake_file)
8
- generate_file('Readme.md', name.to_s, readme_file)
9
- end
10
-
11
- def self.readme_file
12
- rake_file = ERB.new <<~EOF
13
- What is Raider?
14
- ===========
15
-
16
- Raider is a tool to make the setup and start of automation projects in ruby easier, with one command you are
17
- ready to go
18
-
19
- # Pre-requisites:
20
-
21
- Install RVM:
22
- https://rvm.io/rvm/install
23
-
24
- # How to use the framework:
25
-
26
- If you want to run all the tests from your terminal do:
27
- *rspec spec/*
28
-
29
- If you want to run all the tests in parallel do:
30
- *parallel_rspec spec/*
31
-
32
- # How are specs organized:
33
-
34
- We use 'context' as the highest grouping level to indicate in which part of the application we are as an example:
35
-
36
- *context 'On the login page'/*
37
-
38
- We use 'describe' from the user perspective to describe an action that the user can or cannot take:
39
-
40
- *describe 'A user can'/*
41
-
42
- or
43
-
44
- *describe 'A user cannot'/*
45
-
46
- This saves us repetition and forces us into an structure
47
-
48
- At last we use 'it' for the specific action the user can or cannot perform:
49
-
50
- it 'login with right credentials'
51
-
52
- If we group all of this together it will look like
53
-
54
- ```ruby
55
- context 'On the login page' do
56
- describe 'A user can' do
57
- it 'login with the right credentials' do
58
- end
59
- #{' '}
60
- end
61
- #{' '}
62
- describe 'A user cannot' do
63
- it 'login with the wrong credentials' do
64
- end
65
- end
66
- end
67
- ```
68
- #{' '}
69
- This is readed as 'On the login page a user can login with the right credentials' and 'On the login page a user cannot login with the wrong credentials'
70
-
71
- # How pages are organized:
72
-
73
- ```ruby#{' '}
74
- require_relative '../abstract/base_page'
75
-
76
- class MainPage < BasePage
77
-
78
- using Raider::WatirHelper
79
-
80
- def url(_page)
81
- '/'
82
- end
83
-
84
- # Actions
85
-
86
- def change_currency(currency)
87
- currency_dropdown.select currency
88
- end
89
-
90
- # Validations
91
-
92
- def validate_currency(currency)
93
- expect(currency_dropdown.include?(currency)).to be true
94
- end
95
-
96
- private
97
-
98
- # Elements
99
-
100
- def currency_dropdown
101
- browser.select(class: %w[dropdown-menu currency])
102
- end
103
- end
104
- ```
105
-
106
- Pages are organized in Actions (things a user can perform on the page), Validations (assertions), and Elements.
107
- Each page has to have a url define, and each page is using the module WatirHelper to add methods on runtime to the Watir elements
108
-
109
- EOF
110
- rake_file.result(binding)
111
- end
112
-
113
- def self.config_file
114
- config_file = ERB.new <<~EOF
115
- browser: :chrome
116
- EOF
117
- config_file.result(binding)
118
- end
119
-
120
- def self.rake_file
121
- rake_file = ERB.new <<~EOF
122
- require 'yaml'
123
-
124
- desc 'Selects browser for automation run'
125
- task :select_browser, [:browser] do |_t, args|
126
- config = YAML.load_file('config/config.yml')
127
- config['browser'] = args.browser
128
- File.write('config/config.yml', config.to_yaml)
129
- end
130
- EOF
131
- rake_file.result(binding)
9
+ class << self
10
+ def generate_common_files(name, framework)
11
+ generate_config_file(name)
12
+ generate_rake_file(name)
13
+ generate_readme_file(name)
14
+ generate_gemfile(framework, name)
15
+ end
16
+
17
+ def generate_readme_file(name)
18
+ generate_file('Readme.md', name.to_s, ReadMeTemplate.new.parsed_body)
19
+ end
20
+
21
+ def generate_config_file(name)
22
+ generate_file('config.yml', "#{name}/config", ConfigTemplate.new.parsed_body)
23
+ end
24
+
25
+ def generate_rake_file(name)
26
+ generate_file('Rakefile', name.to_s, ConfigTemplate.new.parsed_body)
27
+ end
28
+
29
+ def generate_gemfile(framework, name)
30
+ generate_file('Gemfile',name.to_s, GemfileTemplate.new(framework: framework).parsed_body)
31
+ end
132
32
  end
133
33
  end
134
34
  end
@@ -0,0 +1,33 @@
1
+ require_relative '../templates/cucumber/env_template'
2
+ require_relative '../templates/cucumber/example_feature_template'
3
+ require_relative '../templates/cucumber/example_steps_template'
4
+ require_relative 'file_generator'
5
+
6
+ module RubyRaider
7
+ class CucumberFileGenerator < FileGenerator
8
+ class << self
9
+ def generate_cucumber_files(name, automation)
10
+ AutomationFileGenerator.generate_automation_files(name, automation, 'framework')
11
+ CommonFileGenerator.generate_common_files(name, 'cucumber')
12
+ HelpersFileGenerator.generate_helper_files(name, automation, 'cucumber')
13
+ generate_env_file(automation, name)
14
+ generate_example_feature(name)
15
+ generate_example_steps(name)
16
+ end
17
+
18
+ def generate_example_feature(name)
19
+ generate_file('login.feature', "#{name}/features", ExampleFeatureTemplate.new.parsed_body)
20
+ end
21
+
22
+ def generate_example_steps(name)
23
+ generate_file('login_steps.rb', "#{name}/features/step_definitions",
24
+ ExampleStepsTemplate.new.parsed_body)
25
+ end
26
+
27
+ def generate_env_file(automation, name)
28
+ generate_file('env.rb', "#{name}/features/support",
29
+ EnvTemplate.new(automation: automation).parsed_body)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,9 +1,11 @@
1
1
  module RubyRaider
2
2
  class FileGenerator
3
- def self.generate_file(name, path, content)
4
- file_path = "#{path}/#{name}"
5
- File.new(file_path, 'w+')
6
- File.write(file_path, content)
3
+ class << self
4
+ def generate_file(name, path, content)
5
+ file_path = "#{path}/#{name}"
6
+ File.new(file_path, 'w+')
7
+ File.write(file_path, content)
8
+ end
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,234 +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)
6
- generate_file('raider.rb', "#{name}/helpers", generate_raider_helper((automation)))
7
- generate_file('allure_helper.rb', "#{name}/helpers", generate_allure_helper)
8
- generate_file('pom_helper.rb', "#{name}/helpers", generate_pom_helper)
9
- generate_file('spec_helper.rb', "#{name}/helpers", generate_spec_helper((automation)))
10
- if automation == 'watir'
11
- generate_file('watir_helper.rb', "#{name}/helpers", generate_watir_helper)
12
- generate_file('browser_helper.rb', "#{name}/helpers", generate_browser_helper)
13
- else
14
- generate_file('selenium_helper.rb', "#{name}/helpers", generate_selenium_helper)
15
- generate_file('driver_helper.rb', "#{name}/helpers", generate_driver_helper)
16
- end
17
- end
18
-
19
- def self.generate_raider_helper(automation)
20
- spec = ERB.new <<~EOF
21
- module Raider
22
- require_relative 'spec_helper'
23
- require_relative '#{automation}_helper'
24
- require_relative 'pom_helper'
25
- require_relative '#{automation == 'watir' ? 'browser_helper' : 'driver_helper'}'
26
- require_relative 'allure_helper'
27
- end
28
- EOF
29
-
30
- spec.result(binding)
31
- end
32
-
33
- def self.generate_allure_helper
34
- spec = ERB.new <<~EOF
35
- require 'allure-ruby-commons'
36
- require 'allure-rspec'
37
-
38
- module Raider
39
- module AllureHelper
40
- class << self
41
-
42
- def configure
43
- AllureRspec.configure do |config|
44
- config.results_directory = 'allure-results'
45
- config.clean_results_directory = true
46
- end
47
- end
48
-
49
- def add_screenshot(name)
50
- Allure.add_attachment(
51
- name: name,
52
- source: File.open("allure-results/screenshots/#{name}.png"),
53
- type: Allure::ContentType::PNG,
54
- test_case: true
55
- )
56
- end
57
-
58
- def formatter
59
- AllureRspecFormatter
60
- end
61
- end
62
- end
63
- end
64
- EOF
65
- spec.result(binding)
66
- end
67
-
68
- def self.generate_browser_helper
69
- spec = ERB.new <<~EOF
70
- require 'yaml'
71
- require 'selenium-webdriver'
72
- require 'watir'
73
- require 'webdrivers'
74
-
75
- module Raider
76
- module BrowserHelper
77
- class << self
78
- attr_reader :browser
79
-
80
- def new_browser
81
- config = YAML.load_file('config/config.yml')
82
- @browser = Watir::Browser.new config['browser']
83
- end
84
- end
85
- end
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)
86
26
  end
87
- EOF
88
- spec.result(binding)
89
- end
90
-
91
- def self.generate_pom_helper
92
- spec = ERB.new <<~EOF
93
- module Raider
94
- module PomHelper
95
- def instance
96
- @instance ||= new
97
- end
98
-
99
- def method_missing(message, *args, &block)
100
- return super unless instance.respond_to?(message)
101
-
102
- instance.public_send(message, *args, &block)
103
- end
104
-
105
- def respond_to_missing?(method, *_args, &block)
106
- instance.respond_to?(method) || super
107
- end
108
- end
109
- end
110
- EOF
111
- spec.result(binding)
112
- end
113
-
114
- def self.generate_spec_helper(automation)
115
- spec = ERB.new <<~EOF
116
- require 'active_support/all'
117
- require 'rspec'
118
- require_relative 'allure_helper'
119
- require_relative '#{automation == 'watir' ? 'browser_helper' : 'driver_helper'}'
120
-
121
- module Raider
122
- module SpecHelper
123
-
124
- AllureHelper.configure
125
-
126
- RSpec.configure do |config|
127
- config.formatter = AllureHelper.formatter
128
- config.before(:each) do
129
- #{automation == 'watir' ? 'BrowserHelper.new_browser' : 'DriverHelper.new_driver'}
130
- end
131
-
132
- config.after(:each) do
133
- #{automation == 'watir' ? 'browser = BrowserHelper.browser' : 'driver = DriverHelper.driver'}
134
- example_name = self.class.descendant_filtered_examples.first.description
135
- status = self.class.descendant_filtered_examples.first.execution_result.status
136
- #{automation == 'watir' ? 'browser' : 'driver'}.save_screenshot("allure-results/screenshots/#\{example_name}.png") if status == :failed
137
- AllureHelper.add_screenshot example_name if status == :failed
138
- #{automation == 'watir' ? 'browser.quit' : 'driver.quit'}
139
- end
140
- end
141
- end
142
- end
143
- EOF
144
- spec.result(binding)
145
- end
146
-
147
- def self.generate_watir_helper
148
- spec = ERB.new <<~EOF
149
- require 'watir'
150
-
151
- module Raider
152
- module WatirHelper
153
- refine Watir::Element do
154
- def click_when_present
155
- wait_until_present
156
- self.click
157
- end
158
-
159
- def wait_until_present
160
- self.wait_until(&:present?)
161
- end
162
- end
163
- end
164
- end
165
- EOF
166
- spec.result(binding)
167
- end
168
-
169
- def self.generate_selenium_helper
170
- spec = ERB.new <<~EOF
171
- require 'selenium-webdriver'
172
- require_relative 'driver_helper'
173
-
174
- module ExampleDsl
175
- module SeleniumHelper
176
- def click_when_present
177
- # This is an example of an implicit wait in selenium
178
- wait = Selenium::WebDriver::Wait.new(timeout: 15)
179
- wait.until { present? }
180
- click
181
- end
182
-
183
- def select_by(key, value)
184
- # Creates new Select object to use the select by method
185
- dropdown = Selenium::WebDriver::Support::Select.new self
186
- dropdown.select_by(key, value)
187
- end
188
-
189
- def hover
190
- # Using actions to move the mouse over an element
191
- DriverHelper.driver.action.move_to(self).perform
192
- end
27
+ end
193
28
 
194
- # How to perform right click through the context click method
195
- def right_click
196
- DriverHelper.driver.action.context_click(self).perform
197
- end
198
- 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
199
33
 
200
- # Here we are opening the selenium class and adding our custom method
201
- class Selenium::WebDriver::Element
202
- include SeleniumHelper
203
- end
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
- EOF
207
- spec.result(binding)
208
- end
38
+ def generate_browser_helper(path)
39
+ generate_file('browser_helper.rb', path, BrowserHelperTemplate.new.parsed_body)
40
+ end
209
41
 
210
- def self.generate_driver_helper
211
- spec = ERB.new <<~EOF
212
- require 'selenium-webdriver'
213
- require 'watir'
214
- require 'webdrivers'
215
- require 'yaml'
42
+ def generate_pom_helper(path)
43
+ generate_file('pom_helper.rb', path, PomHelperTemplate.new.parsed_body)
44
+ end
216
45
 
217
- module Raider
218
- module DriverHelper
219
- class << self
220
- attr_reader :driver
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 new_driver
223
- @driver = Selenium::WebDriver.for :chrome
224
- end
225
- end
226
- end
227
- end
50
+ def generate_watir_helper(path)
51
+ generate_file('watir_helper.rb', path, WatirHelperTemplate.new.parsed_body)
52
+ end
228
53
 
54
+ def generate_selenium_helper(path)
55
+ generate_file('selenium_helper.rb', path, SeleniumHelperTemplate.new.parsed_body)
56
+ end
229
57
 
230
- EOF
231
- spec.result(binding)
58
+ def generate_driver_helper(path)
59
+ generate_file('driver_helper.rb', path, DriverHelperTemplate.new.parsed_body)
60
+ end
232
61
  end
233
62
  end
234
63
  end
@@ -1,63 +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 'selenium_file_generator'
5
- require_relative 'watir_file_generator'
6
7
 
7
8
  module RubyRaider
8
9
  class RspecFileGenerator < FileGenerator
9
- def self.generate_rspec_files(name, automation)
10
- CommonFileGenerator.generate_common_files(name)
11
- HelpersFileGenerator.generate_helper_files(name, automation)
12
- generate_file('login_page_spec.rb', "#{name}/spec", generate_example_spec)
13
- generate_file('base_spec.rb', "#{name}/spec", generate_base_spec)
14
- if automation == 'watir'
15
- WatirFileGenerator.generate_watir_files(name)
16
- else
17
- SeleniumFileGenerator.generate_selenium_files(name)
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)
18
17
  end
19
- end
20
-
21
- def self.generate_example_spec
22
- spec = ERB.new <<~EOF
23
- require_relative 'base_spec'
24
- require_relative '../page_objects/pages/login_page'
25
-
26
- class LoginSpec < BaseSpec
27
- context 'On the Login Page' do
28
-
29
- before(:each) do
30
- LoginPage.visit
31
- end
32
-
33
- describe 'A user can' do
34
- it 'login with the right credentials', :JIRA_123 do
35
- LoginPage.login('aguspe', '12341234')
36
- expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
37
- end
38
- end
39
18
 
40
- describe 'A user cannot' do
41
- it 'login with the wrong credentials', :JIRA_123 do
42
- LoginPage.login('aguspe', 'wrongPassword')
43
- expect(LoginPage.header.customer_name).to be_empty
44
- end
45
- end
46
- end
47
- end
48
- EOF
49
- spec.result(binding)
50
- end
51
-
52
- def self.generate_base_spec
53
- spec = ERB.new <<~EOF
54
- require_relative '../helpers/raider'
19
+ def generate_example_spec(name)
20
+ generate_file('login_page_spec.rb', "#{name}/spec", ExampleSpecTemplate.new.parsed_body)
21
+ end
55
22
 
56
- class BaseSpec
57
- include Raider::SpecHelper
58
- end
59
- EOF
60
- spec.result(binding)
23
+ def generate_base_spec(name)
24
+ generate_file('base_spec.rb', "#{name}/spec", BaseSpecTemplate.new.parsed_body)
25
+ end
61
26
  end
62
27
  end
63
28
  end