ruby_raider 0.2.4 → 0.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c0c4cf8a75198f325205717636b170bab8a39bc902f771cdfcf36c6a2bc173b
4
- data.tar.gz: e8751cfcbf8e84c5f718229d877f3af0b273dca653720f65225b41aac5c3d55f
3
+ metadata.gz: 7988213b2be1daa32759ff975e5dca3ffd00705745ea9e0f78fdfb1f0148cbc8
4
+ data.tar.gz: 59324df2b000cfe2687b4ed02bd005577236aa36d2ac8069d52c87f4d5d5a4b1
5
5
  SHA512:
6
- metadata.gz: b535249743c0d94b4f7119e16ffd1331f47a114a87a6b9b4ab88fee899ac1ff1c449a60b67378759e3656a02c82e9a191506edbb81d7a34e2ed13385f2e7f2ee
7
- data.tar.gz: 84235df018f46c8864d2a2985017231f73ce7d3e367e93318cc69a81fa6bcb3a5efeac0a23c542c19f78227f0d5388ec2cd8474bbc0adbb598249348809fb55a
6
+ metadata.gz: a9c95ba5afce93e67e7f7f563d96228ec34d3f91b093e6eb7168c1c56a421ab887c2aa1df4e29da89ea17a18ad9e72857b17c535762b9a519e459bc205393151
7
+ data.tar.gz: 58ce8f269ef6972486473f3b710ad0060d3b40144d6874b3fadc6a4420a4f9f54d7b43ce996a542e3ea0ec28ea83edf333ba14e445f276c2ea59a08bf4ce0cf5
data/Rakefile CHANGED
@@ -4,5 +4,12 @@ require_relative 'lib/ruby_raider'
4
4
 
5
5
  desc 'Create a new test projects'
6
6
  task :new, [:name] do |_t, args|
7
- RubyRaider.generate_project(args.name)
7
+ RubyRaider.start
8
+ RubyRaider.new(args.name)
8
9
  end
10
+
11
+ desc 'Create a page'
12
+ task :page, [:name] do |_t, args|
13
+ RubyRaider.start
14
+ RubyRaider.page(args.page)
15
+ end
data/bin/raider CHANGED
@@ -3,4 +3,4 @@
3
3
 
4
4
  require_relative '../lib/ruby_raider'
5
5
 
6
- RubyRaider.generate_project ARGV[0]
6
+ RubyRaider.start
@@ -2,44 +2,42 @@
2
2
 
3
3
  require_relative 'generator'
4
4
 
5
- module RubyRaider
6
- class AutomationGenerator < Generator
7
- def generate_login_page
8
- template('automation/login_page.tt', "#{name}/page_objects/pages/login_page.rb")
9
- end
5
+ class AutomationGenerator < Generator
6
+ def generate_login_page
7
+ template('automation/login_page.tt', "#{name}/page_objects/pages/login_page.rb")
8
+ end
10
9
 
11
- def generate_abstract_page
12
- template('automation/abstract_page.tt', "#{name}/page_objects/abstract/abstract_page.rb")
13
- end
10
+ def generate_abstract_page
11
+ template('automation/abstract_page.tt', "#{name}/page_objects/abstract/abstract_page.rb")
12
+ end
14
13
 
15
- def generate_home_page
16
- if @_initializer.first.include?('appium_ios')
17
- template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
18
- end
14
+ def generate_home_page
15
+ if @_initializer.first.include?('appium_ios')
16
+ template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
19
17
  end
18
+ end
20
19
 
21
- def generate_header_component
22
- unless @_initializer.first.include?('appium_ios')
23
- template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
24
- end
20
+ def generate_header_component
21
+ unless @_initializer.first.include?('appium_ios')
22
+ template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
25
23
  end
24
+ end
26
25
 
27
- def generate_abstract_component
28
- unless @_initializer.first.include?('appium_ios')
29
- template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
30
- end
26
+ def generate_abstract_component
27
+ unless @_initializer.first.include?('appium_ios')
28
+ template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
31
29
  end
30
+ end
32
31
 
33
- def generate_confirmation_page
34
- if @_initializer.first.include?('appium_ios')
35
- template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
36
- end
32
+ def generate_confirmation_page
33
+ if @_initializer.first.include?('appium_ios')
34
+ template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
37
35
  end
