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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/lib/generators/files/automation_file_generator.rb +31 -130
- data/lib/generators/files/common_file_generator.rb +22 -150
- 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 +46 -227
- data/lib/generators/files/rspec_file_generator.rb +19 -49
- data/lib/generators/projects/cucumber_project_generator.rb +17 -15
- data/lib/generators/projects/project_generator.rb +7 -5
- data/lib/generators/projects/rspec_project_generator.rb +13 -11
- data/lib/generators/templates/automation/abstract_component_template.rb +22 -0
- data/lib/generators/templates/automation/abstract_page_template.rb +48 -0
- data/lib/generators/templates/automation/component_template.rb +16 -0
- data/lib/generators/templates/automation/page_template.rb +51 -0
- data/lib/generators/templates/common/config_template.rb +9 -0
- data/lib/generators/templates/common/gemfile_template.rb +29 -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 +24 -0
- data/lib/generators/templates/helpers/pom_helper_template.rb +25 -0
- data/lib/generators/templates/helpers/raider_helper_template.rb +15 -0
- data/lib/generators/templates/helpers/selenium_helper_template.rb +42 -0
- data/lib/generators/templates/helpers/spec_helper_template.rb +35 -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 +33 -0
- data/lib/generators/templates/template.rb +14 -0
- data/ruby_raider.gemspec +1 -1
- data/spec/automation_file_generator_spec.rb +14 -5
- 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 +18 -9
- data/spec/spec_helper.rb +2 -12
- metadata +26 -3
- 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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
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
|
-
|
202
|
-
|
203
|
-
|
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
|
-
|
207
|
-
|
208
|
-
|
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
|
-
|
213
|
-
|
214
|
-
|
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
|
-
|
219
|
-
|
220
|
-
|
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
|
-
|
223
|
-
|
224
|
-
|
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
|
-
|
230
|
-
|
231
|
-
|
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
|
-
|
235
|
-
|
236
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
3
|
+
class << self
|
4
|
+
def create_children_folders(parent, folders)
|
5
|
+
folders.each { |folder| Dir.mkdir "#{parent}/#{folder}" }
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
-
|
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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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,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
|