ruby_raider 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -6
  3. data/lib/generators/automation_generator.rb +3 -1
  4. data/lib/generators/helper_generator.rb +2 -10
  5. data/lib/generators/templates/automation/abstract_page.tt +4 -6
  6. data/lib/generators/templates/automation/appium_settings.tt +1 -1
  7. data/lib/generators/templates/automation/confirmation_page.tt +2 -2
  8. data/lib/generators/templates/automation/home_page.tt +2 -2
  9. data/lib/generators/templates/automation/login_page.tt +4 -4
  10. data/lib/generators/templates/automation/partials/appium_login.tt +3 -3
  11. data/lib/generators/templates/automation/partials/element.tt +5 -5
  12. data/lib/generators/templates/automation/partials/initialize_selector.tt +9 -0
  13. data/lib/generators/templates/automation/partials/selenium_login.tt +4 -4
  14. data/lib/generators/templates/automation/partials/visit_method.tt +1 -5
  15. data/lib/generators/templates/automation/partials/watir_login.tt +7 -9
  16. data/lib/generators/templates/common/gemfile.tt +6 -8
  17. data/lib/generators/templates/common/rakefile.tt +0 -2
  18. data/lib/generators/templates/common/read_me.tt +0 -2
  19. data/lib/generators/templates/cucumber/env.tt +4 -4
  20. data/lib/generators/templates/cucumber/partials/appium_env.tt +4 -4
  21. data/lib/generators/templates/cucumber/partials/mobile_steps.tt +6 -3
  22. data/lib/generators/templates/cucumber/partials/selenium_appium_env.tt +3 -5
  23. data/lib/generators/templates/cucumber/partials/watir_env.tt +3 -4
  24. data/lib/generators/templates/cucumber/partials/web_steps.tt +4 -3
  25. data/lib/generators/templates/cucumber/steps.tt +3 -3
  26. data/lib/generators/templates/helpers/allure_helper.tt +1 -1
  27. data/lib/generators/templates/helpers/driver_helper.tt +3 -3
  28. data/lib/generators/templates/helpers/partials/require_automation.tt +0 -2
  29. data/lib/generators/templates/helpers/partials/screenshot.tt +3 -3
  30. data/lib/generators/templates/helpers/partials/select_driver.tt +8 -0
  31. data/lib/generators/templates/helpers/raider_helper.tt +5 -6
  32. data/lib/generators/templates/helpers/spec_helper.tt +4 -11
  33. data/lib/generators/templates/rspec/spec.tt +34 -18
  34. data/ruby_raider.gemspec +1 -1
  35. data/spec/cucumber_generator_spec.rb +8 -0
  36. data/spec/helpers_generator_spec.rb +8 -16
  37. metadata +4 -6
  38. data/lib/generators/templates/automation/partials/driver_selector.tt +0 -9
  39. data/lib/generators/templates/helpers/partials/driver_requirements.tt +0 -14
  40. data/lib/generators/templates/helpers/pom_helper.tt +0 -19
  41. data/lib/generators/templates/helpers/watir_helper.tt +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8a66075dc98e049b9a8c541cb9b3c8a14ab15ca217f9bf1829b258ac5984a9f
4
- data.tar.gz: 85f79fae82e57b2b583be0c0e7398143d56b5bd14bffea3a82f24476a7adf96c
3
+ metadata.gz: 56bd6a11e678cd280d2652e3f09772b3e30079c713870e1822047b68794a632b
4
+ data.tar.gz: 668dd6b2cf904d2a5f1c2dd917930fc0108a8d63aad8a41a71accff6a25552b2
5
5
  SHA512:
6
- metadata.gz: e1855740986351c969430dbd7594ba98ab4315ee4eeb9b2ecce6de0f547972d0f841521c9aa0f677e628c6e445b84cd686220ce6c458346bc229f9fdde7f24c0
7
- data.tar.gz: cb2e11948b28d6b87d013ff19c1c7c2a37f26cb799bcf19e0f1242d70b2c5ab2244f82d92a54ab9fba4b7af4cb4821c4651f69db0ac0a07b1e1feb8fee2c83ba
6
+ metadata.gz: 6a8aa084abb9dfb11ad52834f55b0f7d2c2f19df7e70bdfe2565faeaf831e1efd47e5e068f79d5d93323eee6808fc7ecded2669c62063d46cc3df2aa8dd00dc7
7
+ data.tar.gz: 31d7142a4b46e74ed855cc757d8038ae7dc8e2c60007d7847b705c17dc01bd3f879341b179a1840370ed9296dbdb59b51ea1ab5fe8f6e4e6bd8883f85af70881
data/README.md CHANGED
@@ -13,11 +13,10 @@ and you will have a new project in the folder you are in
13
13
 