36
+ end
38
37
 
39
- def generate_appium_settings
40
- if @_initializer.first.include?('appium_ios')
41
- template('automation/appium_settings.tt', "#{name}/appium.txt")
42
- end
38
+ def generate_appium_settings
39
+ if @_initializer.first.include?('appium_ios')
40
+ template('automation/appium_settings.tt', "#{name}/appium.txt")
43
41
  end
44
42
  end
45
43
  end
@@ -2,30 +2,29 @@
2
2
 
3
3
  require_relative 'generator'
4
4
 
5
- module RubyRaider
6
- class CommonGenerator < Generator
7
- def generate_readme_file
8
- template('common/read_me.tt', "#{name}/Readme.md")
9
- end
10
-
11
- def generate_config_file
12
- template('common/config.tt', "#{name}/config/config.yml")
13
- end
14
-
15
- def generate_rake_file
16
- template('common/rakefile.tt', "#{name}/Rakefile")
17
- end
18
-
19
- def generate_gemfile
20
- template('common/gemfile.tt', "#{name}/Gemfile")
21
- end
22
-
23
- def create_allure_folder
24
- empty_directory "#{name}/allure-results"
25
- end
26
-
27
- def create_screenshots_folder
28
- empty_directory "#{name}/allure-results/screenshots"
29
- end
30
- end
5
+ class CommonGenerator < Generator
6
+ def generate_readme_file
7
+ template('common/read_me.tt', "#{name}/Readme.md")
8
+ end
9
+
10
+ def generate_config_file
11
+ template('common/config.tt', "#{name}/config/config.yml")
12
+ end
13
+
14
+ def generate_rake_file
15
+ template('common/rakefile.tt', "#{name}/Rakefile")
16
+ end
17
+
18
+ def generate_gemfile
19
+ template('common/gemfile.tt', "#{name}/Gemfile")
20
+ end
21
+
22
+ def create_allure_folder
23
+ empty_directory "#{name}/allure-results"
24
+ end
25
+
26
+ def create_screenshots_folder
27
+ empty_directory "#{name}/allure-results/screenshots"
28
+ end
31
29
  end
30
+
@@ -2,18 +2,17 @@
2
2
 
3
3
  require_relative 'generator'
4
4
 
5
- module RubyRaider
6
- class CucumberGenerator < Generator
7
- def generate_feature
8
- template('cucumber/feature.tt', "#{name}/features/login.feature")
9
- end
5
+ class CucumberGenerator < Generator
6
+ def generate_feature
7
+ template('cucumber/feature.tt', "#{name}/features/login.feature")
8
+ end
10
9
 
11
- def generate_steps
12
- template('cucumber/steps.tt', "#{name}/features/step_definitions/login_steps.rb")
13
- end
10
+ def generate_steps
11
+ template('cucumber/steps.tt', "#{name}/features/step_definitions/login_steps.rb")
12
+ end
14
13
 
15
- def generate_env_file
16
- template('cucumber/env.tt', "#{name}/features/support/env.rb")
17
- end
14
+ def generate_env_file
15
+ template('cucumber/env.tt', "#{name}/features/support/env.rb")
18
16
  end
19
17
  end
18
+
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
  require 'thor'
3
3
 
4
- module RubyRaider
5
- class Generator < Thor::Group
6
- include Thor::Actions
4
+ class Generator < Thor::Group
5
+ include Thor::Actions
7
6
 
8
- argument :automation
9
- argument :framework
10
- argument :name
7
+ argument :automation
8
+ argument :framework
9
+ argument :name
11
10
 
12
- def self.source_root
13
- File.dirname(__FILE__) + '/templates'
14
- end
11
+ def self.source_root
12
+ File.dirname(__FILE__) + '/templates'
15
13
  end
16
14
  end
15
+
@@ -2,39 +2,37 @@
2
2
 
3
3
  require_relative 'generator'
4
4
 
5
- module RubyRaider
6
- class HelpersGenerator < Generator
5
+ class HelpersGenerator < Generator
7
6
 
