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.
- 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
@@ -1,159 +0,0 @@
|
|
1
|
-
require_relative 'file_generator'
|
2
|
-
|
3
|
-
module RubyRaider
|
4
|
-
class SeleniumFileGenerator < FileGenerator
|
5
|
-
def self.generate_selenium_files(name)
|
6
|
-
generate_file('abstract_page.rb', "#{name}/page_objects/abstract", abstract_page)
|
7
|
-
generate_file('abstract_page_object.rb', "#{name}/page_objects/abstract", abstract_page_object)
|
8
|
-
generate_file('abstract_component.rb', "#{name}/page_objects/abstract", abstract_component)
|
9
|
-
generate_file('login_page.rb', "#{name}/page_objects/pages", example_page)
|
10
|
-
generate_file('header_component.rb', "#{name}/page_objects/components", example_component)
|
11
|
-
generate_file('Gemfile', name.to_s, gemfile_template)
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.gemfile_template
|
15
|
-
gemfile = ERB.new <<~EOF
|
16
|
-
# frozen_string_literal: true
|
17
|
-
|
18
|
-
source 'https://rubygems.org'
|
19
|
-
|
20
|
-
gem 'activesupport'
|
21
|
-
gem 'allure-rspec'
|
22
|
-
gem 'allure-ruby-commons'
|
23
|
-
gem 'parallel_split_test'
|
24
|
-
gem 'parallel_tests'
|
25
|
-
gem 'rake'
|
26
|
-
gem 'rspec'
|
27
|
-
gem 'selenium-webdriver'
|
28
|
-
gem 'webdrivers'
|
29
|
-
|
30
|
-
EOF
|
31
|
-
gemfile.result(binding)
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.example_page
|
35
|
-
gemfile = ERB.new <<~EOF
|
36
|
-
require_relative '../abstract/abstract_page'
|
37
|
-
require_relative '../components/header_component'
|
38
|
-
require_relative '../../helpers/selenium_helper'
|
39
|
-
|
40
|
-
class LoginPage < AbstractPage
|
41
|
-
|
42
|
-
def url(_page)
|
43
|
-
'index.php?rt=account/login'
|
44
|
-
end
|
45
|
-
|
46
|
-
# Actions
|
47
|
-
|
48
|
-
def login(username, password)
|
49
|
-
username_field.send_keys username
|
50
|
-
password_field.send_keys password
|
51
|
-
login_button.click_when_present
|
52
|
-
end
|
53
|
-
|
54
|
-
def header
|
55
|
-
HeaderComponent.new(driver.find_element(class: 'menu_text'))
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
# Elements
|
61
|
-
|
62
|
-
def username_field
|
63
|
-
driver.find_element(id: 'loginFrm_loginname')
|
64
|
-
end
|
65
|
-
|
66
|
-
def password_field
|
67
|
-
driver.find_element(id: 'loginFrm_password')
|
68
|
-
end
|
69
|
-
|
70
|
-
def login_button
|
71
|
-
driver.find_element(xpath: "//button[@title='Login']")
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
EOF
|
78
|
-
gemfile.result(binding)
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.abstract_page
|
82
|
-
abstract_file = ERB.new <<~EOF
|
83
|
-
require_relative '../components/header_component'
|
84
|
-
require_relative 'abstract_page_object'
|
85
|
-
require 'rspec'
|
86
|
-
|
87
|
-
class AbstractPage < AbstractPageObject
|
88
|
-
include RSpec::Matchers
|
89
|
-
|
90
|
-
def visit(*page)
|
91
|
-
driver.navigate.to full_url(page.first)
|
92
|
-
end
|
93
|
-
|
94
|
-
def full_url(*page)
|
95
|
-
"\#{base_url}\#{url(*page)}"
|
96
|
-
end
|
97
|
-
|
98
|
-
def base_url
|
99
|
-
'https://automationteststore.com/'
|
100
|
-
end
|
101
|
-
|
102
|
-
def url(_page)
|
103
|
-
raise 'Url must be defined on child pages'
|
104
|
-
end
|
105
|
-
|
106
|
-
def header
|
107
|
-
HeaderComponent.new(driver.find_element(css: 'header'))
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
EOF
|
112
|
-
abstract_file.result(binding)
|
113
|
-
end
|
114
|
-
|
115
|
-
def self.abstract_component
|
116
|
-
abstract_file = ERB.new <<~EOF
|
117
|
-
require_relative '../../helpers/raider'
|
118
|
-
|
119
|
-
class AbstractComponent
|
120
|
-
def initialize(component)
|
121
|
-
@component = component
|
122
|
-
end
|
123
|
-
end
|
124
|
-
EOF
|
125
|
-
abstract_file.result(binding)
|
126
|
-
end
|
127
|
-
|
128
|
-
def self.abstract_page_object
|
129
|
-
abstract_file = ERB.new <<~EOF
|
130
|
-
require_relative '../../helpers/raider'
|
131
|
-
|
132
|
-
class AbstractPageObject
|
133
|
-
extend Raider::PomHelper
|
134
|
-
|
135
|
-
def driver
|
136
|
-
Raider::DriverHelper.driver
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
EOF
|
141
|
-
abstract_file.result(binding)
|
142
|
-
end
|
143
|
-
|
144
|
-
def self.example_component
|
145
|
-
page_file = ERB.new <<~EOF
|
146
|
-
require_relative '../abstract/abstract_component'
|
147
|
-
|
148
|
-
class HeaderComponent < AbstractComponent
|
149
|
-
|
150
|
-
def customer_name
|
151
|
-
@component.text
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
EOF
|
156
|
-
page_file.result(binding)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
@@ -1,142 +0,0 @@
|
|
1
|
-
require_relative 'file_generator'
|
2
|
-
|
3
|
-
module RubyRaider
|
4
|
-
class WatirFileGenerator < FileGenerator
|
5
|
-
def self.generate_watir_files(name)
|
6
|
-
generate_file('abstract_page.rb', "#{name}/page_objects/abstract", abstract_page)
|
7
|
-
generate_file('abstract_component.rb', "#{name}/page_objects/abstract", abstract_component)
|
8
|
-
generate_file('login_page.rb', "#{name}/page_objects/pages", example_page)
|
9
|
-
generate_file('header_component.rb', "#{name}/page_objects/components", example_component)
|
10
|
-
generate_file('Gemfile', name.to_s, gemfile_template)
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.gemfile_template
|
14
|
-
gemfile = ERB.new <<~EOF
|
15
|
-
# frozen_string_literal: true
|
16
|
-
|
17
|
-
source 'https://rubygems.org'
|
18
|
-
|
19
|
-
gem 'activesupport'
|
20
|
-
gem 'allure-rspec'
|
21
|
-
gem 'allure-ruby-commons'
|
22
|
-
gem 'parallel_split_test'
|
23
|
-
gem 'parallel_tests'
|
24
|
-
gem 'rake'
|
25
|
-
gem 'rspec'
|
26
|
-
gem 'selenium-webdriver'
|
27
|
-
gem 'watir'
|
28
|
-
gem 'webdrivers'
|
29
|
-
EOF
|
30
|
-
gemfile.result(binding)
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.example_page
|
34
|
-
page_file = ERB.new <<~EOF
|
35
|
-
require_relative '../abstract/abstract_page'
|
36
|
-
require_relative '../components/header_component'
|
37
|
-
|
38
|
-
class LoginPage < AbstractPage
|
39
|
-
|
40
|
-
using Raider::WatirHelper
|
41
|
-
|
42
|
-
def url(_page)
|
43
|
-
'index.php?rt=account/login'
|
44
|
-
end
|
45
|
-
|
46
|
-
# Actions
|
47
|
-
|
48
|
-
def login(username, password)
|
49
|
-
username_field.set username
|
50
|
-
password_field.set password
|
51
|
-
login_button.click_when_present
|
52
|
-
end
|
53
|
-
|
54
|
-
# Components
|
55
|
-
|
56
|
-
def header
|
57
|
-
HeaderComponent.new(browser.element(class: 'menu_text'))
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
# Elements
|
63
|
-
|
64
|
-
def username_field
|
65
|
-
browser.text_field(id: 'loginFrm_loginname')
|
66
|
-
end
|
67
|
-
|
68
|
-
def password_field
|
69
|
-
browser.text_field(id: 'loginFrm_password')
|
70
|
-
end
|
71
|
-
|
72
|
-
def login_button
|
73
|
-
browser.button(visible_text: 'Login')
|
74
|
-
end
|
75
|
-
end
|
76
|
-
EOF
|
77
|
-
page_file.result(binding)
|
78
|
-
end
|
79
|
-
|
80
|
-
def self.abstract_page
|
81
|
-
abstract_file = ERB.new <<~EOF
|
82
|
-
require 'rspec'
|
83
|
-
require_relative '../../helpers/raider'
|
84
|
-
|
85
|
-
class AbstractPage
|
86
|
-
|
87
|
-
include RSpec::Matchers
|
88
|
-
extend Raider::PomHelper
|
89
|
-
|
90
|
-
def browser
|
91
|
-
Raider::BrowserHelper.browser
|
92
|
-
end
|
93
|
-
|
94
|
-
def visit(*page)
|
95
|
-
browser.goto full_url(page.first)
|
96
|
-
end
|
97
|
-
|
98
|
-
def full_url(*page)
|
99
|
-
"#\{base_url}#\{url(*page)}"
|
100
|
-
end
|
101
|
-
|
102
|
-
def base_url
|
103
|
-
'https://automationteststore.com/'
|
104
|
-
end
|
105
|
-
|
106
|
-
def url(_page)
|
107
|
-
raise 'Url must be defined on child pages'
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
EOF
|
112
|
-
abstract_file.result(binding)
|
113
|
-
end
|
114
|
-
|
115
|
-
def self.example_component
|
116
|
-
page_file = ERB.new <<~EOF
|
117
|
-
require_relative '../abstract/abstract_component'
|
118
|
-
|
119
|
-
class HeaderComponent < AbstractComponent
|
120
|
-
|
121
|
-
def customer_name
|
122
|
-
@component.text
|
123
|
-
end
|
124
|
-
end
|
125
|
-
EOF
|
126
|
-
page_file.result(binding)
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.abstract_component
|
130
|
-
abstract_file = ERB.new <<~EOF
|
131
|
-
require_relative '../../helpers/raider'
|
132
|
-
|
133
|
-
class AbstractComponent
|
134
|
-
def initialize(component)
|
135
|
-
@component = component
|
136
|
-
end
|
137
|
-
end
|
138
|
-
EOF
|
139
|
-
abstract_file.result(binding)
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
data/spec/menu_generator_spec.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require_relative '../lib/generators/files/selenium_file_generator'
|
2
|
-
require_relative 'spec_helper'
|
3
|
-
|
4
|
-
describe RubyRaider::SeleniumFileGenerator do
|
5
|
-
it 'creates a login page file' do
|
6
|
-
expect(File.exist?("#{@project_name}/page_objects/pages/login_page.rb")).to be_truthy
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'creates an abstract page file' do
|
10
|
-
expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_page.rb")).to be_truthy
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'creates an abstract page object file' do
|
14
|
-
expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_page_object.rb")).to be_truthy
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'creates an abstract component file' do
|
18
|
-
expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_component.rb")).to be_truthy
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'creates a component file' do
|
22
|
-
expect(File.exist?("#{@project_name}/page_objects/components/header_component.rb")).to be_truthy
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'creates a gemfile file' do
|
26
|
-
expect(File.exist?("#{@project_name}/Gemfile")).to be_truthy
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative '../lib/generators/files/watir_file_generator'
|
2
|
-
require_relative 'spec_helper'
|
3
|
-
|
4
|
-
describe RubyRaider::WatirFileGenerator do
|
5
|
-
it 'creates a login page file' do
|
6
|
-
expect(File.exist?("#{@project_name}/page_objects/pages/login_page.rb")).to be_truthy
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'creates an abstract page file' do
|
10
|
-
expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_page.rb")).to be_truthy
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'creates an abstract component file' do
|
14
|
-
expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_component.rb")).to be_truthy
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'creates a component file' do
|
18
|
-
expect(File.exist?("#{@project_name}/page_objects/components/header_component.rb")).to be_truthy
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'creates a gemfile file' do
|
22
|
-
expect(File.exist?("#{@project_name}/Gemfile")).to be_truthy
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|