14
14
  Currently we only support:
15
15
 
16
- * Gerating a Selenium with Rspec framework
17
- * Gerating a Watir with Rspec framework
16
+ * Gerating a Selenium with both Cucumber and Rspec framework
17
+ * Gerating a Watir with both Cucumber and Rspec framework
18
+ * Generating an Appium project with Rspec and Cucumber on IOS
18
19
 
19
- We have only tested this in mac and linux, so it works in both platforms.
20
+ In order to run the appium tests, download the example [app](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0)
20
21
 
21
- If you wanna follow the development progress
22
-
23
- https://trello.com/b/Nj7UPy0w/ruby-raider
22
+ This works in all the platforms (Tested on Mac OS, Linux and Windows)
@@ -13,7 +13,9 @@ module RubyRaider
13
13
  end
14
14
 
15
15
  def generate_home_page
16
- template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
16
+ if @_initializer.first.include?('appium_ios')
17
+ template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
18
+ end
17
19
  end
18
20
 
19
21
  def generate_header_component
@@ -19,17 +19,9 @@ module RubyRaider
19
19
  end
20
20
  end
21
21
 
22
- def generate_pom_helper
23
- template('helpers/pom_helper.tt', "#{name}/helpers/pom_helper.rb")
24
- end
25
-
26
22
  def generate_spec_helper
27
- template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
28
- end
29
-
30
- def generate_watir_helper
31
- if @_initializer.first.include?('watir')
32
- template('helpers/watir_helper.tt', "#{name}/helpers/watir_helper.rb")
23
+ if @_initializer.first.include?('rspec')
24
+ template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
33
25
  end
34
26
  end
35
27
 
@@ -1,10 +1,8 @@
1
1
  require 'rspec'
2
- <%= ERB.new(File.read(File.expand_path('./partials/require_raider.tt', __dir__))).result(binding) %>
2
+ <%= ERB.new(File.read(File.expand_path('./partials/require_raider.tt', __dir__)), nil, '-').result(binding) -%>
3
3
 
4
4
  class AbstractPage
5
- include RSpec::Matchers
6
- extend Raider::PomHelper
7
- <%= ERB.new(File.read(File.expand_path('./partials/driver_selector.tt', __dir__))).result(binding) %>
8
- <%= ERB.new(File.read(File.expand_path('./partials/visit_method.tt', __dir__))).result(binding) %>
9
- <%= ERB.new(File.read(File.expand_path('./partials/url_methods.tt', __dir__))).result(binding) %>
5
+ <%= ERB.new(File.read(File.expand_path('./partials/initialize_selector.tt', __dir__))).result(binding) -%>
6
+ <%= ERB.new(File.read(File.expand_path('./partials/visit_method.tt', __dir__))).result(binding) -%>
7
+ <%= ERB.new(File.read(File.expand_path('./partials/url_methods.tt', __dir__))).result(binding) -%>
10
8
  end
@@ -1,6 +1,6 @@
1
1
  [caps]
2
2
  platformName = "iOS"
3
- platformVersion = "15.4"
3
+ platformVersion = "15.5"
4
4
  deviceName = "iPhone SE (3rd generation)"
5
5
  app = "TheApp.app"
6
6
 
@@ -6,7 +6,7 @@ class ConfirmationPage < AbstractPage
6
6
  #Values
7
7
 
8
8
  def login_message
9
- driver.wait { message_element }.text
9
+ @driver.wait { message_element }.text
10
10
  end
11
11
 
12
12
  private
@@ -14,6 +14,6 @@ class ConfirmationPage < AbstractPage
14
14
  # Elements
15
15
 