8
- def generate_raider_helper
9
- template('helpers/raider_helper.tt', "#{name}/helpers/raider.rb")
10
- end
7
+ def generate_raider_helper
8
+ template('helpers/raider_helper.tt', "#{name}/helpers/raider.rb")
9
+ end
11
10
 
12
- def generate_allure_helper
13
- template('helpers/allure_helper.tt', "#{name}/helpers/allure_helper.rb")
14
- end
11
+ def generate_allure_helper
12
+ template('helpers/allure_helper.tt', "#{name}/helpers/allure_helper.rb")
13
+ end
15
14
 
16
- def generate_browser_helper
17
- if @_initializer.first.include?('watir')
18
- template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
19
- end
15
+ def generate_browser_helper
16
+ if @_initializer.first.include?('watir')
17
+ template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
20
18
  end
19
+ end
21
20
 
22
- def generate_spec_helper
23
- if @_initializer.first.include?('rspec')
24
- template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
25
- end
21
+ def generate_spec_helper
22
+ if @_initializer.first.include?('rspec')
23
+ template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
26
24
  end
25
+ end
27
26
 
28
- def generate_selenium_helper
29
- if @_initializer.first.include?('selenium')
30
- template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
31
- end
27
+ def generate_selenium_helper
28
+ if @_initializer.first.include?('selenium')
29
+ template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
32
30
  end
31
+ end
33
32
 
34
- def generate_driver_helper
35
- unless @_initializer.first.include?('watir')
36
- template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
37
- end
33
+ def generate_driver_helper
34
+ unless @_initializer.first.include?('watir')
35
+ template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
38
36
  end
39
37
  end
40
38
  end
@@ -7,66 +7,64 @@ require_relative 'cucumber_generator'
7
7
  require_relative 'helper_generator'
8
8
  require_relative 'rspec_generator'
9
9
 
10
- module RubyRaider
11
- class MenuGenerator
12
- class << self
13
- def generate_choice_menu(project_name)
14
- @cli = HighLine.new
15
- @cli.choose do |menu|
16
- menu.prompt = 'Please select your automation framework'
17
- menu.choice('Selenium') { choose_test_framework('selenium', project_name) }
18
- menu.choice('Watir') { choose_test_framework('watir', project_name) }
19
- menu.choice('Appium') { choose_test_framework('appium', project_name) }
20
- menu.choice('Quit') { exit }
21
- end
10
+ class MenuGenerator
11
+ class << self
12
+ def generate_choice_menu(project_name)
13
+ @cli = HighLine.new
14
+ @cli.choose do |menu|
15
+ menu.prompt = 'Please select your automation framework'
16
+ menu.choice('Selenium') { choose_test_framework('selenium', project_name) }
17
+ menu.choice('Watir') { choose_test_framework('watir', project_name) }
18
+ menu.choice('Appium') { choose_test_framework('appium', project_name) }
19
+ menu.choice('Quit') { exit }
22
20
  end
21
+ end
23
22
 
24
- def choose_test_framework(automation, project_name)
25
- system('clear') || system('cls')
26
- sleep 0.3
27
- automation = automation == 'appium' ? choose_mobile_platform : automation
28
- framework = ''
29
- @cli.choose do |menu|
30
- menu.prompt = 'Please select your test framework'
31
- menu.choice('Rspec') do
32
- framework = 'rspec'
33
- set_framework(automation, framework, project_name)
34
- end
35
- menu.choice('Cucumber') do
36
- framework = 'cucumber'
37
- set_framework(automation, framework, project_name)
38
- end
39
- menu.choice('Quit') { exit }
23
+ def choose_test_framework(automation, project_name)
24
+ system('clear') || system('cls')
25
+ sleep 0.3
26
+ automation = automation == 'appium' ? choose_mobile_platform : automation
27
+ framework = ''
28
+ @cli.choose do |menu|
29
+ menu.prompt = 'Please select your test framework'
30
+ menu.choice('Rspec') do
31
+ framework = 'rspec'
32
+ set_framework(automation, framework, project_name)
40
33
  end
41
- @cli.say("You have chosen to use #{framework} with #{automation}")
34
+ menu.choice('Cucumber') do
35
+ framework = 'cucumber'
36
+ set_framework(automation, framework, project_name)
37
+ end
38
+ menu.choice('Quit') { exit }
42
39
  end
