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