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.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/Gemfile +5 -0
- data/README.md +8 -3
- data/bin/raider +0 -0
- data/lib/generators/files/automation_file_generator.rb +38 -0
- data/lib/generators/files/common_file_generator.rb +27 -127
- data/lib/generators/files/cucumber_file_generator.rb +33 -0
- data/lib/generators/files/file_generator.rb +7 -5
- data/lib/generators/files/helpers_file_generator.rb +47 -218
- data/lib/generators/files/rspec_file_generator.rb +16 -51
- data/lib/generators/menu_generator.rb +15 -5
- data/lib/generators/projects/cucumber_project_generator.rb +20 -8
- data/lib/generators/projects/project_generator.rb +7 -5
- data/lib/generators/projects/rspec_project_generator.rb +13 -14
- 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/lib/ruby_raider.rb +3 -3
- data/ruby_raider.gemspec +4 -3
- data/spec/automation_file_generator_spec.rb +34 -0
- 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 +52 -15
- data/lib/generators/files/selenium_file_generator.rb +0 -159
- data/lib/generators/files/watir_file_generator.rb +0 -142
- data/spec/menu_generator_spec.rb +0 -8
- data/spec/selenium_file_generator_spec.rb +0 -29
- data/spec/watir_file_generator_spec.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9bd00a5bda20ac8d1d05adbe7fe90223dcdfe98f670b7a919a143d76cecbbea
|
4
|
+
data.tar.gz: bacd7bb799e99f97b00b06176299859661da195a62c534dc388f7edc7159f948
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27ffb1a238e188672c991e8cc23b67e89efbe0c6254edffdd05de8e5523e4e928fab1b403de3c258dd24e4385a7452ecd32892815604a4494ab219ddad6c1fac
|
7
|
+
data.tar.gz: bc11ab83b8a776d9ccc49227dece33474039e1ef00636356d6d0224697a0bca7753f6b71e0a00d555c865d5d01c5b9504a81a1f0acfeaaf31f9092bef643dbd4
|
data/.gitignore
CHANGED
data/Gemfile
ADDED
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
|
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
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
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
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
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
|
-
|
201
|
-
|
202
|
-
|
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
|
-
|
207
|
-
|
208
|
-
|
38
|
+
def generate_browser_helper(path)
|
39
|
+
generate_file('browser_helper.rb', path, BrowserHelperTemplate.new.parsed_body)
|
40
|
+
end
|
209
41
|
|
210
|
-
|
211
|
-
|
212
|
-
|
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
|
-
|
218
|
-
|
219
|
-
|
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
|
-
|
223
|
-
|
224
|
-
|
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
|
-
|
231
|
-
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
57
|
-
|
58
|
-
|
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
|