40
+ @cli.say("You have chosen to use #{framework} with #{automation}")
41
+ end
43
42
 
44
- def set_framework(automation, framework, project_name)
45
- if framework == 'rspec'
46
- RspecGenerator.new([automation, framework, project_name]).invoke_all
47
- else
48
- CucumberGenerator.new([automation, framework, project_name]).invoke_all
49
- end
50
- AutomationGenerator.new([automation, framework, project_name]).invoke_all
51
- CommonGenerator.new([automation, framework, project_name]).invoke_all
52
- HelpersGenerator.new([automation, framework, project_name]).invoke_all
53
- system "cd #{project_name} && gem install bundler && bundle install"
43
+ def set_framework(automation, framework, project_name)
44
+ if framework == 'rspec'
45
+ RspecGenerator.new([automation, framework, project_name]).invoke_all
46
+ else
47
+ CucumberGenerator.new([automation, framework, project_name]).invoke_all
54
48
  end
49
+ AutomationGenerator.new([automation, framework, project_name]).invoke_all
50
+ CommonGenerator.new([automation, framework, project_name]).invoke_all
51
+ HelpersGenerator.new([automation, framework, project_name]).invoke_all
52
+ system "cd #{project_name} && gem install bundler && bundle install"
53
+ end
55
54
 
56
- def choose_mobile_platform
57
- @cli.choose do |menu|
58
- menu.prompt = 'Please select your mobile platform'
59
- menu.choice('iOS') { 'appium_ios' }
60
- menu.choice('Android') do
61
- pp 'Android appium is coming soon. Thank you for the interest'
62
- exit
63
- end
64
- menu.choice('Cross Platform') do
65
- pp 'Cross platform appium is coming soon. Thank you for the interest'
66
- exit
67
- end
68
- menu.choice('Quit') { exit }
55
+ def choose_mobile_platform
56
+ @cli.choose do |menu|
57
+ menu.prompt = 'Please select your mobile platform'
58
+ menu.choice('iOS') { 'appium_ios' }
59
+ menu.choice('Android') do
60
+ pp 'Android appium is coming soon. Thank you for the interest'
61
+ exit
62
+ end
63
+ menu.choice('Cross Platform') do
64
+ pp 'Cross platform appium is coming soon. Thank you for the interest'
65
+ exit
69
66
  end
67
+ menu.choice('Quit') { exit }
70
68
  end
71
69
  end
72
70
  end
@@ -2,15 +2,14 @@
2
2
 
3
3
  require_relative 'generator'
4
4
 
5
- module RubyRaider
6
- class RspecGenerator < Generator
5
+ class RspecGenerator < Generator
7
6
 
8
- def generate_spec
9
- template('rspec/spec.tt', "#{name}/spec/login_page_spec.rb")
10
- end
7
+ def generate_spec
8
+ template('rspec/spec.tt', "#{name}/spec/login_page_spec.rb")
9
+ end
11
10
 
12
- def generate_base_spec
13
- template('rspec/base_spec.tt', "#{name}/spec/base_spec.rb")
14
- end
11
+ def generate_base_spec
12
+ template('rspec/base_spec.tt', "#{name}/spec/base_spec.rb")
15
13
  end
16
14
  end
15
+
@@ -12,6 +12,7 @@ gem 'rake'
12
12
  gem '<%= framework %>'
13
13
  <% if framework == 'cucumber' -%>
14
14
  gem 'rspec'
15
+ gem 'ruby_raider'
15
16
  <% end -%>
16
17
  <%= ERB.new(File.read(File.expand_path('./partials/automation_gems.tt', __dir__))).result(binding).strip! %>
17
18
  <% if %w[selenium watir].include? automation -%>
data/lib/ruby_raider.rb CHANGED
@@ -1,12 +1,41 @@
1
- # frozen_string_literal: true
2
-
1
+ require 'thor'
3
2
  require_relative 'generators/menu_generator'
3
+ require_relative '../lib/scaffolding/scaffolding'
4
+ require_relative '../lib/utilities/utilities'
4
5
 
