ruby_raider 0.1.2 → 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 (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