itms_automation 1.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.
data/project/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+ gem 'report_builder'
3
+ gem 'itms_automation'
data/project/README.md ADDED
@@ -0,0 +1,34 @@
1
+ ###itms_automation gem
2
+ itms_automation is an open-source tool for automating GUI, RESTful, SOAP, Database and eMail.
3
+ Importantly, itms_automation is cross-platform, it allows you to write tests against multiple platforms (Linux, Windows, MacOS) on multiple browsers (chrome, firefox ...) using the same API.
4
+
5
+ ###Getting Started
6
+ These instructions will get you a copy of the project up and running on your local machine for testing purposes. See deployment for notes on how to install itms_automation gem
7
+ ###Prerequisites
8
+ - Ruby: 2.3+
9
+ ###Installing
10
+ `$ gem install itms_automation`
11
+ System automatically fetch all relate automation libraries after install itms_automation gem
12
+ ###Setup
13
+ `$ itms_automation gen`
14
+ This command help to create a set folder structure which followed the format of BDD Cucumber and itms_automation.
15
+ ###Structure folder format
16
+ - Screenshot folder
17
+ Once your scenario failed, the screen will be captured and saved to this folder
18
+
19
+ - TestSuite folder
20
+ Place to store user's feature files.
21
+
22
+ - Step_definitions folder
23
+ - lib_steps
24
+ - actionword.rb
25
+ - steps.rb
26
+ two file help to create user custom steps
27
+ - repositories
28
+ - project_object.yml (all web objects will store in this file)
29
+ - support
30
+ - env.rb
31
+ - hook.rb
32
+
33
+ - config folder
34
+ All browser capabilities configuration
data/project/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+
3
+ begin
4
+ require 'cucumber'
5
+ require 'cucumber/rake/task'
6
+ testsuite_name = ENV['TESTSUITE']
7
+ testcase_report_name = ENV['TESTCASE_REPORT_NAME']
8
+ report_path = "Reports/#{testsuite_name}"
9
+ debug_opts = [ "--format usage", "--out"]
10
+ report_opts = ["REPORT=true","--color", "--format junit", "--out #{report_path}", "--format json --out #{report_path}/#{testcase_report_name}.json"]
11
+ namespace :execute do
12
+ Cucumber::Rake::Task.new(:report, "Execute automation test with report output.") do |t|
13
+ t.cucumber_opts = [*report_opts, "--format progress"]
14
+ end
15
+ Cucumber::Rake::Task.new(:debug, "Debug automation test without report output.") do |t|
16
+ t.cucumber_opts = [*debug_opts]
17
+ end
18
+ end
19
+ rescue LoadError
20
+ desc 'Cucumber rake task not available'
21
+ task :features do
22
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
23
+ end
24
+ end
@@ -0,0 +1 @@
1
+ args: ["--headless","--disable-gpu",--no-sandbox]
@@ -0,0 +1,6 @@
1
+ args: ["--start-maximized","--disable-infobars","--incognito"]
2
+ prefs: {
3
+ password_manager_enabled: false,
4
+ default_content_settings: {popups: 0},
5
+ content_settings: {pattern_pairs: {'*': {'multiple-automatic-downloads': 1}}}
6
+ }
@@ -0,0 +1 @@
1
+ browser.download.downloadDir: '/home/seluser'
@@ -0,0 +1 @@
1
+ browser.download.downloadDir: '/home/seluser'
@@ -0,0 +1 @@
1
+ mobileEmulation: {deviceName: "iPhone X"}
@@ -0,0 +1,6 @@
1
+ args: ["--start-maximized","--disable-infobars","--incognito", "--user-agent='Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile /9A334 Safari/7534.48.3'"]
2
+ prefs: {
3
+ password_manager_enabled: false,
4
+ default_content_settings: {popups: 0},
5
+ content_settings: {pattern_pairs: {'*': {'multiple-automatic-downloads': 1}}}
6
+ }
@@ -0,0 +1 @@
1
+ mobileEmulation: {deviceName: "iPhone X"}
@@ -0,0 +1,4 @@
1
+ chrome: BROWSER=chrome
2
+ firefox: BROWSER=firefox
3
+ ie: BROWSER=internet_explorer
4
+ parallel: parallel_cucumber
@@ -0,0 +1,4 @@
1
+ Feature: demo
2
+
3
+ Scenario: new scenario
4
+ Given I open the page "http://google.com"
@@ -0,0 +1,3 @@
1
+ And /I open the page "(.*)"/ do |url_site|
2
+ execute_openbrowser(url_site)
3
+ end
@@ -0,0 +1,2 @@
1
+ signupbutton: {xpath_selector: '//li[@class="mm-listitem"]//a[@href="#"][contains(text(),"T")]'}
2
+
@@ -0,0 +1,10 @@
1
+ STDOUT.sync = true
2
+ require 'rubygems'
3
+ require 'capybara'
4
+ require 'capybara/cucumber'
5
+ require 'cucumber'
6
+ require 'yaml'
7
+ require 'selenium-webdriver'
8
+ require 'itms_automation'
9
+ require 'report_builder'
10
+
@@ -0,0 +1,130 @@
1
+ Before do |scenario|
2
+ $driver = getDriver
3
+ $wait_time = ENV["WAIT_TIME"] || 30
4
+ $print_log = ENV["PRINT_LOG"] || false
5
+ $browser_data = page.driver.browser.capabilities
6
+ end
7
+
8
+ AfterConfiguration do
9
+ $OBJECT = loadYAMLfile("features/step_definitions/repositories/project_object.yml")
10
+ validate_params_exist
11
+ if ENV['DELETE_COOKIE']
12
+ browser = Capybara.current_session.driver.browser
13
+ browser.manage.delete_all_cookies
14
+ end
15
+
16
+ end
17
+
18
+ def validate_params_exist
19
+ raise "❌ ERROR: Missing param SERVER_URL." if ENV['SERVER_URL'].nil?
20
+ raise "❌ ERROR: Missing param BROWSER." if ENV['BROWSER'].nil?
21
+ if ENV['REPORT']
22
+ raise "❌ ERROR: Missing param TESTSUITE." if ENV['TESTSUITE'].nil?
23
+ raise "❌ ERROR: Missing param TESTCASE_REPORT_NAME." if ENV['TESTCASE_REPORT_NAME'].nil?
24
+ $report_path = "Reports/#{ENV['TESTSUITE']}"
25
+ $testcase_report_name = ENV['TESTCASE_REPORT_NAME']
26
+ end
27
+ end
28
+
29
+ def getDriver
30
+ case ENV['BROWSER']
31
+ when "chrome"
32
+ @chrome_options = loadYAMLfile('config/chrome_options.yaml')
33
+ Capybara.register_driver :selenium do |app|
34
+ Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'],:desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: @chrome_options))
35
+ end
36
+ Capybara.current_driver = :selenium
37
+ when "firefox"
38
+ @firefox_options = loadYAMLfile('config/firefox_options.yaml')
39
+ Capybara.register_driver :selenium do |app|
40
+ Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.firefox(firefoxOptions: @firefox_options))
41
+ end
42
+ Capybara.current_driver = :selenium
43
+ when "safari"
44
+ @safari_options = loadYAMLfile('config/safari_options.yaml')
45
+ Capybara.register_driver :selenium do |app|
46
+ Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.safari(safariOptions: @safari_options))
47
+ end
48
+ Capybara.current_driver = :selenium
49
+ when "ie"
50
+ @ie_options = loadYAMLfile('config/ie_options.yaml')
51
+ Capybara.register_driver :selenium do |app|
52
+ Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.internet_explorer(ieOptions: @ie_options))
53
+ end
54
+ Capybara.current_driver = :selenium
55
+ # when "chrome_headless"
56
+ # @chrome_headless_options = loadYAMLfile('config/chrome_headless_options.yaml')
57
+ # Capybara.register_driver :selenium do |app|
58
+ # Capybara::Selenium::Driver.new(app, :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: @chrome_headless_options))
59
+ # end
60
+ # Capybara.current_driver = :selenium_headless
61
+ # when "firefox_headless"
62
+ # @firefox_headless_options = loadYAMLfile('config/firefox_options.yaml')
63
+ # Capybara.register_driver :selenium do |app|
64
+ # Capybara::Selenium::Driver.new(app, :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.firefox(firefoxOptions: @firefox_headless_options))
65
+ # end
66
+ # Capybara.current_driver = :selenium_headless
67
+ when "remote"
68
+ @capabilities = loadYAMLfile('config/remote_options.yaml')
69
+ Capybara.register_driver :selenium do |app|
70
+ Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => @capabilities)
71
+ end
72
+ Capybara.current_driver = :selenium
73
+ else
74
+ raise "❌ ERROR: Unsupported browser: #{ENV['BROWSER']}. Available: chrome || firefox || safari || ie || remote"
75
+ end
76
+ end
77
+
78
+ def loadYAMLfile(filename)
79
+ begin
80
+ return YAML.load_file(filename)
81
+ rescue Psych::SyntaxError => ex
82
+ raise "❌ SyntaxError when reading file: #{ex}"
83
+ end
84
+ end
85
+
86
+ After do |scenario|
87
+ # save_screenshot = ENV['SCREENSHOT'] || false
88
+ # if save_screenshot == true
89
+ # file_name = 'failed_%s.png' % rand(1000).to_s
90
+ # page.save_screenshot($screenshot+file_name) if scenario.failed?
91
+ # begin
92
+ # Capybara.page.driver.quit
93
+ # Capybara.send(:session_pool).delete_if { |key, value| key =~ /selenium/i }
94
+ # rescue StandardError => myStandardError
95
+ # puts "❌ Error: #{myStandardError}"
96
+ # exit(1)
97
+ # end
98
+ # end
99
+ # $browser_data = page.driver.browser.capabilities
100
+ # p "$browser_data:#{$browser_data.inspect}"
101
+ end
102
+
103
+ at_exit do
104
+ if ENV['REPORT']
105
+ begin
106
+ # validateReport
107
+ time = Time.now.getutc
108
+ if $browser_data
109
+ browser_name = $browser_data[:browser_name]
110
+ browser_version = $browser_data[:browser_version]
111
+ platform = $browser_data[:platform_name]
112
+ end
113
+ ReportBuilder.configure do |config|
114
+ config.report_path = "#{$report_path}/#{$testcase_report_name}"
115
+ config.input_path = "#{$report_path}/#{$testcase_report_name}.json"
116
+ config.report_types = [:json, :html]
117
+ config.color = 'blue'
118
+ config.additional_info = {
119
+ 'Browser' => browser_name || nil,
120
+ 'Platform' => platform || nil,
121
+ 'Browser Version' => browser_version || nil,
122
+ 'Report Generated' => time
123
+ }
124
+ end
125
+ options = { report_title: "iTMS - Test Management System" }
126
+ ReportBuilder.build_report options
127
+ rescue NoMethodError
128
+ end
129
+ end
130
+ end
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: itms_automation
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Anh Pham
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: selenium-webdriver
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.6.0
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '3.6'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.6.0
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: cucumber
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: capybara
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 3.29.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 3.29.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 3.8.0
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.8'
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 3.8.0
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.8'
81
+ - !ruby/object:Gem::Dependency
82
+ name: parallel_tests
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '2.7'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 2.7.1
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '2.7'
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 2.7.1
101
+ - !ruby/object:Gem::Dependency
102
+ name: report_builder
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '1.8'
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.8'
111
+ type: :runtime
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '1.8'
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '1.8'
121
+ - !ruby/object:Gem::Dependency
122
+ name: cucumber_priority
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: 0.3.2
128
+ type: :runtime
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: 0.3.2
135
+ description: Behavior driven development (BDD) approach to write automation test script
136
+ to test GUI, RESTful, SOAP, Database, eMail.
137
+ email:
138
+ - anhpq.info@gmail.com
139
+ executables:
140
+ - itms_automation
141
+ extensions: []
142
+ extra_rdoc_files: []
143
+ files:
144
+ - bin/console
145
+ - bin/documentation_generator.rb
146
+ - bin/generate.rb
147
+ - bin/helper.rb
148
+ - bin/itms_automation
149
+ - bin/setup
150
+ - lib/itms_automation.rb
151
+ - lib/itms_automation/all_steps.rb
152
+ - lib/itms_automation/auto_util.rb
153
+ - lib/itms_automation/version.rb
154
+ - lib/itms_automation/web_steps_helper.rb
155
+ - project/Gemfile
156
+ - project/README.md
157
+ - project/Rakefile
158
+ - project/config/chrome_headless_options.yaml
159
+ - project/config/chrome_options.yaml
160
+ - project/config/firefox_headless_options.yaml
161
+ - project/config/firefox_options.yaml
162
+ - project/config/ie_options.yaml
163
+ - project/config/remote_options.yaml
164
+ - project/config/safari_options.yaml
165
+ - project/cucumber.yml
166
+ - project/features/TestSuite/WebGUI.feature
167
+ - project/features/step_definitions/lib_steps/steps_definition.rb
168
+ - project/features/step_definitions/repositories/project_object.yml
169
+ - project/features/support/env.rb
170
+ - project/features/support/hooks.rb
171
+ homepage: http://rubygems.org/gems/itms_automation
172
+ licenses:
173
+ - MIT
174
+ metadata: {}
175
+ post_install_message: Thank you for installing itms_automation gem.
176
+ rdoc_options: []
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubygems_version: 3.0.6
191
+ signing_key:
192
+ specification_version: 4
193
+ summary: SELENIUM WEBDRIVER WITH RUBY & CUCUMBER
194
+ test_files: []