ruby_raider 0.1.9 → 0.2.2

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/.reek.yml +3 -0
  3. data/.rubocop.yml +6 -0
  4. data/README.md +5 -6
  5. data/Rakefile +2 -0
  6. data/bin/raider +1 -0
  7. data/lib/generators/automation_generator.rb +45 -0
  8. data/lib/generators/common_generator.rb +31 -0
  9. data/lib/generators/cucumber_generator.rb +19 -0
  10. data/lib/generators/generator.rb +16 -0
  11. data/lib/generators/helper_generator.rb +48 -0
  12. data/lib/generators/menu_generator.rb +27 -14
  13. data/lib/generators/rspec_generator.rb +16 -0
  14. data/lib/generators/templates/automation/abstract_component.tt +7 -0
  15. data/lib/generators/templates/automation/abstract_page.tt +10 -0
  16. data/lib/generators/templates/automation/appium_settings.tt +8 -0
  17. data/lib/generators/templates/automation/component.tt +9 -0
  18. data/lib/generators/templates/automation/confirmation_page.tt +19 -0
  19. data/lib/generators/templates/automation/home_page.tt +20 -0
  20. data/lib/generators/templates/automation/login_page.tt +8 -0
  21. data/lib/generators/templates/automation/partials/appium_login.tt +28 -0
  22. data/lib/generators/templates/automation/partials/driver_selector.tt +9 -0
  23. data/lib/generators/templates/automation/partials/element.tt +5 -0
  24. data/lib/generators/templates/automation/partials/require_raider.tt +5 -0
  25. data/lib/generators/templates/automation/partials/selenium_login.tt +40 -0
  26. data/lib/generators/templates/automation/partials/url_methods.tt +13 -0
  27. data/lib/generators/templates/automation/partials/visit_method.tt +9 -0
  28. data/lib/generators/templates/automation/partials/watir_login.tt +41 -0
  29. data/lib/generators/templates/common/config.tt +1 -0
  30. data/lib/generators/templates/common/gemfile.tt +19 -0
  31. data/lib/generators/templates/common/partials/automation_gems.tt +10 -0
  32. data/lib/generators/templates/common/rakefile.tt +8 -0
  33. data/lib/generators/templates/common/read_me.tt +97 -0
  34. data/lib/generators/templates/cucumber/env.tt +8 -0
  35. data/lib/generators/templates/cucumber/feature.tt +6 -0
  36. data/lib/generators/templates/cucumber/partials/appium_env.tt +13 -0
  37. data/lib/generators/templates/cucumber/partials/mobile_steps.tt +17 -0
  38. data/lib/generators/templates/cucumber/partials/selenium_appium_env.tt +13 -0
  39. data/lib/generators/templates/cucumber/partials/watir_env.tt +13 -0
  40. data/lib/generators/templates/cucumber/partials/web_steps.tt +15 -0
  41. data/lib/generators/templates/cucumber/steps.tt +5 -0
  42. data/lib/generators/templates/helpers/allure_helper.tt +32 -0
  43. data/lib/generators/templates/helpers/browser_helper.tt +19 -0
  44. data/lib/generators/templates/helpers/driver_helper.tt +18 -0
  45. data/lib/generators/templates/helpers/partials/allure_imports.tt +5 -0
  46. data/lib/generators/templates/helpers/partials/allure_requirements.tt +6 -0
  47. data/lib/generators/templates/helpers/partials/driver_requirements.tt +14 -0
  48. data/lib/generators/templates/helpers/partials/new_driver.tt +11 -0
  49. data/lib/generators/templates/helpers/partials/quit_driver.tt +8 -0
  50. data/lib/generators/templates/helpers/partials/require_automation.tt +5 -0
  51. data/lib/generators/templates/helpers/partials/screenshot.tt +8 -0
  52. data/lib/generators/templates/helpers/pom_helper.tt +19 -0
  53. data/lib/generators/templates/helpers/raider_helper.tt +15 -0
  54. data/lib/generators/templates/helpers/selenium_helper.tt +36 -0
  55. data/lib/generators/templates/helpers/spec_helper.tt +37 -0
  56. data/lib/generators/templates/helpers/watir_helper.tt +16 -0
  57. data/lib/generators/templates/rspec/base_spec.tt +5 -0
  58. data/lib/generators/templates/rspec/spec.tt +37 -0
  59. data/lib/ruby_raider.rb +5 -4
  60. data/ruby_raider.gemspec +7 -1
  61. data/spec/automation_generator_spec.rb +192 -0
  62. data/spec/common_generator_spec.rb +141 -0
  63. data/spec/cucumber_generator_spec.rb +71 -0
  64. data/spec/helpers_generator_spec.rb +133 -0
  65. data/spec/rspec_generator_spec.rb +63 -0
  66. data/spec/spec_helper.rb +3 -3
  67. metadata +116 -43
  68. data/lib/generators/files/automation_file_generator.rb +0 -61
  69. data/lib/generators/files/common_file_generator.rb +0 -38
  70. data/lib/generators/files/cucumber_file_generator.rb +0 -33
  71. data/lib/generators/files/file_generator.rb +0 -11
  72. data/lib/generators/files/helpers_file_generator.rb +0 -70
  73. data/lib/generators/files/rspec_file_generator.rb +0 -29
  74. data/lib/generators/projects/cucumber_project_generator.rb +0 -34
  75. data/lib/generators/projects/project_generator.rb +0 -27
  76. data/lib/generators/projects/rspec_project_generator.rb +0 -26
  77. data/lib/generators/templates/automation/abstract_component_template.rb +0 -22
  78. data/lib/generators/templates/automation/abstract_page_template.rb +0 -82
  79. data/lib/generators/templates/automation/appium_settings_template.rb +0 -16
  80. data/lib/generators/templates/automation/component_template.rb +0 -16
  81. data/lib/generators/templates/automation/confirmation_page_template.rb +0 -26
  82. data/lib/generators/templates/automation/home_page_template.rb +0 -26
  83. data/lib/generators/templates/automation/login_page_template.rb +0 -113
  84. data/lib/generators/templates/common/config_template.rb +0 -9
  85. data/lib/generators/templates/common/gemfile_template.rb +0 -52
  86. data/lib/generators/templates/common/rake_file_template.rb +0 -16
  87. data/lib/generators/templates/common/read_me_template.rb +0 -104
  88. data/lib/generators/templates/cucumber/env_template.rb +0 -38
  89. data/lib/generators/templates/cucumber/example_feature_template.rb +0 -15
  90. data/lib/generators/templates/cucumber/example_steps_template.rb +0 -21
  91. data/lib/generators/templates/helpers/allure_helper_template.rb +0 -47
  92. data/lib/generators/templates/helpers/browser_helper_template.rb +0 -26
  93. data/lib/generators/templates/helpers/driver_helper_template.rb +0 -54
  94. data/lib/generators/templates/helpers/pom_helper_template.rb +0 -25
  95. data/lib/generators/templates/helpers/raider_helper_template.rb +0 -27
  96. data/lib/generators/templates/helpers/selenium_helper_template.rb +0 -42
  97. data/lib/generators/templates/helpers/spec_helper_template.rb +0 -74
  98. data/lib/generators/templates/helpers/watir_helper_template.rb +0 -24
  99. data/lib/generators/templates/rspec/base_spec_template.rb +0 -13
  100. data/lib/generators/templates/rspec/example_spec_template.rb +0 -56
  101. data/lib/generators/templates/template.rb +0 -14
  102. data/spec/automation_file_generator_spec.rb +0 -59
  103. data/spec/common_file_generator_spec.rb +0 -27
  104. data/spec/cucumber_file_generator_spec.rb +0 -26
  105. data/spec/cucumber_project_generator_spec.rb +0 -60
  106. data/spec/helpers_file_generator_spec.rb +0 -73
  107. data/spec/rspec_file_generator_spec.rb +0 -21
  108. data/spec/rspec_project_generator_spec.rb +0 -69
