ruby_raider 0.1.7 → 0.2.0

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/.reek.yml +3 -0
  3. data/.rubocop.yml +6 -0
  4. data/Rakefile +2 -0
  5. data/bin/raider +1 -0
  6. data/lib/generators/automation_generator.rb +43 -0
  7. data/lib/generators/common_generator.rb +31 -0
  8. data/lib/generators/cucumber_generator.rb +19 -0
  9. data/lib/generators/generator.rb +16 -0
  10. data/lib/generators/helper_generator.rb +48 -0
  11. data/lib/generators/menu_generator.rb +59 -31
  12. data/lib/generators/rspec_generator.rb +16 -0
  13. data/lib/generators/templates/automation/abstract_component.tt +7 -0
  14. data/lib/generators/templates/automation/abstract_page.tt +10 -0
  15. data/lib/generators/templates/automation/appium_settings.tt +8 -0
  16. data/lib/generators/templates/automation/component.tt +9 -0
  17. data/lib/generators/templates/automation/confirmation_page.tt +19 -0
  18. data/lib/generators/templates/automation/home_page.tt +20 -0
  19. data/lib/generators/templates/automation/login_page.tt +8 -0
  20. data/lib/generators/templates/automation/partials/appium_login.tt +28 -0
  21. data/lib/generators/templates/automation/partials/driver_selector.tt +9 -0
  22. data/lib/generators/templates/automation/partials/element.tt +5 -0
  23. data/lib/generators/templates/automation/partials/require_raider.tt +5 -0
  24. data/lib/generators/templates/automation/partials/selenium_login.tt +40 -0
  25. data/lib/generators/templates/automation/partials/url_methods.tt +13 -0
  26. data/lib/generators/templates/automation/partials/visit_method.tt +9 -0
  27. data/lib/generators/templates/automation/partials/watir_login.tt +41 -0
  28. data/lib/generators/templates/common/config.tt +1 -0
  29. data/lib/generators/templates/common/gemfile.tt +21 -0
  30. data/lib/generators/templates/common/partials/automation_gems.tt +10 -0
  31. data/lib/generators/templates/common/rakefile.tt +10 -0
  32. data/lib/generators/templates/common/read_me.tt +99 -0
  33. data/lib/generators/templates/cucumber/env.tt +8 -0
  34. data/lib/generators/templates/cucumber/feature.tt +6 -0
  35. data/lib/generators/templates/cucumber/partials/appium_env.tt +13 -0
  36. data/lib/generators/templates/cucumber/partials/mobile_steps.tt +17 -0
  37. data/lib/generators/templates/cucumber/partials/selenium_appium_env.tt +13 -0
  38. data/lib/generators/templates/cucumber/partials/watir_env.tt +13 -0
  39. data/lib/generators/templates/cucumber/partials/web_steps.tt +15 -0
  40. data/lib/generators/templates/cucumber/steps.tt +5 -0
  41. data/lib/generators/templates/helpers/allure_helper.tt +32 -0
  42. data/lib/generators/templates/helpers/browser_helper.tt +19 -0
  43. data/lib/generators/templates/helpers/driver_helper.tt +18 -0
  44. data/lib/generators/templates/helpers/partials/allure_imports.tt +5 -0
  45. data/lib/generators/templates/helpers/partials/allure_requirements.tt +6 -0
  46. data/lib/generators/templates/helpers/partials/driver_requirements.tt +14 -0
  47. data/lib/generators/templates/helpers/partials/new_driver.tt +11 -0
  48. data/lib/generators/templates/helpers/partials/quit_driver.tt +8 -0
  49. data/lib/generators/templates/helpers/partials/require_automation.tt +5 -0
  50. data/lib/generators/templates/helpers/partials/screenshot.tt +8 -0
  51. data/lib/generators/templates/helpers/pom_helper.tt +19 -0
  52. data/lib/generators/templates/helpers/raider_helper.tt +15 -0
  53. data/lib/generators/templates/helpers/selenium_helper.tt +36 -0
  54. data/lib/generators/templates/helpers/spec_helper.tt +37 -0
  55. data/lib/generators/templates/helpers/watir_helper.tt +16 -0
  56. data/lib/generators/templates/rspec/base_spec.tt +5 -0
  57. data/lib/generators/templates/rspec/spec.tt +37 -0
  58. data/lib/ruby_raider.rb +5 -4
  59. data/ruby_raider.gemspec +7 -1
  60. data/spec/automation_generator_spec.rb +192 -0
  61. data/spec/common_generator_spec.rb +141 -0
  62. data/spec/cucumber_generator_spec.rb +71 -0
  63. data/spec/helpers_generator_spec.rb +133 -0
  64. data/spec/rspec_generator_spec.rb +63 -0
  65. data/spec/spec_helper.rb +3 -3
  66. metadata +117 -41
  67. data/lib/generators/files/automation_file_generator.rb +0 -38
  68. data/lib/generators/files/common_file_generator.rb +0 -34
  69. data/lib/generators/files/cucumber_file_generator.rb +0 -33
  70. data/lib/generators/files/file_generator.rb +0 -11
  71. data/lib/generators/files/helpers_file_generator.rb +0 -63
  72. data/lib/generators/files/rspec_file_generator.rb +0 -28
  73. data/lib/generators/projects/cucumber_project_generator.rb +0 -26
  74. data/lib/generators/projects/project_generator.rb +0 -13
  75. data/lib/generators/projects/rspec_project_generator.rb +0 -22
  76. data/lib/generators/templates/automation/abstract_component_template.rb +0 -22
  77. data/lib/generators/templates/automation/abstract_page_template.rb +0 -48
  78. data/lib/generators/templates/automation/component_template.rb +0 -16
  79. data/lib/generators/templates/automation/page_template.rb +0 -51
  80. data/lib/generators/templates/common/config_template.rb +0 -9
  81. data/lib/generators/templates/common/gemfile_template.rb +0 -29
  82. data/lib/generators/templates/common/rake_file_template.rb +0 -16
  83. data/lib/generators/templates/common/read_me_template.rb +0 -104
  84. data/lib/generators/templates/cucumber/env_template.rb +0 -38
  85. data/lib/generators/templates/cucumber/example_feature_template.rb +0 -15
  86. data/lib/generators/templates/cucumber/example_steps_template.rb +0 -21
  87. data/lib/generators/templates/helpers/allure_helper_template.rb +0 -47
  88. data/lib/generators/templates/helpers/browser_helper_template.rb +0 -26
  89. data/lib/generators/templates/helpers/driver_helper_template.rb +0 -24
  90. data/lib/generators/templates/helpers/pom_helper_template.rb +0 -25
  91. data/lib/generators/templates/helpers/raider_helper_template.rb +0 -15
  92. data/lib/generators/templates/helpers/selenium_helper_template.rb +0 -42
  93. data/lib/generators/templates/helpers/spec_helper_template.rb +0 -35
  94. data/lib/generators/templates/helpers/watir_helper_template.rb +0 -24
  95. data/lib/generators/templates/rspec/base_spec_template.rb +0 -13
  96. data/lib/generators/templates/rspec/example_spec_template.rb +0 -33
  97. data/lib/generators/templates/template.rb +0 -14
  98. data/spec/automation_file_generator_spec.rb +0 -34
  99. data/spec/common_file_generator_spec.rb +0 -27
  100. data/spec/cucumber_file_generator_spec.rb +0 -26
  101. data/spec/cucumber_project_generator_spec.rb +0 -60
  102. data/spec/helpers_file_generator_spec.rb +0 -73
  103. data/spec/rspec_file_generator_spec.rb +0 -21
  104. data/spec/rspec_project_generator_spec.rb +0 -48
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_raider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-03 00:00:00.000000000 Z
11
+ date: 2022-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -24,6 +24,48 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 13.0.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: reek
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 6.1.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 6.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.27'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.27'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.9.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.9.0
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: rspec
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +94,20 @@ dependencies:
52
94
  - - "~>"