16
16
  def message_element
17
- driver.find_element(accessibility_id: 'You are logged in as alice')
17
+ @driver.find_element(accessibility_id: 'You are logged in as alice')
18
18
  end
19
19
  end
@@ -7,7 +7,7 @@ class HomePage < AbstractPage
7
7
  #Actions
8
8
 
9
9
  def go_to_login
10
- driver.wait { login_button_navigator }.click
10
+ @driver.wait { login_button_navigator }.click
11
11
  end
12
12
 
13
13
  private
@@ -15,6 +15,6 @@ class HomePage < AbstractPage
15
15
  # Elements
16
16
 
17
17
  def login_button_navigator
18
- driver.find_element(accessibility_id: 'Login Screen')
18
+ @driver.find_element(accessibility_id: 'Login Screen')
19
19
  end
20
20
  end
@@ -1,8 +1,8 @@
1
1
  <% case automation
2
- when 'selenium' %>
2
+ when 'selenium' -%>
3
3
  <%= ERB.new(File.read(File.expand_path('./partials/selenium_login.tt', __dir__))).result(binding) %>
4
- <% when 'watir' %>
4
+ <% when 'watir' -%>
5
5
  <%= ERB.new(File.read(File.expand_path('./partials/watir_login.tt', __dir__))).result(binding) %>
6
- <% else %>
6
+ <% else -%>
7
7
  <%= ERB.new(File.read(File.expand_path('./partials/appium_login.tt', __dir__))).result(binding) %>
8
- <% end %>
8
+ <% end -%>
@@ -15,14 +15,14 @@ class LoginPage < AbstractPage
15
15
  # Elements
16
16
 
17
17
  def username_field
18
- driver.find_element(xpath: "//XCUIElementTypeTextField[@name=\"username\"]")
18
+ @driver.find_element(xpath: "//XCUIElementTypeTextField[@name=\"username\"]")
19
19
  end
20
20
 
21
21
  def password_field
22
- driver.find_element(xpath: "//XCUIElementTypeSecureTextField[@name=\"password\"]")
22
+ @driver.find_element(xpath: "//XCUIElementTypeSecureTextField[@name=\"password\"]")
23
23
  end
24
24
 
25
25
  def login_button
26
- driver.find_elements(xpath: "//XCUIElementTypeOther[@name=\"loginBtn\"]").last
26
+ @driver.find_elements(xpath: "//XCUIElementTypeOther[@name=\"loginBtn\"]").last
27
27
  end
28
28
  end
@@ -1,5 +1,5 @@
1
- <% if %w[selenium appium_ios].include?(automation) %>
2
- driver.find_element
3
- <% else %>
4
- browser.element
5
- <% end %>
1
+ <% if %w[selenium appium_ios].include?(automation) -%>
2
+ @driver.find_element
3
+ <% else -%>
4
+ @browser.element
5
+ <% end -%>
@@ -0,0 +1,9 @@
1
+ <% if automation == 'watir' %>
2
+ def initialize(browser)
3
+ @browser = browser
4
+ end
5
+ <% else %>
6
+ def initialize(driver)
7
+ @driver = driver
8
+ end
9
+ <% end %>
@@ -19,7 +19,7 @@ class LoginPage < AbstractPage
19
19
  # Components
20
20
 
21
21
  def header
22
- HeaderComponent.new(driver.find_element(class: 'menu_text'))
22
+ HeaderComponent.new(@driver.find_element(class: 'menu_text'))
23
23
  end
24
24
 
25
25
  private
@@ -27,14 +27,14 @@ class LoginPage < AbstractPage
27
27
  # Elements
28
28
 
29
29
  def username_field
30
- driver.find_element(id: 'loginFrm_loginname')
30
+ @driver.find_element(id: 'loginFrm_loginname')
31
31
  end
32
32
 
33
33
  def password_field
34
- driver.find_element(id: 'loginFrm_password')
34
+ @driver.find_element(id: 'loginFrm_password')
35
35
  end
36
36
 
37
37
  def login_button
38
- driver.find_element(xpath: "//button[@title='Login']")
38
+ @driver.find_element(xpath: "//button[@title='Login']")
39
39
  end
40
40
  end
