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.
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
@@ -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
@@ -1,8 +0,0 @@
1
- require_relative '../lib/generators/menu_generator'
2
-
3
- describe 'A menu is generated' do
4
- it 'generates a menu' do
5
- menu = RubyRaider::MenuGenerator.new
6
- menu.generate_choice_menu
7
- end
8
- end
@@ -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
-