53
95
  - !ruby/object:Gem::Version
54
96
  version: 2.0.3
97
+ - !ruby/object:Gem::Dependency
98
+ name: thor
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.2.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.2.1
55
111
  description: This gem contents everything you need to start doing web automation in
56
112
  one simple package
57
113
  email: agustin.pe94@gmail.com
@@ -61,51 +117,71 @@ extensions: []
61
117
  extra_rdoc_files: []
62
118
  files:
63
119
  - ".gitignore"
120
+ - ".reek.yml"
121
+ - ".rubocop.yml"
64
122
  - Gemfile
65
123
  - README.md
66
124
  - Rakefile
67
125
  - bin/raider
68
- - lib/generators/files/automation_file_generator.rb
69
- - lib/generators/files/common_file_generator.rb
70
- - lib/generators/files/cucumber_file_generator.rb
71
- - lib/generators/files/file_generator.rb
72
- - lib/generators/files/helpers_file_generator.rb
73
- - lib/generators/files/rspec_file_generator.rb
126
+ - lib/generators/automation_generator.rb
127
+ - lib/generators/common_generator.rb
128
+ - lib/generators/cucumber_generator.rb
129
+ - lib/generators/generator.rb
130
+ - lib/generators/helper_generator.rb
74
131
  - lib/generators/menu_generator.rb