@@ -1,9 +1,5 @@
1
1
  <% if %w[selenium watir].include? automation %>
2
2
  def visit(*page)
3
- <% if automation == 'selenium' %>
4
- driver.navigate.to full_url(page.first)
5
- <% else %>
6
- browser.goto full_url(page.first)
7
- <% end %>
3
+ <% if automation == 'selenium' %>@driver.navigate.to full_url(page.first) <% else %>@browser.goto full_url(page.first)<% end %>
8
4
  end
9
5
  <% end %>
@@ -2,7 +2,6 @@ require_relative '../abstract/abstract_page'
2
2
  require_relative '../components/header_component'
3
3
 
4
4
  class LoginPage < AbstractPage
5
- using Raider::WatirHelper
6
5
 
7
6
  def url(_page)
8
7
  'index.php?rt=account/login'
@@ -11,16 +10,15 @@ class LoginPage < AbstractPage
11
10
  # Actions
12
11
 
13
12
  def login(username, password)
14
- username_field.send_keys username
15
- password_field.send_keys password
16
- login_button.click_when_present
13
+ username_field.set username
14
+ password_field.set password
15
+ login_button.click
17
16
  end
18
17
 
19
18
  # Components
20
19
 
21
-
22
20
  def header
23
- HeaderComponent.new(browser.element(class: 'menu_text'))
21
+ HeaderComponent.new(@browser.element(class: 'menu_text'))
24
22
  end
25
23
 
26
24
  private
@@ -28,14 +26,14 @@ class LoginPage < AbstractPage
28
26
  # Elements
29
27
 
30
28
  def username_field
31
- browser.element(id: 'loginFrm_loginname')
29
+ @browser.text_field(id: 'loginFrm_loginname')
32
30
  end
33
31
 
34
32
  def password_field
35
- browser.element(id: 'loginFrm_password')
33
+ @browser.text_field(id: 'loginFrm_password')
36
34
  end
37
35
 
38
36
  def login_button
39
- browser.element(xpath: "//button[@title='Login']")
37
+ @browser.button(xpath: "//button[@title='Login']")
40
38
  end
41
39
  end
@@ -1,21 +1,19 @@
1
- # frozen_string_literal: true
2
-
3
1
  source 'https://rubygems.org'
4
2
 
5
3
  gem 'activesupport'
6
4
  gem 'allure-rspec'
7
5
  gem 'allure-ruby-commons'
8
- <% if framework == 'cucumber' %>
6
+ <% if framework == 'cucumber' -%>
9
7
  gem 'allure-cucumber'
10
- <% end %>
8
+ <% end -%>
11
9
  gem 'parallel_split_test'
12
10
  gem 'parallel_tests'
13
11
  gem 'rake'
14
12
  gem '<%= framework %>'
15
- <% if framework == 'cucumber' %>
13
+ <% if framework == 'cucumber' -%>
16
14
  gem 'rspec'
17
- <% end %>
15
+ <% end -%>
18
16
  <%= ERB.new(File.read(File.expand_path('./partials/automation_gems.tt', __dir__))).result(binding).strip! %>
19
- <% if %w[selenium watir].include? automation %>
17
+ <% if %w[selenium watir].include? automation -%>
20
18
  gem 'webdrivers'
21
- <% end %>
19
+ <% end -%>
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'yaml'
4
2
 
5
3
  desc 'Selects browser for automation run'
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  What is Raider?
4
2
  ===========
5
3
 
@@ -1,8 +1,8 @@
1
1
  <% case automation
2
- when 'selenium' %>
2
+ when 'selenium' -%>
3
3
  <%= ERB.new(File.read(File.expand_path('./partials/selenium_appium_env.tt', __dir__))).result(binding).strip! -%>
4
- <% when 'watir' %>
4
+ <% when 'watir' -%>
5
5
  <%= ERB.new(File.read(File.expand_path('./partials/watir_env.tt', __dir__))).result(binding).strip! -%>
6
- <% else %>
6
+ <% else -%>
7
7
  <%= ERB.new(File.read(File.expand_path('./partials/appium_env.tt', __dir__))).result(binding).strip! -%>
