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
@@ -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
|
-
|