ruby_raider 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) 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 +27 -14
  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 +116 -43
  67. data/lib/generators/files/automation_file_generator.rb +0 -61
  68. data/lib/generators/files/common_file_generator.rb +0 -38
  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 -70
  72. data/lib/generators/files/rspec_file_generator.rb +0 -29
  73. data/lib/generators/projects/cucumber_project_generator.rb +0 -34
  74. data/lib/generators/projects/project_generator.rb +0 -27
  75. data/lib/generators/projects/rspec_project_generator.rb +0 -26
  76. data/lib/generators/templates/automation/abstract_component_template.rb +0 -22
  77. data/lib/generators/templates/automation/abstract_page_template.rb +0 -82
  78. data/lib/generators/templates/automation/appium_settings_template.rb +0 -16
  79. data/lib/generators/templates/automation/component_template.rb +0 -16
  80. data/lib/generators/templates/automation/confirmation_page_template.rb +0 -26
  81. data/lib/generators/templates/automation/home_page_template.rb +0 -26
  82. data/lib/generators/templates/automation/login_page_template.rb +0 -113
  83. data/lib/generators/templates/common/config_template.rb +0 -9
  84. data/lib/generators/templates/common/gemfile_template.rb +0 -52
  85. data/lib/generators/templates/common/rake_file_template.rb +0 -16
  86. data/lib/generators/templates/common/read_me_template.rb +0 -104
  87. data/lib/generators/templates/cucumber/env_template.rb +0 -38
  88. data/lib/generators/templates/cucumber/example_feature_template.rb +0 -15
  89. data/lib/generators/templates/cucumber/example_steps_template.rb +0 -21
  90. data/lib/generators/templates/helpers/allure_helper_template.rb +0 -47
  91. data/lib/generators/templates/helpers/browser_helper_template.rb +0 -26
  92. data/lib/generators/templates/helpers/driver_helper_template.rb +0 -54
  93. data/lib/generators/templates/helpers/pom_helper_template.rb +0 -25
  94. data/lib/generators/templates/helpers/raider_helper_template.rb +0 -27
  95. data/lib/generators/templates/helpers/selenium_helper_template.rb +0 -42
  96. data/lib/generators/templates/helpers/spec_helper_template.rb +0 -74
  97. data/lib/generators/templates/helpers/watir_helper_template.rb +0 -24
  98. data/lib/generators/templates/rspec/base_spec_template.rb +0 -13
  99. data/lib/generators/templates/rspec/example_spec_template.rb +0 -56
  100. data/lib/generators/templates/template.rb +0 -14
  101. data/spec/automation_file_generator_spec.rb +0 -59
  102. data/spec/common_file_generator_spec.rb +0 -27
  103. data/spec/cucumber_file_generator_spec.rb +0 -26
  104. data/spec/cucumber_project_generator_spec.rb +0 -60
  105. data/spec/helpers_file_generator_spec.rb +0 -73
  106. data/spec/rspec_file_generator_spec.rb +0 -21
  107. data/spec/rspec_project_generator_spec.rb +0 -69
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ What is Raider?
4
+ ===========
5
+
6
+ Raider is a tool to make the setup and start of automation projects in ruby easier, with one command you are ready to go
7
+
8
+ # Pre-requisites:
9
+
10
+ Install RVM:
11
+ https://rvm.io/rvm/install
12
+
13
+ # How to use the framework:
14
+
15
+ If you want to run all the tests from your terminal do:
16
+ *rspec spec/*
17
+
18
+ If you want to run all the tests in parallel do:
19
+ *parallel_rspec spec/*
20
+
21
+ # How are specs organized:
22
+
23
+ We use 'context' as the highest grouping level to indicate in which part of the application we are as an example:
24
+
25
+ *context 'On the login page'/*
26
+
27
+ We use 'describe' from the user perspective to describe an action that the user can or cannot take:
28
+
29
+ *describe 'A user can'/*
30
+
31
+ or
32
+
33
+ *describe 'A user cannot'/*
34
+
35
+ This saves us repetition and forces us into an structure
36
+
37
+ At last we use 'it' for the specific action the user can or cannot perform:
38
+
39
+ it 'login with right credentials'
40
+
41
+ If we group all of this together it will look like
42
+
43
+ ```ruby
44
+ context 'On the login page' do
45
+ describe 'A user can' do
46
+ it 'login with the right credentials' do
47
+ end
48
+ end
49
+
50
+ describe 'A user cannot' do
51
+ it 'login with the wrong credentials' do
52
+ end
53
+ end
54
+ end
55
+ ```
56
+ This is readed as 'On the login page a user can login with the right credentials' and 'On the login page a user cannot login with the wrong credentials'
57
+
58
+ # How pages are organized:
59
+
60
+ ```ruby#{' '}
61
+ require_relative '../abstract/base_page'
62
+
63
+ class MainPage < BasePage
64
+
65
+ using Raider::WatirHelper
66
+
67
+ def url(_page)
68
+ '/'
69
+ end
70
+
71
+ # Actions
72
+
73
+ def change_currency(currency)
74
+ currency_dropdown.select currency
75
+ end
76
+
77
+ # Validations
78
+
79
+ def validate_currency(currency)
80
+ expect(currency_dropdown.include?(currency)).to be true
81
+ end
82
+
83
+ private
84
+
85
+ # Elements
86
+
87
+ def currency_dropdown
88
+ browser.select(class: %w[dropdown-menu currency])
89
+ end
90
+ end
91
+ ```
92
+
93
+ Pages are organized in Actions (things a user can perform on the page), Validations (assertions), and Elements.
94
+ Each page has to have a url define, and each page is using the module WatirHelper to add methods on runtime to the Watir elements
95
+
96
+ # Mobile:
97
+
98
+ For the appium base project to work you need to have [appium](https://appium.io)
99
+ and download [the example app](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0)
@@ -0,0 +1,8 @@
1
+ <% case automation
2
+ when 'selenium' %>
3
+ <%= ERB.new(File.read(File.expand_path('./partials/selenium_appium_env.tt', __dir__))).result(binding).strip! -%>
4
+ <% when 'watir' %>
5
+ <%= ERB.new(File.read(File.expand_path('./partials/watir_env.tt', __dir__))).result(binding).strip! -%>
6
+ <% else %>
7
+ <%= ERB.new(File.read(File.expand_path('./partials/appium_env.tt', __dir__))).result(binding).strip! -%>
8
+ <% end %>
@@ -0,0 +1,6 @@
1
+ Feature: Login Page
2
+
3
+ Scenario: A user can login
4
+ Given I'm a registered user on the login page
5
+ When I login with my credentials
6
+ Then I can see the main page
@@ -0,0 +1,13 @@
1
+ require_relative '../../helpers/driver_helper'
2
+
3
+ Before do
4
+ Raider::AllureHelper.configure
5
+ Raider::DriverHelper.new_driver
6
+ Raider::DriverHelper.driver.start_driver
7
+ end
8
+
9
+ After do |scenario|
10
+ Raider::DriverHelper.driver.screenshot("allure-results/screenshots/#{scenario.name}.png")
11
+ Raider::AllureHelper.add_screenshot(scenario.name)
12
+ Raider::DriverHelper.driver.quit_driver
13
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../page_objects/pages/confirmation_page'
4
+ require_relative '../../page_objects/pages/home_page'
5
+ require_relative '../../page_objects/pages/login_page'
6
+
7
+ Given("I'm a registered user on the login page") do
8
+ HomePage.go_to_login
9
+ end
10
+
11
+ When('I login with my credentials') do
12
+ LoginPage.login('alice', 'mypassword')
13
+ end
14
+
15
+ When('I can see the main page') do
16
+ expect(ConfirmationPage.login_message).to eq 'You are logged in as alice'
17
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../helpers/driver_helper'
2
+
3
+ Before do
4
+ Raider::AllureHelper.configure
5
+ Raider::DriverHelper.new_driver
6
+ end
7
+
8
+ After do |scenario|
9
+ driver = Raider::DriverHelper.driver
10
+ driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
11
+ Raider::AllureHelper.add_screenshot(scenario.name)
12
+ driver.quit
13
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../helpers/browser_helper'
2
+
3
+ Before do
4
+ Raider::AllureHelper.configure
5
+ Raider::BrowserHelper.new_browser
6
+ end
7
+
8
+ After do |scenario|
9
+ browser = Raider::BrowserHelper.browser
10
+ browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
11
+ Raider::AllureHelper.add_screenshot(scenario.name)
12
+ browser.quit
13
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../page_objects/pages/login_page'
4
+
5
+ Given("I'm a registered user on the login page") do
6
+ LoginPage.visit
7
+ end
8
+
9
+ When('I login with my credentials') do
10
+ LoginPage.login('aguspe', '12341234')
11
+ end
12
+
13
+ When('I can see the main page') do
14
+ expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
15
+ end
@@ -0,0 +1,5 @@
1
+ <% if %w[selenium watir].include? automation %>
2
+ <%= ERB.new(File.read(File.expand_path('./partials/web_steps.tt', __dir__))).result(binding).strip! -%>
3
+ <% else %>
4
+ <%= ERB.new(File.read(File.expand_path('./partials/mobile_steps.tt', __dir__))).result(binding).strip! -%>
5
+ <% end %>
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ <%= ERB.new(File.read(File.expand_path('./partials/allure_requirements.tt', __dir__))).result(binding).strip! %>
4
+ <% allure = ERB.new(File.read(File.expand_path('./partials/allure_imports.tt', __dir__))).result(binding).strip! %>
5
+
6
+ module Raider
7
+ module AllureHelper
8
+ class << self
9
+ def configure
10
+ <%= allure %>.configure do |config|
11
+ config.results_directory = 'allure-results'
12
+ config.clean_results_directory = true
13
+ end
14
+ end
15
+
16
+ def add_screenshot(screenshot_name)
17
+ Allure.add_attachment(
18
+ name: name,
19
+ source: "File.open(allure-results/screenshots/#{screenshot_name}.png)",
20
+ type: Allure::ContentType::PNG,
21
+ test_case: true
22
+ )
23
+ end
24
+
25
+ <% if framework == 'rspec' %>
26
+ def formatter
27
+ AllureRspecFormatter
28
+ end
29
+ <% end %>
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+ require 'selenium-webdriver'
5
+ require 'watir'
6
+ require 'webdrivers'
7
+
8
+ module Raider
9
+ module BrowserHelper
10
+ class << self
11
+ attr_reader :browser
12
+
13
+ def new_browser
14
+ config = YAML.load_file('config/config.yml')
15
+ @browser = Watir::Browser.new config['browser']
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ <% if automation == 'selenium' %>
4
+ require 'webdrivers'
5
+ <% else %>
6
+ require 'appium_lib'
7
+ <% end %>
8
+ require_relative 'driver_helper'
9
+
10
+ module Raider
11
+ module DriverHelper
12
+ class << self
13
+ attr_reader :driver
14
+
15
+ <%= ERB.new(File.read(File.expand_path('./partials/new_driver.tt', __dir__))).result(binding).strip! %>
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ <% if framework == 'rspec' %>
2
+ AllureRspec
3
+ <% else %>
4
+ AllureCucumber
5
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <% if framework == 'cucumber' %>
2
+ require 'allure-cucumber'
3
+ <% else %>
4
+ require 'allure-ruby-commons'
5
+ require 'allure-rspec'
6
+ <% end %>
@@ -0,0 +1,14 @@
1
+ def requirements
2
+ case automation
3
+ when 'selenium'
4
+ require 'selenium-webdriver'
5
+ require 'webdrivers'
6
+
7
+ when 'watir'
8
+
9
+ require 'watir'
10
+ require 'webdrivers'
11
+ else
12
+ "require 'appium_lib'"
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ <% if automation == 'selenium' %>
2
+ def new_driver
3
+ @driver = Selenium::WebDriver.for :chrome
4
+ end
5
+ <% else %>
6
+ def new_driver
7
+ appium_file = File.join(Dir.pwd, 'appium.txt')
8
+ caps = Appium.load_appium_txt(file: appium_file)
9
+ @driver = Appium::Driver.new(caps)
10
+ end
11
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <% case automation
2
+ when 'selenium' %>
3
+ DriverHelper.driver.quit
4
+ <% when 'watir' %>
5
+ BrowserHelper.browser.quit
6
+ <% else %>
7
+ DriverHelper.driver.quit_driver
8
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if automation == 'selenium' %>
2
+ require_relative 'selenium_helper'
3
+ <% elsif automation == 'watir' %>
4
+ require_relative 'watir_helper'
5
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <% case automation
2
+ when 'selenium' %>
3
+ driver.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
4
+ <% when 'watir' %>
5
+ browser.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
6
+ <% else %>
7
+ driver.screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
8
+ <% end %>
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Raider
4
+ module PomHelper
5
+ def instance
6
+ @instance ||= new
7
+ end
8
+
9
+ def method_missing(message, *args, &block)
10
+ return super unless instance.respond_to?(message)
11
+
12
+ instance.public_send(message, *args, &block)
13
+ end
14
+
15
+ def respond_to_missing?(method, *_args, &block)
16
+ instance.respond_to?(method) || super
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Raider
4
+ <% if framework == 'rspec' %>
5
+ require_relative 'spec_helper'
6
+ <% end %>
7
+ <%= ERB.new(File.read(File.expand_path('./partials/require_automation.tt', __dir__))).result(binding).strip! %>
8
+ require_relative 'pom_helper'
9
+ <% if automation == 'watir' %>
10
+ require_relative 'browser_helper'
11
+ <% else %>
12
+ require_relative 'driver_helper'
13
+ <% end %>
14
+ require_relative 'allure_helper'
15
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'selenium-webdriver'
4
+ require_relative 'driver_helper'
5
+
6
+ module Raider
7
+ module SeleniumHelper
8
+ def click_when_present
9
+ # This is an example of an implicit wait in selenium
10
+ wait = Selenium::WebDriver::Wait.new(timeout: 15)
11
+ wait.until { displayed? }
12
+ click
13
+ end
14
+
15
+ def select_by(key, value)
16
+ # Creates new Select object to use the select by method
17
+ dropdown = Selenium::WebDriver::Support::Select.new self
18
+ dropdown.select_by(key, value)
19
+ end
20
+
21
+ def hover
22
+ # Using actions to move the mouse over an element
23
+ DriverHelper.driver.action.move_to(self).perform
24
+ end
25
+
26
+ # How to perform right click through the context click method
27
+ def right_click
28
+ DriverHelper.driver.action.context_click(self).perform
29
+ end
30
+ end
31
+
32
+ # Here we are opening the selenium class and adding our custom method
33
+ class Selenium::WebDriver::Element
34
+ include SeleniumHelper
35
+ end
36
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec'
4
+ require_relative 'allure_helper'
5
+ <% if automation == 'watir' %>
6
+ require_relative 'browser_helper'
7
+ <% else %>
8
+ require_relative 'driver_helper'
9
+ <% end %>
10
+
11
+ module Raider
12
+ module SpecHelper
13
+
14
+ AllureHelper.configure
15
+ RSpec.configure do |config|
16
+ config.formatter = AllureHelper.formatter
17
+ config.before(:each) do
18
+ <% if automation == 'watir' %>
19
+ BrowserHelper.new_browser
20
+ <% else %>
21
+ DriverHelper.new_driver
22
+ <% end %>
23
+ <% if %w[appium_ios].include? automation %>
24
+ DriverHelper.driver.start_driver
25
+ <% end %>
26
+ end
27
+
28
+ config.after(:each) do
29
+ example_name = self.class.descendant_filtered_examples.first.description
30
+ status = self.class.descendant_filtered_examples.first.execution_result.status
31
+ <%= ERB.new(File.read(File.expand_path('./partials/screenshot.tt', __dir__))).result(binding).strip! %>
32
+ AllureHelper.add_screenshot example_name if status == :failed
33
+ <%= ERB.new(File.read(File.expand_path('./partials/quit_driver.tt', __dir__))).result(binding).strip! %>
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Raider
4
+ module WatirHelper
5
+ refine Watir::Element do
6
+ def click_when_present
7
+ wait_until_present
8
+ self.click
9
+ end
10
+
11
+ def wait_until_present
12
+ self.wait_until(&:present?)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ require_relative '../helpers/raider'
2
+
3
+ class BaseSpec
4
+ include Raider::SpecHelper
5
+ end
@@ -0,0 +1,37 @@
1
+ <% if %w[selenium watir].include? automation %>
2
+ require_relative 'base_spec'
3
+ require_relative '../page_objects/pages/login_page'
4
+
5
+ class LoginSpec < BaseSpec
6
+ describe 'Login' do
7
+ before(:each) do
8
+ LoginPage.visit
9
+ end
10
+
11
+ it 'can login with valid credentials' do
12
+ LoginPage.login('aguspe', '12341234')
13
+ expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
14
+ end
15
+
16
+ it 'cannot login with wrong credentials' do
17
+ LoginPage.login('aguspe', 'wrongPassword')
18
+ expect(LoginPage.header.customer_name).to be_empty
19
+ end
20
+ end
21
+ end
22
+ <% else %>
23
+ require_relative '../page_objects/pages/confirmation_page'
24
+ require_relative '../page_objects/pages/home_page'
25
+ require_relative 'base_spec'
26
+ require_relative '../page_objects/pages/login_page'
27
+
28
+ class LoginSpec < BaseSpec
29
+ describe 'Login' do
30
+ it 'Login with valid credentials' do
31
+ HomePage.go_to_login
32
+ LoginPage.login('alice', 'mypassword')
33
+ expect(ConfirmationPage.login_message).to eq 'You are logged in as alice'
34
+ end
35
+ end
36
+ end
37
+ <% end %>
data/lib/ruby_raider.rb CHANGED
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'generators/menu_generator'
2
- require_relative 'generators/projects/cucumber_project_generator'
3
- require_relative 'generators/projects/project_generator'
4
- require_relative 'generators/projects/rspec_project_generator'
5
4
 
5
+ # Main module to load all the generators
6
6
  module RubyRaider
7
- extend self
7
+ module_function
8
+
8
9
  def generate_project(project_name)
9
10
  MenuGenerator.generate_choice_menu(project_name)
10
11
  end
data/ruby_raider.gemspec CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = 'ruby_raider'
3
- s.version = '0.1.9'
5
+ s.version = '0.2.0'
4
6
  s.summary = 'A gem to make setup and start of UI automation projects easier'
5
7
  s.description = 'This gem contents everything you need to start doing web automation in one simple package'
6
8
  s.authors = ['Agustin Pequeno']
@@ -13,7 +15,11 @@ Gem::Specification.new do |s|
13
15
  s.bindir = 'bin'
14
16
  s.executables << 'raider'
15
17
  s.add_development_dependency 'rake', '~> 13.0.6'
18
+ s.add_development_dependency 'reek', '~> 6.1.0'
19
+ s.add_development_dependency 'rubocop', '~> 1.27'
20
+ s.add_development_dependency 'rubocop-rspec', '~> 2.9.0'
16
21
  s.add_development_dependency 'rspec', '~> 3.11.0'
17
22
 
18
23
  s.add_runtime_dependency 'highline', '~> 2.0.3'
24
+ s.add_runtime_dependency 'thor', '~> 1.2.1'
19
25
  end