@@ -0,0 +1,97 @@
1
+ What is Raider?
2
+ ===========
3
+
4
+ Raider is a tool to make the setup and start of automation projects in ruby easier, with one command you are ready to go
5
+
6
+ # Pre-requisites:
7
+
8
+ Install RVM:
9
+ https://rvm.io/rvm/install
10
+
11
+ # How to use the framework:
12
+
13
+ If you want to run all the tests from your terminal do:
14
+ *rspec spec/*
15
+
16
+ If you want to run all the tests in parallel do:
17
+ *parallel_rspec spec/*
18
+
19
+ # How are specs organized:
20
+
21
+ We use 'context' as the highest grouping level to indicate in which part of the application we are as an example:
22
+
23
+ *context 'On the login page'/*
24
+
25
+ We use 'describe' from the user perspective to describe an action that the user can or cannot take:
26
+
27
+ *describe 'A user can'/*
28
+
29
+ or
30
+
31
+ *describe 'A user cannot'/*
32
+
33
+ This saves us repetition and forces us into an structure
34
+
35
+ At last we use 'it' for the specific action the user can or cannot perform:
36
+
37
+ it 'login with right credentials'
38
+
39
+ If we group all of this together it will look like
40
+
41
+ ```ruby
42
+ context 'On the login page' do
43
+ describe 'A user can' do
44
+ it 'login with the right credentials' do
45
+ end
46
+ end
47
+
48
+ describe 'A user cannot' do
49
+ it 'login with the wrong credentials' do
50
+ end
51
+ end
52
+ end
53
+ ```
54
+ 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'
55
+
56
+ # How pages are organized:
57
+
58
+ ```ruby#{' '}
59
+ require_relative '../abstract/base_page'
60
+
61
+ class MainPage < BasePage
62
+
63
+ using Raider::WatirHelper
64
+
65
+ def url(_page)
66
+ '/'
67
+ end
68
+
69
+ # Actions
70
+
71
+ def change_currency(currency)
72
+ currency_dropdown.select currency
73
+ end
74
+
75
+ # Validations
76
+
77
+ def validate_currency(currency)
78
+ expect(currency_dropdown.include?(currency)).to be true
79
+ end
80
+
81
+ private
82
+
83
+ # Elements
84
+
85
+ def currency_dropdown
86
+ browser.select(class: %w[dropdown-menu currency])
87
+ end
88
+ end
89
+ ```
90
+
91
+ Pages are organized in Actions (things a user can perform on the page), Validations (assertions), and Elements.
92
+ 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
93
+
94
+ # Mobile:
95
+
96
+ For the appium base project to work you need to have [appium](https://appium.io)
97
+ 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.2'
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