75
- - lib/generators/projects/cucumber_project_generator.rb
76
- - lib/generators/projects/project_generator.rb
77
- - lib/generators/projects/rspec_project_generator.rb
78
- - lib/generators/templates/automation/abstract_component_template.rb
79
- - lib/generators/templates/automation/abstract_page_template.rb
80
- - lib/generators/templates/automation/component_template.rb
81
- - lib/generators/templates/automation/page_template.rb
82
- - lib/generators/templates/common/config_template.rb
83
- - lib/generators/templates/common/gemfile_template.rb
84
- - lib/generators/templates/common/rake_file_template.rb
85
- - lib/generators/templates/common/read_me_template.rb
86
- - lib/generators/templates/cucumber/env_template.rb
87
- - lib/generators/templates/cucumber/example_feature_template.rb
88
- - lib/generators/templates/cucumber/example_steps_template.rb
89
- - lib/generators/templates/helpers/allure_helper_template.rb
90
- - lib/generators/templates/helpers/browser_helper_template.rb
91
- - lib/generators/templates/helpers/driver_helper_template.rb
92
- - lib/generators/templates/helpers/pom_helper_template.rb
93
- - lib/generators/templates/helpers/raider_helper_template.rb
94
- - lib/generators/templates/helpers/selenium_helper_template.rb
95
- - lib/generators/templates/helpers/spec_helper_template.rb
96
- - lib/generators/templates/helpers/watir_helper_template.rb
97
- - lib/generators/templates/rspec/base_spec_template.rb
98
- - lib/generators/templates/rspec/example_spec_template.rb
99
- - lib/generators/templates/template.rb
132
+ - lib/generators/rspec_generator.rb
133
+ - lib/generators/templates/automation/abstract_component.tt
134
+ - lib/generators/templates/automation/abstract_page.tt
135
+ - lib/generators/templates/automation/appium_settings.tt
136
+ - lib/generators/templates/automation/component.tt
137
+ - lib/generators/templates/automation/confirmation_page.tt
138
+ - lib/generators/templates/automation/home_page.tt
139
+ - lib/generators/templates/automation/login_page.tt
140
+ - lib/generators/templates/automation/partials/appium_login.tt
141
+ - lib/generators/templates/automation/partials/driver_selector.tt
142
+ - lib/generators/templates/automation/partials/element.tt
143
+ - lib/generators/templates/automation/partials/require_raider.tt
144
+ - lib/generators/templates/automation/partials/selenium_login.tt
145
+ - lib/generators/templates/automation/partials/url_methods.tt
146
+ - lib/generators/templates/automation/partials/visit_method.tt
147
+ - lib/generators/templates/automation/partials/watir_login.tt
148
+ - lib/generators/templates/common/config.tt
149
+ - lib/generators/templates/common/gemfile.tt
150
+ - lib/generators/templates/common/partials/automation_gems.tt
151
+ - lib/generators/templates/common/rakefile.tt
152
+ - lib/generators/templates/common/read_me.tt
153
+ - lib/generators/templates/cucumber/env.tt
154
+ - lib/generators/templates/cucumber/feature.tt
155
+ - lib/generators/templates/cucumber/partials/appium_env.tt
156
+ - lib/generators/templates/cucumber/partials/mobile_steps.tt
157
+ - lib/generators/templates/cucumber/partials/selenium_appium_env.tt
158
+ - lib/generators/templates/cucumber/partials/watir_env.tt
159
+ - lib/generators/templates/cucumber/partials/web_steps.tt
160
+ - lib/generators/templates/cucumber/steps.tt
161
+ - lib/generators/templates/helpers/allure_helper.tt
162
+ - lib/generators/templates/helpers/browser_helper.tt
163
+ - lib/generators/templates/helpers/driver_helper.tt
164
+ - lib/generators/templates/helpers/partials/allure_imports.tt
165
+ - lib/generators/templates/helpers/partials/allure_requirements.tt
166
+ - lib/generators/templates/helpers/partials/driver_requirements.tt
167
+ - lib/generators/templates/helpers/partials/new_driver.tt
168
+ - lib/generators/templates/helpers/partials/quit_driver.tt
169
+ - lib/generators/templates/helpers/partials/require_automation.tt
170
+ - lib/generators/templates/helpers/partials/screenshot.tt
171
+ - lib/generators/templates/helpers/pom_helper.tt
172
+ - lib/generators/templates/helpers/raider_helper.tt
173
+ - lib/generators/templates/helpers/selenium_helper.tt
174
+ - lib/generators/templates/helpers/spec_helper.tt
175
+ - lib/generators/templates/helpers/watir_helper.tt
176
+ - lib/generators/templates/rspec/base_spec.tt
177
+ - lib/generators/templates/rspec/spec.tt
100
178
  - lib/ruby_raider.rb