8
- <% end %>
8
+ <% end -%>
@@ -2,12 +2,12 @@ require_relative '../../helpers/driver_helper'
2
2
 
3
3
  Before do
4
4
  Raider::AllureHelper.configure
5
- Raider::DriverHelper.new_driver
6
- Raider::DriverHelper.driver.start_driver
5
+ @driver = Raider::DriverHelper.new_driver
6
+ @driver.start_driver
7
7
  end
8
8
 
9
9
  After do |scenario|
10
- Raider::DriverHelper.driver.screenshot("allure-results/screenshots/#{scenario.name}.png")
10
+ @driver.screenshot("allure-results/screenshots/#{scenario.name}.png")
11
11
  Raider::AllureHelper.add_screenshot(scenario.name)
12
- Raider::DriverHelper.driver.quit_driver
12
+ @driver.quit_driver
13
13
  end
@@ -5,13 +5,16 @@ require_relative '../../page_objects/pages/home_page'
5
5
  require_relative '../../page_objects/pages/login_page'
6
6
 
7
7
  Given("I'm a registered user on the login page") do
8
- HomePage.go_to_login
8
+ home_page = HomePage.new(@driver)
9
+ home_page.go_to_login
9
10
  end
10
11
 
11
12
  When('I login with my credentials') do
12
- LoginPage.login('alice', 'mypassword')
13
+ login_page = LoginPage.new(@driver)
14
+ login_page.login('alice', 'mypassword')
13
15
  end
14
16
 
15
17
  When('I can see the main page') do
16
- expect(ConfirmationPage.login_message).to eq 'You are logged in as alice'
18
+ confirmation_page = ConfirmationPage.new(@driver)
19
+ expect(confirmation_page.login_message).to eq 'You are logged in as alice'
17
20
  end
@@ -1,13 +1,11 @@
1
1
  require_relative '../../helpers/driver_helper'
2
2
 
3
3
  Before do
4
- Raider::AllureHelper.configure
5
- Raider::DriverHelper.new_driver
4
+ @driver = Raider::DriverHelper.new_driver
6
5
  end
7
6
 
8
7
  After do |scenario|
9
- driver = Raider::DriverHelper.driver
10
- driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
8
+ @driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
11
9
  Raider::AllureHelper.add_screenshot(scenario.name)
12
- driver.quit
10
+ @driver.quit
13
11
  end
@@ -2,12 +2,11 @@ require_relative '../../helpers/browser_helper'
2
2
 
3
3
  Before do
4
4
  Raider::AllureHelper.configure
5
- Raider::BrowserHelper.new_browser
5
+ @browser = Raider::BrowserHelper.new_browser
6
6
  end
7
7
 
8
8
  After do |scenario|
9
- browser = Raider::BrowserHelper.browser
10
- browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
9
+ @browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
11
10
  Raider::AllureHelper.add_screenshot(scenario.name)
12
- browser.quit
11
+ @browser.quit
13
12
  end
@@ -3,13 +3,14 @@
3
3
  require_relative '../../page_objects/pages/login_page'
4
4
 
5
5
  Given("I'm a registered user on the login page") do
6
- LoginPage.visit
6
+ @login_page = LoginPage.new(<% if automation == 'watir'%>@browser<% else %>@driver<% end %>)
7
+ @login_page.visit
7
8
  end
8
9
 
9
10
  When('I login with my credentials') do
10
- LoginPage.login('aguspe', '12341234')
11
+ @login_page.login('aguspe', '12341234')
11
12
  end
12
13
 
13
14
  When('I can see the main page') do
14
- expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
15
+ expect(@login_page.header.customer_name).to eq 'Welcome back Agustin'
15
16
  end
@@ -1,5 +1,5 @@
1
- <% if %w[selenium watir].include? automation %>
1
+ <% if %w[selenium watir].include? automation -%>
2
2
  <%= ERB.new(File.read(File.expand_path('./partials/web_steps.tt', __dir__))).result(binding).strip! -%>
3
- <% else %>
3
+ <% else -%>
4
4
  <%= ERB.new(File.read(File.expand_path('./partials/mobile_steps.tt', __dir__))).result(binding).strip! -%>