5
- # Main module to load all the generators
6
- module RubyRaider
7
- module_function
8
-
9
- def generate_project(project_name)
6
+ class RubyRaider < Thor
7
+ desc "new [PROJECT_NAME]", "Creates a new framework based on settings picked"
8
+ def new(project_name)
10
9
  MenuGenerator.generate_choice_menu(project_name)
11
10
  end
12
- end
11
+
12
+ desc "page [PAGE_NAME]", "Creates a new page object"
13
+ def page(name)
14
+ Scaffolding.new([name]).generate_class
15
+ end
16
+
17
+ desc "feature [FEATURE_NAME]", "Creates a new feature"
18
+ def feature(name)
19
+ Scaffolding.new([name]).generate_feature
20
+ end
21
+
22
+ desc "spec [SPEC_NAME]", "Creates a new spec"
23
+ def spec(name)
24
+ Scaffolding.new([name]).generate_spec
25
+ end
26
+
27
+ desc "path [PATH]", "Sets the default path for scaffolding"
28
+ def path(default_path)
29
+ Utilities.path = default_path
30
+ end
31
+
32
+ desc "url [URL]", "Sets the default url for a project"
33
+ def url(default_url)
34
+ Utilities.url = default_url
35
+ end
36
+
37
+ desc "browser [BROWSER]", "Sets the default browser for a project"
38
+ def browser(default_browser)
39
+ Utilities.browser = default_browser
40
+ end
41
+ end
@@ -0,0 +1,23 @@
1
+ require 'thor'
2
+
3
+ class Scaffolding < Thor::Group
4
+ include Thor::Actions
5
+
6
+ argument :name
7
+
8
+ def self.source_root
9
+ File.dirname(__FILE__) + '/templates'
10
+ end
11
+
12
+ def generate_class
13
+ template('page_object.tt', "page_objects/pages/#{name}_page.rb")
14
+ end
15
+
16
+ def generate_feature
17
+ template('feature.tt', "features/#{name}.feature")
18
+ end
19
+
20
+ def generate_spec
21
+ template('spec.tt', "./spec/#{name}_page.rb")
22
+ end
23
+ end
@@ -0,0 +1,6 @@
1
+ Feature: <%= name %>
2
+
3
+ Scenario: Scenario name
4
+ Given I am
5
+ When I do
6
+ Then I see
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../abstract/abstract_page'
4
+
5
+ class <%= name.split('_').map {|word| word.capitalize }.join + 'Page' %> < AbstractPage
6
+
7
+ #Actions
8
+
9
+ private
10
+
11
+ # Elements
12
+ end
@@ -0,0 +1,5 @@
1
+ require_relative 'base_spec'
2
+ require_relative '../page_objects/pages/<%= name %>_page'
3
+
4
+ describe <%= name.split('_').map {|word| word.capitalize }.join + 'Page' %> do
5
+ end
@@ -0,0 +1,17 @@
1
+ require 'thor'
2
+
3
+ class Utilities < Thor::Group
4
+ include Thor::Actions
5
+
6
+ def browser=(browser)
7
+
8
+ end
9
+
10
+ def path=(path)
11
+
12
+ end
13
+
14
+ def url=(url)
15
+
16
+ end
17
+ end
data/ruby_raider.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ruby_raider'
5
- s.version = '0.2.4'
5
+ s.version = '0.2.5'
6
6
  s.summary = 'A gem to make setup and start of UI automation projects easier'
7
7
  s.description = 'This gem has everything you need to start working with test automation'
8
8
  s.authors = ['Agustin Pequeno']
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.2.4
4
+ version: 0.2.5
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-05-18 00:00:00.000000000 Z
11
+ date: 2022-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -173,6 +173,11 @@ files:
173
173
  - lib/generators/templates/rspec/base_spec.tt
174
174
  - lib/generators/templates/rspec/spec.tt
175
175
  - lib/ruby_raider.rb
176
+ - lib/scaffolding/scaffolding.rb
177
+ - lib/scaffolding/templates/feature.tt
178
+ - lib/scaffolding/templates/page_object.tt
179
+ - lib/scaffolding/templates/spec.tt
180
+ - lib/utilities/utilities.rb
176
181
  - ruby_raider.gemspec
177
182
  - spec/automation_generator_spec.rb
178
183
  - spec/common_generator_spec.rb