ruby_raider 0.7.5 → 0.7.6
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 +4 -4
- data/lib/generators/automation/templates/abstract_page.tt +16 -3
- data/lib/generators/automation/templates/appium_caps.tt +1 -1
- data/lib/generators/automation/templates/home_page.tt +18 -0
- data/lib/generators/automation/templates/pdp_page.tt +19 -0
- data/lib/generators/cucumber/templates/partials/appium_env.tt +18 -1
- data/lib/generators/cucumber/templates/partials/mobile_steps.tt +20 -0
- data/lib/generators/generator.rb +2 -2
- data/lib/generators/menu_generator.rb +9 -0
- data/lib/generators/rspec/templates/spec.tt +17 -0
- data/lib/generators/templates/common/gemfile.tt +3 -0
- data/lib/generators/templates/helpers/driver_helper.tt +23 -0
- data/lib/generators/templates/helpers/spec_helper.tt +29 -1
- data/ruby_raider.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3c7392870379f23c003129b0c892eeb60cfd87fe7d0479e42670cfd9b20fc13
|
4
|
+
data.tar.gz: b09e4169504207c2af34d0a0a0f5846ab370c9df62cd1e350daf747c4980e1c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc2e7a690f3ba2c6f23d2344ad7e634e4046bdfb7da082f4522f0a3736650f32767ac5ad8484649c26df8499624ba522e8f8b2f58122f42debcd54dae87c90bf
|
7
|
+
data.tar.gz: 2e12ed98a785fcee9f22310d4ead6b8de730eea67c092d319c183c5a1051c1317345186b14669e0f417cbe0ab4827390b2e49729704b779e1cb7e04e16305a3a
|
@@ -1,7 +1,19 @@
|
|
1
|
-
<%- if automation == '
|
2
|
-
|
3
|
-
|
1
|
+
<%- if automation == 'sparkling_ios' -%>
|
2
|
+
require 'sparkling_watir/element'
|
3
|
+
|
4
|
+
class AbstractPage
|
5
|
+
|
6
|
+
attr_reader :app
|
7
|
+
|
8
|
+
def initialize(app)
|
9
|
+
@app = app
|
10
|
+
end
|
4
11
|
|
12
|
+
def to_s
|
13
|
+
self.class.to_s.sub('Page', ' Page')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
<%- else -%>
|
5
17
|
class AbstractPage
|
6
18
|
<% if automation == 'cross_platform' -%>
|
7
19
|
include AppiumHelper
|
@@ -14,3 +26,4 @@ class AbstractPage
|
|
14
26
|
self.class.to_s.sub('Page', ' Page')
|
15
27
|
end
|
16
28
|
end
|
29
|
+
<%- end -%>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% if automation
|
1
|
+
<% if automation.include?('ios') %>
|
2
2
|
<%= ERB.new(File.read(File.expand_path('./partials/ios_caps.tt', __dir__))).result(binding) -%>
|
3
3
|
<% elsif automation == 'android' %>
|
4
4
|
<%= ERB.new(File.read(File.expand_path('./partials/android_caps.tt', __dir__))).result(binding) -%>
|
@@ -1,7 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../abstract/abstract_page'
|
4
|
+
<%- if automation == 'sparkling_ios' -%>
|
5
|
+
class HomePage < AbstractPage
|
6
|
+
|
7
|
+
# Actions
|
4
8
|
|
9
|
+
def go_to_backpack_pdp
|
10
|
+
app.tap on: backpack_image.wait_until(&:present?)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# Elements
|
16
|
+
|
17
|
+
def backpack_image
|
18
|
+
app.element(predicate: 'label == "Sauce Labs Backpack"')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
<%- else -%>
|
5
22
|
class HomePage < AbstractPage
|
6
23
|
|
7
24
|
# Actions
|
@@ -18,3 +35,4 @@ class HomePage < AbstractPage
|
|
18
35
|
<%= ERB.new(File.read(File.expand_path('./partials/home_page_selector.tt', __dir__)), trim_mode: '-').result(binding) %>
|
19
36
|
end
|
20
37
|
end
|
38
|
+
<%- end -%>
|
@@ -1,4 +1,22 @@
|
|
1
1
|
require_relative '../abstract/abstract_page'
|
2
|
+
<%- if automation == 'sparkling_ios' -%>
|
3
|
+
class PdpPage < AbstractPage
|
4
|
+
|
5
|
+
# Actions
|
6
|
+
|
7
|
+
def add_to_cart_text
|
8
|
+
add_to_cart_button.wait_until(&:present?).text
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
# Elements
|
14
|
+
|
15
|
+
def add_to_cart_button
|
16
|
+
app.element(accessibility_id: 'Add To Cart button')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
<%- else -%>
|
2
20
|
|
3
21
|
class PdpPage < AbstractPage
|
4
22
|
|
@@ -16,3 +34,4 @@ class PdpPage < AbstractPage
|
|
16
34
|
<%= ERB.new(File.read(File.expand_path('./partials/pdp_page_selector.tt', __dir__)), trim_mode: '-').result(binding) %>
|
17
35
|
end
|
18
36
|
end
|
37
|
+
<%- end -%>
|
@@ -1,3 +1,19 @@
|
|
1
|
+
<%- if automation == 'sparkling_ios' -%>
|
2
|
+
require_relative '../../helpers/driver_helper'
|
3
|
+
|
4
|
+
include DriverHelper
|
5
|
+
|
6
|
+
Before do
|
7
|
+
AllureHelper.configure
|
8
|
+
app
|
9
|
+
end
|
10
|
+
|
11
|
+
After do |scenario|
|
12
|
+
app.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
|
13
|
+
AllureHelper.add_screenshot(scenario.name)
|
14
|
+
app.close
|
15
|
+
end
|
16
|
+
<%- else -%>
|
1
17
|
require_relative '../../helpers/driver_helper'
|
2
18
|
|
3
19
|
include DriverHelper
|
@@ -11,4 +27,5 @@ After do |scenario|
|
|
11
27
|
driver.screenshot("allure-results/screenshots/#{scenario.name}.png")
|
12
28
|
AllureHelper.add_screenshot(scenario.name)
|
13
29
|
driver.quit_driver
|
14
|
-
end
|
30
|
+
end
|
31
|
+
<%- end -%>
|
@@ -1,3 +1,22 @@
|
|
1
|
+
<%- if automation == 'sparkling_ios' -%>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require_relative '../../page_objects/pages/home_page'
|
5
|
+
require_relative '../../page_objects/pages/pdp_page'
|
6
|
+
|
7
|
+
Given("I'm an anonymous user on the home page") do
|
8
|
+
@home_page = HomePage.new(app)
|
9
|
+
end
|
10
|
+
|
11
|
+
When('I select one of the products') do
|
12
|
+
@home_page.go_to_backpack_pdp
|
13
|
+
end
|
14
|
+
|
15
|
+
When("I'm redirected to the product details page") do
|
16
|
+
pdp_page = PdpPage.new(app)
|
17
|
+
expect(pdp_page.add_to_cart_text).to eq 'Add To Cart'
|
18
|
+
end
|
19
|
+
<%- else -%>
|
1
20
|
# frozen_string_literal: true
|
2
21
|
|
3
22
|
require_relative '../../page_objects/pages/home_page'
|
@@ -15,3 +34,4 @@ When("I'm redirected to the product details page") do
|
|
15
34
|
pdp_page = PdpPage.new(driver)
|
16
35
|
expect(pdp_page.add_to_cart_text).to eq 'Add To Cart'
|
17
36
|
end
|
37
|
+
<%- end -%>
|
data/lib/generators/generator.rb
CHANGED
@@ -29,11 +29,11 @@ class Generator < Thor::Group
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def mobile?
|
32
|
-
(args & %w[android ios cross_platform]).count.positive?
|
32
|
+
(args & %w[android ios cross_platform sparkling_ios]).count.positive?
|
33
33
|
end
|
34
34
|
|
35
35
|
def single_platform?
|
36
|
-
(args & %w[android ios]).count.positive?
|
36
|
+
(args & %w[android ios sparkling_ios]).count.positive?
|
37
37
|
end
|
38
38
|
|
39
39
|
def rspec?
|
@@ -19,6 +19,7 @@ class MenuGenerator
|
|
19
19
|
prompt.select('Please select your automation framework') do |menu|
|
20
20
|
menu.choice :Appium, -> { choose_test_framework('appium') }
|
21
21
|
menu.choice :Selenium, -> { choose_test_framework('selenium') }
|
22
|
+
menu.choice 'Sparkling Watir', -> { choose_test_framework('sparkling') }
|
22
23
|
menu.choice :Watir, -> { choose_test_framework('watir') }
|
23
24
|
menu.choice :Quit, -> { exit }
|
24
25
|
end
|
@@ -30,6 +31,7 @@ class MenuGenerator
|
|
30
31
|
|
31
32
|
def choose_test_framework(automation)
|
32
33
|
return choose_mobile_platform if automation == 'appium'
|
34
|
+
return choose_sparkling_platform if automation == 'sparkling'
|
33
35
|
|
34
36
|
select_test_framework(automation)
|
35
37
|
end
|
@@ -45,6 +47,13 @@ class MenuGenerator
|
|
45
47
|
system "cd #{name} && gem install bundler && bundle install"
|
46
48
|
end
|
47
49
|
|
50
|
+
def choose_sparkling_platform
|
51
|
+
prompt.select('Please select your mobile platform') do |menu|
|
52
|
+
menu.choice :iOS, -> { choose_test_framework 'sparkling_ios' }
|
53
|
+
menu.choice :Quit, -> { exit }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
48
57
|
def choose_mobile_platform
|
49
58
|
prompt.select('Please select your mobile platform') do |menu|
|
50
59
|
menu.choice :iOS, -> { choose_test_framework 'ios' }
|
@@ -42,6 +42,23 @@ describe 'Login' do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
|
+
<%- elsif automation == 'sparkling_ios' -%>
|
46
|
+
require_relative '../helpers/spec_helper'
|
47
|
+
require_relative '../page_objects/pages/home_page'
|
48
|
+
require_relative '../page_objects/pages/pdp_page'
|
49
|
+
|
50
|
+
class PdpSpec
|
51
|
+
describe 'PDP page' do
|
52
|
+
|
53
|
+
let(:home_page) { HomePage.new(app) }
|
54
|
+
let(:pdp_page) { PdpPage.new(app) }
|
55
|
+
|
56
|
+
it 'shows add to cart button' do
|
57
|
+
home_page.go_to_backpack_pdp
|
58
|
+
expect(pdp_page.add_to_cart_text).to eq 'Add To Cart'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
45
62
|
<%- else -%>
|
46
63
|
require_relative '../helpers/spec_helper'
|
47
64
|
require_relative '../page_objects/pages/home_page'
|
@@ -1,3 +1,25 @@
|
|
1
|
+
<%- if automation == 'sparkling_ios' -%>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'yaml'
|
4
|
+
require 'sparkling_watir'
|
5
|
+
|
6
|
+
module DriverHelper
|
7
|
+
def app
|
8
|
+
@app ||= create_app
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def create_app
|
14
|
+
@app = SparklingWatir::App.new(caps: caps)
|
15
|
+
end
|
16
|
+
|
17
|
+
# :reek:UtilityFunction
|
18
|
+
def caps
|
19
|
+
YAML.load_file('config/capabilities.yml')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
<%- else -%>
|
1
23
|
# frozen_string_literal: true
|
2
24
|
require 'yaml'
|
3
25
|
<% if automation == 'selenium' -%>
|
@@ -29,3 +51,4 @@ module DriverHelper
|
|
29
51
|
end
|
30
52
|
<%- end -%>
|
31
53
|
end
|
54
|
+
<%- end -%>
|
@@ -1,3 +1,30 @@
|
|
1
|
+
<%- if automation == 'sparkling_ios' -%>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'rspec'
|
5
|
+
require_relative 'allure_helper'
|
6
|
+
require_relative 'driver_helper'
|
7
|
+
require 'sparkling_watir'
|
8
|
+
|
9
|
+
module SpecHelper
|
10
|
+
|
11
|
+
AllureHelper.configure
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.formatter = AllureHelper.formatter
|
14
|
+
config.include(DriverHelper)
|
15
|
+
config.before(:each) do
|
16
|
+
app
|
17
|
+
end
|
18
|
+
|
19
|
+
config.after(:each) do
|
20
|
+
example_name = self.class.descendant_filtered_examples.first.description
|
21
|
+
app.screenshot.save("allure-results/screenshots/#{example_name}.png")
|
22
|
+
AllureHelper.add_screenshot example_name
|
23
|
+
app.close
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
<%- else -%>
|
1
28
|
# frozen_string_literal: true
|
2
29
|
|
3
30
|
require 'rspec'
|
@@ -27,4 +54,5 @@ module SpecHelper
|
|
27
54
|
<%= ERB.new(File.read(File.expand_path('./partials/quit_driver.tt', __dir__)), trim_mode: '-').result(binding).strip! %>
|
28
55
|
end
|
29
56
|
end
|
30
|
-
end
|
57
|
+
end
|
58
|
+
<%- 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.7.
|
5
|
+
s.version = '0.7.6'
|
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']
|