5
- <% end %>
5
+ <% end -%>
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- <%= ERB.new(File.read(File.expand_path('./partials/allure_requirements.tt', __dir__))).result(binding).strip! %>
3
+ <%= ERB.new(File.read(File.expand_path('./partials/allure_requirements.tt', __dir__))).result(binding).strip! -%>
4
4
  <% allure = ERB.new(File.read(File.expand_path('./partials/allure_imports.tt', __dir__))).result(binding).strip! %>
5
5
 
6
6
  module Raider
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- <% if automation == 'selenium' %>
3
+ <% if automation == 'selenium' -%>
4
4
  require 'webdrivers'
5
- <% else %>
5
+ <% else -%>
6
6
  require 'appium_lib'
7
- <% end %>
7
+ <% end -%>
8
8
  require_relative 'driver_helper'
9
9
 
10
10
  module Raider
@@ -1,5 +1,3 @@
1
1
  <% if automation == 'selenium' %>
2
2
  require_relative 'selenium_helper'
3
- <% elsif automation == 'watir' %>
4
- require_relative 'watir_helper'
5
3
  <% end %>
@@ -1,8 +1,8 @@
1
1
  <% case automation
2
2
  when 'selenium' %>
3
- driver.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
3
+ @driver.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
4
4
  <% when 'watir' %>
5
- browser.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
5
+ @browser.save_screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
6
6
  <% else %>
7
- driver.screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
7
+ @driver.screenshot("allure-results/screenshots/#{example_name}.png") if status == :failed
8
8
  <% end %>
@@ -0,0 +1,8 @@
1
+ <% if automation == 'watir' %>
2
+ @browser = BrowserHelper.new_browser
3
+ <% else %>
4
+ @driver = DriverHelper.new_driver
5
+ <% end %>
6
+ <% if %w[appium_ios].include? automation %>
7
+ @driver.start_driver
8
+ <% end %>
@@ -1,15 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Raider
4
- <% if framework == 'rspec' %>
4
+ <% if framework == 'rspec' -%>
5
5
  require_relative 'spec_helper'
6
- <% end %>
6
+ <% end -%>
7
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' %>
8
+ <% if automation == 'watir' -%>
10
9
  require_relative 'browser_helper'
11
- <% else %>
10
+ <% else -%>
12
11
  require_relative 'driver_helper'
13
- <% end %>
12
+ <% end -%>
14
13
  require_relative 'allure_helper'
15
14
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  require 'rspec'
4
4
  require_relative 'allure_helper'
5
- <% if automation == 'watir' %>
5
+ <% if automation == 'watir' -%>
6
6
  require_relative 'browser_helper'
7
- <% else %>
7
+ <% else -%>
8
8
  require_relative 'driver_helper'
9
- <% end %>
9
+ <% end -%>
10
10
 
11
11
  module Raider
12
12
  module SpecHelper
@@ -15,14 +15,7 @@ module Raider
15
15
  RSpec.configure do |config|
16
16
  config.formatter = AllureHelper.formatter
17
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 %>
18
+ <%= ERB.new(File.read(File.expand_path('./partials/select_driver.tt', __dir__))).result(binding).strip! %>
26
19
  end
27
20
 
28
21
  config.after(:each) do
@@ -1,25 +1,34 @@
1
- <% if %w[selenium watir].include? automation %>
1
+ <% if %w[selenium watir].include? automation -%>
2
2
  require_relative 'base_spec'
3
3
  require_relative '../page_objects/pages/login_page'
4
4
 
5
- class LoginSpec < BaseSpec
6
- describe 'Login' do
7
- before(:each) do
8
- LoginPage.visit
9
- end
5
+ describe 'Login' do
6
+ let(:user_name) { 'aguspe' }
7
+ let(:login_page) { LoginPage.new(<% if automation == 'watir' -%>@browser<% else -%>@driver<% end -%>) }
8
+ subject { login_page.header.customer_name }
9
+
10
+ before(:example) do
11
+ login_page.visit
12
+ login_page.login(user_name, password)
13
+ end
10
14
 
11
- it 'can login with valid credentials' do
12
- LoginPage.login('aguspe', '12341234')
13
- expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
15
+ context 'with right credentials' do
16
+ let(:password) { '12341234' }
17
+
18
+ it 'can successfully log in' do
19
+ expect(subject).to eq 'Welcome back Agustin'
14
20
  end