101
179
  - ruby_raider.gemspec
102
- - spec/automation_file_generator_spec.rb
103
- - spec/common_file_generator_spec.rb
104
- - spec/cucumber_file_generator_spec.rb
105
- - spec/cucumber_project_generator_spec.rb
106
- - spec/helpers_file_generator_spec.rb
107
- - spec/rspec_file_generator_spec.rb
108
- - spec/rspec_project_generator_spec.rb
180
+ - spec/automation_generator_spec.rb
181
+ - spec/common_generator_spec.rb
182
+ - spec/cucumber_generator_spec.rb
183
+ - spec/helpers_generator_spec.rb
184
+ - spec/rspec_generator_spec.rb
109
185
  - spec/spec_helper.rb
110
186
  homepage: http://github.com/aguspe/ruby_raider
111
187
  licenses:
@@ -126,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
202
  - !ruby/object:Gem::Version
127
203
  version: '0'
128
204
  requirements: []
129
- rubygems_version: 3.2.3
205
+ rubygems_version: 3.3.7
130
206
  signing_key:
131
207
  specification_version: 4
132
208
  summary: A gem to make setup and start of UI automation projects easier
@@ -1,38 +0,0 @@
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,34 +0,0 @@
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'
5
- require_relative 'file_generator'
6
-
7
- module RubyRaider
8
- class CommonFileGenerator < FileGenerator
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
32
- end
33
- end
34
- end
@@ -1,33 +0,0 @@
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,11 +0,0 @@
1
- module RubyRaider
2
- class FileGenerator
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
9
- end
10
- end
11
- end
@@ -1,63 +0,0 @@
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'
9
- require_relative 'file_generator'
10
-
11
- module RubyRaider
12
- class HelpersFileGenerator < FileGenerator
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)
26
- end
27
- end
28
-
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
33
-
34
- def generate_allure_helper(framework, path)
35
- generate_file('allure_helper.rb', path, AllureHelperTemplate.new(framework: framework).parsed_body)
36
- end
37
-
38
- def generate_browser_helper(path)
39
- generate_file('browser_helper.rb', path, BrowserHelperTemplate.new.parsed_body)
40
- end
41
-
42
- def generate_pom_helper(path)
43
- generate_file('pom_helper.rb', path, PomHelperTemplate.new.parsed_body)
44
- end
45
-
46
- def generate_spec_helper(automation, path)
47
- generate_file('spec_helper.rb', path, SpecHelperTemplate.new(automation: automation).parsed_body)
48
- end
49
-
50
- def generate_watir_helper(path)
51
- generate_file('watir_helper.rb', path, WatirHelperTemplate.new.parsed_body)
52
- end
53
-
54
- def generate_selenium_helper(path)
55
- generate_file('selenium_helper.rb', path, SeleniumHelperTemplate.new.parsed_body)
56
- end
57
-
58
- def generate_driver_helper(path)
59
- generate_file('driver_helper.rb', path, DriverHelperTemplate.new.parsed_body)
60
- end
61
- end
62
- end
63
- end
@@ -1,28 +0,0 @@
1
- require_relative '../templates/rspec/example_spec_template'
2
- require_relative '../templates/rspec/base_spec_template'
3
- require_relative 'automation_file_generator'
4
- require_relative 'common_file_generator'
5
- require_relative 'file_generator'
6
- require_relative 'helpers_file_generator'
7
-
8
- module RubyRaider
9
- class RspecFileGenerator < FileGenerator
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)
17
- end
18
-
19
- def generate_example_spec(name)
20
- generate_file('login_page_spec.rb', "#{name}/spec", ExampleSpecTemplate.new.parsed_body)
21
- end
22
-
23
- def generate_base_spec(name)
24
- generate_file('base_spec.rb', "#{name}/spec", BaseSpecTemplate.new.parsed_body)
25
- end
26
- end
27
- end
28
- end
@@ -1,26 +0,0 @@
1
- require_relative '../files/cucumber_file_generator'
2
- require_relative 'project_generator'
3
-
4
- module RubyRaider
5
- class CucumberProjectGenerator < ProjectGenerator
6
- class << self
7
- def generate_cucumber_project(name, automation: 'watir')
8
- cucumber_folder_structure(name)
9
- CucumberFileGenerator.generate_cucumber_files(name, automation)
10
- ProjectGenerator.install_gems(name)
11
- end
12
-
13
- def cucumber_folder_structure(name)
14
- Dir.mkdir name.to_s
15
- folders = %w[features config page_objects allure-results]
16
- create_children_folders("#{name}", folders)
17
- folders = %w[step_definitions support]
18
- create_children_folders("#{name}/features", folders)
19
- Dir.mkdir "#{name}/features/support/helpers"
20
- folders = %w[abstract pages components]
21
- create_children_folders("#{name}/page_objects", folders)
22
- Dir.mkdir "#{name}/allure-results/screenshots"
23
- end
24
- end
25
- end
26
- end
@@ -1,13 +0,0 @@
1
- module RubyRaider
2
- class ProjectGenerator
3
- class << self
4
- def create_children_folders(parent, folders)
5
- folders.each { |folder| Dir.mkdir "#{parent}/#{folder}" }
6
- end
7
-
8
- def install_gems(name)
9
- system "cd #{name} && gem install bundler && bundle install"
10
- end
11
- end
12
- end
13
- end
@@ -1,22 +0,0 @@
1
- require_relative 'project_generator'
2
- require_relative '../files/rspec_file_generator'
3
-
4
- module RubyRaider
5
- class RspecProjectGenerator < ProjectGenerator
6
- class << self
7
- def generate_rspec_project(name, automation: 'watir')
8
- rspec_folder_structure(name)
9
- RspecFileGenerator.generate_rspec_files(name, automation)
10
- ProjectGenerator.install_gems(name)
11
- end
12
-
13
- def rspec_folder_structure(name)
14
- Dir.mkdir name.to_s
15
- folders = %w[config data page_objects helpers spec]
16
- create_children_folders(name, folders)
17
- pages = %w[pages components abstract]
18
- create_children_folders("#{name}/page_objects", pages)
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- require_relative '../template'
2
-
3
- class AbstractComponentTemplate < Template
4
- def body
5
- raider = if @framework == 'rspec'
6
- "require_relative '../../helpers/raider'"
7
- else
8
- "require_relative '../../features/support/helpers/raider'"
9
- end
10
-
11
- <<~EOF
12
- #{raider}
13
-
14
- class AbstractComponent
15
-
16
- def initialize(component)
17
- @component = component
18
- end
19
- end
20
- EOF
21
- end
22
- end
@@ -1,48 +0,0 @@
1
- require_relative '../template'
2
-
3
- class AbstractPageTemplate < Template
4
- def body
5
- browser = "def browser
6
- Raider::BrowserHelper.browser
7
- end"
8
- driver = "def driver
9
- Raider::DriverHelper.driver
10
- end"
11
-
12
- visit = @automation == 'watir' ? 'browser.goto full_url(page.first)' : 'driver.navigate.to full_url(page.first)'
13
- raider = if @framework == 'rspec'
14
- "require_relative '../../helpers/raider'"
15
- else
16
- "require_relative '../../features/support/helpers/raider'"
17
- end
18
-
19
- <<~EOF
20
- require 'rspec'
21
- #{raider}
22
-
23
- class AbstractPage
24
-
25
- include RSpec::Matchers
26
- extend Raider::PomHelper
27
-
28
- #{@automation == 'watir' ? browser : driver}
29
-
30
- def visit(*page)
31
- #{visit}
32
- end
33
-
34
- def full_url(*page)
35
- "#\{base_url}#\{url(*page)}"
36
- end
37
-
38
- def base_url
39
- 'https://automationteststore.com/'
40
- end
41
-
42
- def url(_page)
43
- raise 'Url must be defined on child pages'
44
- end
45
- end
46
- EOF
47
- end
48
- end
@@ -1,16 +0,0 @@
1
- require_relative '../template'
2
-
3
- class ComponentTemplate < Template
4
- def body
5
- <<~EOF
6
- require_relative '../abstract/abstract_component'
7
-
8
- class HeaderComponent < AbstractComponent
9
-
10
- def customer_name
11
- @component.text
12
- end
13
- end
14
- EOF
15
- end
16
- end
@@ -1,51 +0,0 @@
1
- require_relative '../template'
2
-
3
- class PageTemplate < Template
4
- def body
5
- element = @automation == 'watir' ? 'browser.element' : 'driver.find_element'
6
- helper = @automation == 'watir' ? 'Raider::WatirHelper' : 'Raider::SeleniumHelper'
7
-
8
- <<~EOF
9
- require_relative '../abstract/abstract_page'
10
- require_relative '../components/header_component'
11
-
12
- class LoginPage < AbstractPage
13
- using #{helper}
14
-
15
- def url(_page)
16
- 'index.php?rt=account/login'
17
- end
18
-
19
- # Actions
20
-
21
- def login(username, password)
22
- username_field.send_keys username
23
- password_field.send_keys password
24
- login_button.click_when_present
25
- end
26
-
27
- # Components
28
-
29
- def header
30
- HeaderComponent.new(#{element}(class: 'menu_text'))
31
- end
32
-
33
- private
34
-
35
- # Elements
36
-
37
- def username_field
38
- #{element}(id: 'loginFrm_loginname')
39
- end
40
-
41
- def password_field
42
- #{element}(id: 'loginFrm_password')
43
- end
44
-
45
- def login_button
46
- #{element}(xpath: "//button[@title='Login']")
47
- end
48
- end
49
- EOF
50
- end
51
- end
@@ -1,9 +0,0 @@
1
- require_relative '../template'
2
-
3
- class ConfigTemplate < Template
4
- def body
5
- <<~EOF
6
- browser: :chrome
7
- EOF
8
- end
9
- end
@@ -1,29 +0,0 @@
1
- require_relative '../template'
2
-
3
- class GemfileTemplate < Template
4
- def body
5
- if @framework == 'cucumber'
6
- allure_cucumber = "gem 'allure-cucumber'"
7
- rspec = "gem 'rspec'"
8
- end
9
-
10
- <<~EOF
11
- # frozen_string_literal: true
12
-
13
- source 'https://rubygems.org'
14
-
15
- gem 'activesupport'
16
- gem 'allure-rspec'
17
- gem 'allure-ruby-commons'
18
- #{allure_cucumber}
19
- gem 'parallel_split_test'
20
- gem 'parallel_tests'
21
- gem 'rake'
22
- gem '#{@framework}'
23
- #{rspec}
24
- gem 'selenium-webdriver'
25
- gem 'watir'
26
- gem 'webdrivers'
27
- EOF
28
- end
29
- end