ruby_raider 0.1.9 → 0.2.0
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/.reek.yml +3 -0
- data/.rubocop.yml +6 -0
- data/Rakefile +2 -0
- data/bin/raider +1 -0
- data/lib/generators/automation_generator.rb +43 -0
- data/lib/generators/common_generator.rb +31 -0
- data/lib/generators/cucumber_generator.rb +19 -0
- data/lib/generators/generator.rb +16 -0
- data/lib/generators/helper_generator.rb +48 -0
- data/lib/generators/menu_generator.rb +27 -14
- data/lib/generators/rspec_generator.rb +16 -0
- data/lib/generators/templates/automation/abstract_component.tt +7 -0
- data/lib/generators/templates/automation/abstract_page.tt +10 -0
- data/lib/generators/templates/automation/appium_settings.tt +8 -0
- data/lib/generators/templates/automation/component.tt +9 -0
- data/lib/generators/templates/automation/confirmation_page.tt +19 -0
- data/lib/generators/templates/automation/home_page.tt +20 -0
- data/lib/generators/templates/automation/login_page.tt +8 -0
- data/lib/generators/templates/automation/partials/appium_login.tt +28 -0
- data/lib/generators/templates/automation/partials/driver_selector.tt +9 -0
- data/lib/generators/templates/automation/partials/element.tt +5 -0
- data/lib/generators/templates/automation/partials/require_raider.tt +5 -0
- data/lib/generators/templates/automation/partials/selenium_login.tt +40 -0
- data/lib/generators/templates/automation/partials/url_methods.tt +13 -0
- data/lib/generators/templates/automation/partials/visit_method.tt +9 -0
- data/lib/generators/templates/automation/partials/watir_login.tt +41 -0
- data/lib/generators/templates/common/config.tt +1 -0
- data/lib/generators/templates/common/gemfile.tt +21 -0
- data/lib/generators/templates/common/partials/automation_gems.tt +10 -0
- data/lib/generators/templates/common/rakefile.tt +10 -0
- data/lib/generators/templates/common/read_me.tt +99 -0
- data/lib/generators/templates/cucumber/env.tt +8 -0
- data/lib/generators/templates/cucumber/feature.tt +6 -0
- data/lib/generators/templates/cucumber/partials/appium_env.tt +13 -0
- data/lib/generators/templates/cucumber/partials/mobile_steps.tt +17 -0
- data/lib/generators/templates/cucumber/partials/selenium_appium_env.tt +13 -0
- data/lib/generators/templates/cucumber/partials/watir_env.tt +13 -0
- data/lib/generators/templates/cucumber/partials/web_steps.tt +15 -0
- data/lib/generators/templates/cucumber/steps.tt +5 -0
- data/lib/generators/templates/helpers/allure_helper.tt +32 -0
- data/lib/generators/templates/helpers/browser_helper.tt +19 -0
- data/lib/generators/templates/helpers/driver_helper.tt +18 -0
- data/lib/generators/templates/helpers/partials/allure_imports.tt +5 -0
- data/lib/generators/templates/helpers/partials/allure_requirements.tt +6 -0
- data/lib/generators/templates/helpers/partials/driver_requirements.tt +14 -0
- data/lib/generators/templates/helpers/partials/new_driver.tt +11 -0
- data/lib/generators/templates/helpers/partials/quit_driver.tt +8 -0
- data/lib/generators/templates/helpers/partials/require_automation.tt +5 -0
- data/lib/generators/templates/helpers/partials/screenshot.tt +8 -0
- data/lib/generators/templates/helpers/pom_helper.tt +19 -0
- data/lib/generators/templates/helpers/raider_helper.tt +15 -0
- data/lib/generators/templates/helpers/selenium_helper.tt +36 -0
- data/lib/generators/templates/helpers/spec_helper.tt +37 -0
- data/lib/generators/templates/helpers/watir_helper.tt +16 -0
- data/lib/generators/templates/rspec/base_spec.tt +5 -0
- data/lib/generators/templates/rspec/spec.tt +37 -0
- data/lib/ruby_raider.rb +5 -4
- data/ruby_raider.gemspec +7 -1
- data/spec/automation_generator_spec.rb +192 -0
- data/spec/common_generator_spec.rb +141 -0
- data/spec/cucumber_generator_spec.rb +71 -0
- data/spec/helpers_generator_spec.rb +133 -0
- data/spec/rspec_generator_spec.rb +63 -0
- data/spec/spec_helper.rb +3 -3
- metadata +116 -43
- data/lib/generators/files/automation_file_generator.rb +0 -61
- data/lib/generators/files/common_file_generator.rb +0 -38
- data/lib/generators/files/cucumber_file_generator.rb +0 -33
- data/lib/generators/files/file_generator.rb +0 -11
- data/lib/generators/files/helpers_file_generator.rb +0 -70
- data/lib/generators/files/rspec_file_generator.rb +0 -29
- data/lib/generators/projects/cucumber_project_generator.rb +0 -34
- data/lib/generators/projects/project_generator.rb +0 -27
- data/lib/generators/projects/rspec_project_generator.rb +0 -26
- data/lib/generators/templates/automation/abstract_component_template.rb +0 -22
- data/lib/generators/templates/automation/abstract_page_template.rb +0 -82
- data/lib/generators/templates/automation/appium_settings_template.rb +0 -16
- data/lib/generators/templates/automation/component_template.rb +0 -16
- data/lib/generators/templates/automation/confirmation_page_template.rb +0 -26
- data/lib/generators/templates/automation/home_page_template.rb +0 -26
- data/lib/generators/templates/automation/login_page_template.rb +0 -113
- data/lib/generators/templates/common/config_template.rb +0 -9
- data/lib/generators/templates/common/gemfile_template.rb +0 -52
- data/lib/generators/templates/common/rake_file_template.rb +0 -16
- data/lib/generators/templates/common/read_me_template.rb +0 -104
- data/lib/generators/templates/cucumber/env_template.rb +0 -38
- data/lib/generators/templates/cucumber/example_feature_template.rb +0 -15
- data/lib/generators/templates/cucumber/example_steps_template.rb +0 -21
- data/lib/generators/templates/helpers/allure_helper_template.rb +0 -47
- data/lib/generators/templates/helpers/browser_helper_template.rb +0 -26
- data/lib/generators/templates/helpers/driver_helper_template.rb +0 -54
- data/lib/generators/templates/helpers/pom_helper_template.rb +0 -25
- data/lib/generators/templates/helpers/raider_helper_template.rb +0 -27
- data/lib/generators/templates/helpers/selenium_helper_template.rb +0 -42
- data/lib/generators/templates/helpers/spec_helper_template.rb +0 -74
- data/lib/generators/templates/helpers/watir_helper_template.rb +0 -24
- data/lib/generators/templates/rspec/base_spec_template.rb +0 -13
- data/lib/generators/templates/rspec/example_spec_template.rb +0 -56
- data/lib/generators/templates/template.rb +0 -14
- data/spec/automation_file_generator_spec.rb +0 -59
- data/spec/common_file_generator_spec.rb +0 -27
- data/spec/cucumber_file_generator_spec.rb +0 -26
- data/spec/cucumber_project_generator_spec.rb +0 -60
- data/spec/helpers_file_generator_spec.rb +0 -73
- data/spec/rspec_file_generator_spec.rb +0 -21
- data/spec/rspec_project_generator_spec.rb +0 -69
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f8a66075dc98e049b9a8c541cb9b3c8a14ab15ca217f9bf1829b258ac5984a9f
|
|
4
|
+
data.tar.gz: 85f79fae82e57b2b583be0c0e7398143d56b5bd14bffea3a82f24476a7adf96c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1855740986351c969430dbd7594ba98ab4315ee4eeb9b2ecce6de0f547972d0f841521c9aa0f677e628c6e445b84cd686220ce6c458346bc229f9fdde7f24c0
|
|
7
|
+
data.tar.gz: cb2e11948b28d6b87d013ff19c1c7c2a37f26cb799bcf19e0f1242d70b2c5ab2244f82d92a54ab9fba4b7af4cb4821c4651f69db0ac0a07b1e1feb8fee2c83ba
|
data/.reek.yml
ADDED
data/.rubocop.yml
ADDED
data/Rakefile
CHANGED
data/bin/raider
CHANGED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'generator'
|
|
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
|
|
10
|
+
|
|
11
|
+
def generate_abstract_page
|
|
12
|
+
template('automation/abstract_page.tt', "#{name}/page_objects/abstract/abstract_page.rb")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def generate_home_page
|
|
16
|
+
template('automation/home_page.tt', "#{name}/page_objects/pages/home_page.rb")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def generate_header_component
|
|
20
|
+
unless @_initializer.first.include?('appium_ios')
|
|
21
|
+
template('automation/component.tt', "#{name}/page_objects/components/header_component.rb")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def generate_abstract_component
|
|
26
|
+
unless @_initializer.first.include?('appium_ios')
|
|
27
|
+
template('automation/abstract_component.tt', "#{name}/page_objects/abstract/abstract_component.rb")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def generate_confirmation_page
|
|
32
|
+
if @_initializer.first.include?('appium_ios')
|
|
33
|
+
template('automation/confirmation_page.tt', "#{name}/page_objects/pages/confirmation_page.rb")
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def generate_appium_settings
|
|
38
|
+
if @_initializer.first.include?('appium_ios')
|
|
39
|
+
template('automation/appium_settings.tt', "#{name}/appium.txt")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'generator'
|
|
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
|
|
31
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'generator'
|
|
4
|
+
|
|
5
|
+
module RubyRaider
|
|
6
|
+
class CucumberGenerator < Generator
|
|
7
|
+
def generate_feature
|
|
8
|
+
template('cucumber/feature.tt', "#{name}/features/login.feature")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def generate_steps
|
|
12
|
+
template('cucumber/steps.tt', "#{name}/features/step_definitions/login_steps.rb")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def generate_env_file
|
|
16
|
+
template('cucumber/env.tt', "#{name}/features/support/env.rb")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module RubyRaider
|
|
5
|
+
class Generator < Thor::Group
|
|
6
|
+
include Thor::Actions
|
|
7
|
+
|
|
8
|
+
argument :automation
|
|
9
|
+
argument :framework
|
|
10
|
+
argument :name
|
|
11
|
+
|
|
12
|
+
def self.source_root
|
|
13
|
+
File.dirname(__FILE__) + '/templates'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'generator'
|
|
4
|
+
|
|
5
|
+
module RubyRaider
|
|
6
|
+
class HelpersGenerator < Generator
|
|
7
|
+
|
|
8
|
+
def generate_raider_helper
|
|
9
|
+
template('helpers/raider_helper.tt', "#{name}/helpers/raider.rb")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def generate_allure_helper
|
|
13
|
+
template('helpers/allure_helper.tt', "#{name}/helpers/allure_helper.rb")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def generate_browser_helper
|
|
17
|
+
if @_initializer.first.include?('watir')
|
|
18
|
+
template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def generate_pom_helper
|
|
23
|
+
template('helpers/pom_helper.tt', "#{name}/helpers/pom_helper.rb")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
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")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def generate_selenium_helper
|
|
37
|
+
if @_initializer.first.include?('selenium')
|
|
38
|
+
template('helpers/selenium_helper.tt', "#{name}/helpers/selenium_helper.rb")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def generate_driver_helper
|
|
43
|
+
unless @_initializer.first.include?('watir')
|
|
44
|
+
template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'highline'
|
|
2
|
-
require_relative '
|
|
3
|
-
require_relative '
|
|
4
|
+
require_relative 'automation_generator'
|
|
5
|
+
require_relative 'common_generator'
|
|
6
|
+
require_relative 'cucumber_generator'
|
|
7
|
+
require_relative 'helper_generator'
|
|
8
|
+
require_relative 'rspec_generator'
|
|
4
9
|
|
|
5
10
|
module RubyRaider
|
|
6
11
|
class MenuGenerator
|
|
@@ -23,15 +28,13 @@ module RubyRaider
|
|
|
23
28
|
framework = ''
|
|
24
29
|
@cli.choose do |menu|
|
|
25
30
|
menu.prompt = 'Please select your test framework'
|
|
26
|
-
menu.choice('Rspec')
|
|
31
|
+
menu.choice('Rspec') do
|
|
32
|
+
framework = 'rspec'
|
|
33
|
+
set_framework(automation, framework, project_name)
|
|
34
|
+
end
|
|
27
35
|
menu.choice('Cucumber') do
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
set_framework(automation, framework, project_name)
|
|
31
|
-
else
|
|
32
|
-
pp 'We will support iOS with cucumber on the next release'
|
|
33
|
-
exit
|
|
34
|
-
end
|
|
36
|
+
framework = 'cucumber'
|
|
37
|
+
set_framework(automation, framework, project_name)
|
|
35
38
|
end
|
|
36
39
|
menu.choice('Quit') { exit }
|
|
37
40
|
end
|
|
@@ -40,18 +43,28 @@ module RubyRaider
|
|
|
40
43
|
|
|
41
44
|
def set_framework(automation, framework, project_name)
|
|
42
45
|
if framework == 'rspec'
|
|
43
|
-
|
|
46
|
+
RspecGenerator.new([automation, framework, project_name]).invoke_all
|
|
44
47
|
else
|
|
45
|
-
|
|
48
|
+
CucumberGenerator.new([automation, framework, project_name]).invoke_all
|
|
46
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"
|
|
47
54
|
end
|
|
48
55
|
|
|
49
56
|
def choose_mobile_platform
|
|
50
57
|
@cli.choose do |menu|
|
|
51
58
|
menu.prompt = 'Please select your mobile platform'
|
|
52
59
|
menu.choice('iOS') { 'appium_ios' }
|
|
53
|
-
menu.choice('Android')
|
|
54
|
-
|
|
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
|
|
55
68
|
menu.choice('Quit') { exit }
|
|
56
69
|
end
|
|
57
70
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'generator'
|
|
4
|
+
|
|
5
|
+
module RubyRaider
|
|
6
|
+
class RspecGenerator < Generator
|
|
7
|
+
|
|
8
|
+
def generate_spec
|
|
9
|
+
template('rspec/spec.tt', "#{name}/spec/login_page_spec.rb")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def generate_base_spec
|
|
13
|
+
template('rspec/base_spec.tt', "#{name}/spec/base_spec.rb")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
<%= ERB.new(File.read(File.expand_path('./partials/require_raider.tt', __dir__))).result(binding) %>
|
|
3
|
+
|
|
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) %>
|
|
10
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../abstract/abstract_page'
|
|
4
|
+
|
|
5
|
+
class ConfirmationPage < AbstractPage
|
|
6
|
+
#Values
|
|
7
|
+
|
|
8
|
+
def login_message
|
|
9
|
+
driver.wait { message_element }.text
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
# Elements
|
|
15
|
+
|
|
16
|
+
def message_element
|
|
17
|
+
driver.find_element(accessibility_id: 'You are logged in as alice')
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../abstract/abstract_page'
|
|
4
|
+
|
|
5
|
+
class HomePage < AbstractPage
|
|
6
|
+
|
|
7
|
+
#Actions
|
|
8
|
+
|
|
9
|
+
def go_to_login
|
|
10
|
+
driver.wait { login_button_navigator }.click
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
# Elements
|
|
16
|
+
|
|
17
|
+
def login_button_navigator
|
|
18
|
+
driver.find_element(accessibility_id: 'Login Screen')
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<% case automation
|
|
2
|
+
when 'selenium' %>
|
|
3
|
+
<%= ERB.new(File.read(File.expand_path('./partials/selenium_login.tt', __dir__))).result(binding) %>
|
|
4
|
+
<% when 'watir' %>
|
|
5
|
+
<%= ERB.new(File.read(File.expand_path('./partials/watir_login.tt', __dir__))).result(binding) %>
|
|
6
|
+
<% else %>
|
|
7
|
+
<%= ERB.new(File.read(File.expand_path('./partials/appium_login.tt', __dir__))).result(binding) %>
|
|
8
|
+
<% end %>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require_relative '../abstract/abstract_page'
|
|
2
|
+
|
|
3
|
+
class LoginPage < AbstractPage
|
|
4
|
+
|
|
5
|
+
# Actions
|
|
6
|
+
|
|
7
|
+
def login(username, password)
|
|
8
|
+
username_field.send_keys username
|
|
9
|
+
password_field.send_keys password
|
|
10
|
+
login_button.click
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
# Elements
|
|
16
|
+
|
|
17
|
+
def username_field
|
|
18
|
+
driver.find_element(xpath: "//XCUIElementTypeTextField[@name=\"username\"]")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def password_field
|
|
22
|
+
driver.find_element(xpath: "//XCUIElementTypeSecureTextField[@name=\"password\"]")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def login_button
|
|
26
|
+
driver.find_elements(xpath: "//XCUIElementTypeOther[@name=\"loginBtn\"]").last
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative '../abstract/abstract_page'
|
|
2
|
+
require_relative '../components/header_component'
|
|
3
|
+
|
|
4
|
+
class LoginPage < AbstractPage
|
|
5
|
+
using Raider::SeleniumHelper
|
|
6
|
+
|
|
7
|
+
def url(_page)
|
|
8
|
+
'index.php?rt=account/login'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Actions
|
|
12
|
+
|
|
13
|
+
def login(username, password)
|
|
14
|
+
username_field.send_keys username
|
|
15
|
+
password_field.send_keys password
|
|
16
|
+
login_button.click_when_present
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Components
|
|
20
|
+
|
|
21
|
+
def header
|
|
22
|
+
HeaderComponent.new(driver.find_element(class: 'menu_text'))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
# Elements
|
|
28
|
+
|
|
29
|
+
def username_field
|
|
30
|
+
driver.find_element(id: 'loginFrm_loginname')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def password_field
|
|
34
|
+
driver.find_element(id: 'loginFrm_password')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def login_button
|
|
38
|
+
driver.find_element(xpath: "//button[@title='Login']")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require_relative '../abstract/abstract_page'
|
|
2
|
+
require_relative '../components/header_component'
|
|
3
|
+
|
|
4
|
+
class LoginPage < AbstractPage
|
|
5
|
+
using Raider::WatirHelper
|
|
6
|
+
|
|
7
|
+
def url(_page)
|
|
8
|
+
'index.php?rt=account/login'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Actions
|
|
12
|
+
|
|
13
|
+
def login(username, password)
|
|
14
|
+
username_field.send_keys username
|
|
15
|
+
password_field.send_keys password
|
|
16
|
+
login_button.click_when_present
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Components
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def header
|
|
23
|
+
HeaderComponent.new(browser.element(class: 'menu_text'))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
# Elements
|
|
29
|
+
|
|
30
|
+
def username_field
|
|
31
|
+
browser.element(id: 'loginFrm_loginname')
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def password_field
|
|
35
|
+
browser.element(id: 'loginFrm_password')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def login_button
|
|
39
|
+
browser.element(xpath: "//button[@title='Login']")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
browser: :chrome
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
source 'https://rubygems.org'
|
|
4
|
+
|
|
5
|
+
gem 'activesupport'
|
|
6
|
+
gem 'allure-rspec'
|
|
7
|
+
gem 'allure-ruby-commons'
|
|
8
|
+
<% if framework == 'cucumber' %>
|
|
9
|
+
gem 'allure-cucumber'
|
|
10
|
+
<% end %>
|
|
11
|
+
gem 'parallel_split_test'
|
|
12
|
+
gem 'parallel_tests'
|
|
13
|
+
gem 'rake'
|
|
14
|
+
gem '<%= framework %>'
|
|
15
|
+
<% if framework == 'cucumber' %>
|
|
16
|
+
gem 'rspec'
|
|
17
|
+
<% end %>
|
|
18
|
+
<%= ERB.new(File.read(File.expand_path('./partials/automation_gems.tt', __dir__))).result(binding).strip! %>
|
|
19
|
+
<% if %w[selenium watir].include? automation %>
|
|
20
|
+
gem 'webdrivers'
|
|
21
|
+
<% end %>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
desc 'Selects browser for automation run'
|
|
6
|
+
task :select_browser, [:browser] do |_t, args|
|
|
7
|
+
config = YAML.load_file('config/config.yml')
|
|
8
|
+
config['browser'] = args.browser
|
|
9
|
+
File.write('config/config.yml', config.to_yaml)
|
|
10
|
+
end
|