21
+ end
22
+
23
+ context 'with wrong credentials' do
24
+ let(:password) { 'wrongPassword' }
15
25
 
16
- it 'cannot login with wrong credentials' do
17
- LoginPage.login('aguspe', 'wrongPassword')
18
- expect(LoginPage.header.customer_name).to be_empty
26
+ it 'it cannot login in' do
27
+ expect(subject).to be_empty
19
28
  end
20
29
  end
21
30
  end
22
- <% else %>
31
+ <% else -%>
23
32
  require_relative '../page_objects/pages/confirmation_page'
24
33
  require_relative '../page_objects/pages/home_page'
25
34
  require_relative 'base_spec'
@@ -27,11 +36,18 @@ require_relative '../page_objects/pages/login_page'
27
36
 
28
37
  class LoginSpec < BaseSpec
29
38
  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'
39
+
40
+ let(:user_name) { 'alice' }
41
+ let(:password) { 'mypassword' }
42
+ let(:login_page) { LoginPage.new(@driver) }
43
+ let(:home_page) { HomePage.new(@driver) }
44
+ let(:confirmation_page) { ConfirmationPage.new(@driver) }
45
+
46
+ it 'can login' do
47
+ home_page.go_to_login
48
+ login_page.login(user_name, password)
49
+ expect(confirmation_page.login_message).to eq 'You are logged in as alice'
34
50
  end
35
51
  end
36
52
  end
37
- <% end %>
53
+ <% 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.0'
5
+ s.version = '0.2.3'
6
6
  s.summary = 'A gem to make setup and start of UI automation projects easier'
7
7
  s.description = 'This gem contents everything you need to start doing web automation in one simple package'
8
8
  s.authors = ['Agustin Pequeno']
@@ -22,6 +22,10 @@ describe RubyRaider::CucumberGenerator do
22
22
  expect(File.exist?("#{@name}/features/support/env.rb")).to be_truthy
23
23
  end
24
24
 
25
+ it 'does not create a spec file' do
26
+ expect(File.exist?("#{@name}/spec/login_spec.rb")).to be_falsey
27
+ end
28
+
25
29
  after(:all) do
26
30
  FileUtils.rm_rf(@name)
27
31
  end
@@ -44,6 +48,10 @@ describe RubyRaider::CucumberGenerator do
44
48
  it 'creates an env file' do
45
49
  expect(File.exist?("#{@name}/features/support/env.rb")).to be_truthy
46
50
  end
51
+
52
+ after(:all) do
53
+ FileUtils.rm_rf(@name)
54
+ end
47
55
  end
48
56
 
49
57
  context 'with appium' do
@@ -14,10 +14,6 @@ describe RubyRaider::HelpersGenerator do
14
14
  expect(File.exist?("#{@name}/helpers/raider.rb")).to be_truthy
15
15
  end
16
16
 
17
- it 'creates a pom helper file' do
18
- expect(File.exist?("#{@name}/helpers/pom_helper.rb")).to be_truthy
19
- end
20
-
21
17
  it 'creates an allure helper file' do
22
18
  expect(File.exist?("#{@name}/helpers/allure_helper.rb")).to be_truthy
23
19
  end
@@ -45,10 +41,6 @@ describe RubyRaider::HelpersGenerator do
45
41
  expect(File.exist?("#{@name}/helpers/browser_helper.rb")).to be_truthy
46
42
  end
47
43
 
48
- it 'creates a pom helper file' do
49
- expect(File.exist?("#{@name}/helpers/pom_helper.rb")).to be_truthy
50
- end
51
-
52
44
  it 'creates a raider file' do
53
45
  expect(File.exist?("#{@name}/helpers/raider.rb")).to be_truthy
54
46
  end
@@ -72,10 +64,6 @@ describe RubyRaider::HelpersGenerator do
72
64
  expect(File.exist?("#{@name}/helpers/raider.rb")).to be_truthy
73
65
  end
74
66
 
75
- it 'creates a pom helper file' do
76
- expect(File.exist?("#{@name}/helpers/pom_helper.rb")).to be_truthy
77
- end
78
-
79
67
  it 'creates an allure helper file' do
80
68
  expect(File.exist?("#{@name}/helpers/allure_helper.rb")).to be_truthy
81
69
  end
@@ -94,10 +82,6 @@ describe RubyRaider::HelpersGenerator do
94
82
  RubyRaider::HelpersGenerator.new(['selenium', 'cucumber', @name]).invoke_all
95
83
  end
96
84
 
97
- it 'creates a pom helper file' do
98
- expect(File.exist?("#{@name}/helpers/pom_helper.rb")).to be_truthy
99
- end
100
-
101
85
  it 'creates an allure helper file' do
102
86
  expect(File.exist?("#{@name}/helpers/allure_helper.rb")).to be_truthy
103
87
  end
@@ -106,6 +90,10 @@ describe RubyRaider::HelpersGenerator do
106
90
  expect(File.exist?("#{@name}/helpers/driver_helper.rb")).to be_truthy
107
91
  end
108
92
 
93
+ it 'does not create a spec helper' do
94
+ expect(File.exist?("#{@name}/helpers/spec_helper.rb")).to be_falsey
95
+ end
96
+
109
97
  after(:all) do
110
98
  FileUtils.rm_rf(@name)
111
99
  end
@@ -125,6 +113,10 @@ describe RubyRaider::HelpersGenerator do
125
113
  expect(File.exist?("#{@name}/helpers/raider.rb")).to be_truthy
126
114
  end
127
115
 
116
+ it 'does not create a spec helper' do
117
+ expect(File.exist?("#{@name}/helpers/spec_helper.rb")).to be_falsey
118
+ end
119
+
128
120
  after(:all) do
129
121
  FileUtils.rm_rf(@name)
130
122
  end
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.0
4
+ version: 0.2.3
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-08 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -138,8 +138,8 @@ files:
138
138
  - lib/generators/templates/automation/home_page.tt
139
139
  - lib/generators/templates/automation/login_page.tt
140
140
  - lib/generators/templates/automation/partials/appium_login.tt
141
- - lib/generators/templates/automation/partials/driver_selector.tt
142
141
  - lib/generators/templates/automation/partials/element.tt
142
+ - lib/generators/templates/automation/partials/initialize_selector.tt
143
143
  - lib/generators/templates/automation/partials/require_raider.tt
144
144
  - lib/generators/templates/automation/partials/selenium_login.tt
145
145
  - lib/generators/templates/automation/partials/url_methods.tt
@@ -163,16 +163,14 @@ files:
163
163
  - lib/generators/templates/helpers/driver_helper.tt
164
164
  - lib/generators/templates/helpers/partials/allure_imports.tt
165
165
  - lib/generators/templates/helpers/partials/allure_requirements.tt
166
- - lib/generators/templates/helpers/partials/driver_requirements.tt
167
166
  - lib/generators/templates/helpers/partials/new_driver.tt
168
167
  - lib/generators/templates/helpers/partials/quit_driver.tt
169
168
  - lib/generators/templates/helpers/partials/require_automation.tt
170
169
  - lib/generators/templates/helpers/partials/screenshot.tt
171
- - lib/generators/templates/helpers/pom_helper.tt
170
+ - lib/generators/templates/helpers/partials/select_driver.tt
172
171
  - lib/generators/templates/helpers/raider_helper.tt
173
172
  - lib/generators/templates/helpers/selenium_helper.tt
174
173
  - lib/generators/templates/helpers/spec_helper.tt
175
- - lib/generators/templates/helpers/watir_helper.tt
176
174
  - lib/generators/templates/rspec/base_spec.tt
177
175
  - lib/generators/templates/rspec/spec.tt
178
176
  - lib/ruby_raider.rb
@@ -1,9 +0,0 @@
1
- <% if automation == 'watir' %>
2
- def browser
3
- Raider::BrowserHelper.browser
4
- end
5
- <% else %>
6
- def driver
7
- Raider::DriverHelper.driver
8
- end
9
- <% end %>
@@ -1,14 +0,0 @@
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
@@ -1,19 +0,0 @@
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
@@ -1,16 +0,0 @@
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