itms_automation 2.5 → 2.6.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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/bin/generate.rb +3 -37
  3. data/bin/helper.rb +23 -10
  4. data/bin/itms_automation +18 -23
  5. data/doc/installation.md +16 -0
  6. data/doc/itms-automation-API.md +103 -0
  7. data/doc/itms-automation-help.md +18 -0
  8. data/example/android/android_app/android_app_calculator.zip +0 -0
  9. data/example/android/android_app/android_app_calculator/AndroidCalculator.apk +0 -0
  10. data/example/android/android_app/android_app_calculator/features/calculator.feature +36 -0
  11. data/example/android/android_app/android_app_calculator/features/my_first.feature +13 -0
  12. data/example/android/android_app/android_app_calculator/features/screenshots/test.png +0 -0
  13. data/example/android/android_app/android_app_calculator/features/step_definitions/custom_steps.rb +5 -0
  14. data/example/android/android_app/android_app_calculator/features/support/env.rb +52 -0
  15. data/example/android/android_app/android_app_calculator/features/support/hooks.rb +26 -0
  16. data/example/android/android_web/android_web_gmail_login.zip +0 -0
  17. data/example/android/android_web/android_web_gmail_login/features/gmail_login.feature +12 -0
  18. data/example/android/android_web/android_web_gmail_login/features/my_first.feature +1 -0
  19. data/example/android/android_web/android_web_gmail_login/features/screenshots/test.png +0 -0
  20. data/example/android/android_web/android_web_gmail_login/features/step_definitions/custom_steps.rb +5 -0
  21. data/example/android/android_web/android_web_gmail_login/features/support/env.rb +51 -0
  22. data/example/android/android_web/android_web_gmail_login/features/support/hooks.rb +27 -0
  23. data/example/desktop web/desktop_web_gmail_login.zip +0 -0
  24. data/example/desktop web/desktop_web_gmail_login/features/gmail_login.feature +9 -0
  25. data/example/desktop web/desktop_web_gmail_login/features/gmail_multi_login.feature +21 -0
  26. data/example/desktop web/desktop_web_gmail_login/features/my_first.feature +1 -0
  27. data/example/desktop web/desktop_web_gmail_login/features/screenshots/test.png +0 -0
  28. data/example/desktop web/desktop_web_gmail_login/features/step_definitions/custom_steps.rb +5 -0
  29. data/example/desktop web/desktop_web_gmail_login/features/support/env.rb +106 -0
  30. data/example/desktop web/desktop_web_gmail_login/features/support/hooks.rb +38 -0
  31. data/{project → features-skeleton}/Gemfile +0 -0
  32. data/features-skeleton/Gemfile.lock +63 -0
  33. data/features-skeleton/README.md +132 -0
  34. data/{project → features-skeleton}/cucumber.yml +0 -0
  35. data/features-skeleton/my_first.feature +10 -0
  36. data/features-skeleton/screenshots/test.png +0 -0
  37. data/features-skeleton/step_definitions/custom_steps.rb +5 -0
  38. data/features-skeleton/step_definitions/repositories/project_object.yml +1 -0
  39. data/features-skeleton/support/env.rb +105 -0
  40. data/features-skeleton/support/hooks.rb +38 -0
  41. data/lib/itms_automation.rb +1 -3
  42. data/lib/itms_automation/assertion_steps.rb +68 -0
  43. data/lib/itms_automation/click_elements_steps.rb +24 -0
  44. data/lib/itms_automation/configuration_steps.rb +7 -0
  45. data/lib/itms_automation/input_steps.rb +59 -0
  46. data/lib/itms_automation/javascript_handling_steps.rb +10 -0
  47. data/lib/itms_automation/methods/assertion_methods.rb +333 -0
  48. data/lib/itms_automation/methods/click_elements_methods.rb +22 -0
  49. data/lib/itms_automation/methods/configuration_methods.rb +35 -0
  50. data/lib/itms_automation/methods/error_handling_methods.rb +93 -0
  51. data/lib/itms_automation/methods/input_methods.rb +69 -0
  52. data/lib/itms_automation/methods/javascript_handling_methods.rb +9 -0
  53. data/lib/itms_automation/methods/misc_methods.rb +63 -0
  54. data/lib/itms_automation/methods/navigate_methods.rb +123 -0
  55. data/lib/itms_automation/methods/progress_methods.rb +15 -0
  56. data/lib/itms_automation/methods/required_files.rb +9 -0
  57. data/lib/itms_automation/methods/screenshot_methods.rb +6 -0
  58. data/lib/itms_automation/navigation_steps.rb +79 -0
  59. data/lib/itms_automation/progress_steps.rb +17 -0
  60. data/lib/itms_automation/screenshot_steps.rb +6 -0
  61. data/lib/itms_automation/version.rb +5 -3
  62. metadata +89 -75
  63. data/bin/console +0 -14
  64. data/bin/documentation_generator.rb +0 -119
  65. data/bin/setup +0 -8
  66. data/lib/itms_automation/all_steps.rb +0 -8
  67. data/lib/itms_automation/assertion_helper.rb +0 -29
  68. data/lib/itms_automation/auto_util.rb +0 -707
  69. data/lib/itms_automation/database_steps_helper.rb +0 -125
  70. data/lib/itms_automation/web_steps_helper.rb +0 -867
  71. data/project/Gemfile.lock +0 -92
  72. data/project/README.md +0 -34
  73. data/project/Rakefile +0 -24
  74. data/project/features/TestSuite/WebGUI.feature +0 -5
  75. data/project/features/step_definitions/lib_steps/steps_definition.rb +0 -46
  76. data/project/features/step_definitions/repositories/project_object.yml +0 -26
  77. data/project/features/support/env.rb +0 -9
  78. data/project/features/support/hooks.rb +0 -122
@@ -1,92 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- addressable (2.7.0)
5
- public_suffix (>= 2.0.2, < 5.0)
6
- backports (3.15.0)
7
- builder (3.2.3)
8
- capybara (3.29.0)
9
- addressable
10
- mini_mime (>= 0.1.3)
11
- nokogiri (~> 1.8)
12
- rack (>= 1.6.0)
13
- rack-test (>= 0.6.3)
14
- regexp_parser (~> 1.5)
15
- xpath (~> 3.2)
16
- childprocess (3.0.0)
17
- colorize (0.8.1)
18
- cucumber (3.1.2)
19
- builder (>= 2.1.2)
20
- cucumber-core (~> 3.2.0)
21
- cucumber-expressions (~> 6.0.1)
22
- cucumber-wire (~> 0.0.1)
23
- diff-lcs (~> 1.3)
24
- gherkin (~> 5.1.0)
25
- multi_json (>= 1.7.5, < 2.0)
26
- multi_test (>= 0.1.2)
27
- cucumber-core (3.2.1)
28
- backports (>= 3.8.0)
29
- cucumber-tag_expressions (~> 1.1.0)
30
- gherkin (~> 5.0)
31
- cucumber-expressions (6.0.1)
32
- cucumber-tag_expressions (1.1.1)
33
- cucumber-wire (0.0.1)
34
- cucumber_priority (0.3.2)
35
- cucumber
36
- diff-lcs (1.3)
37
- gherkin (5.1.0)
38
- itms_automation (1.5)
39
- capybara (~> 3.29.0)
40
- colorize (~> 0.8.1)
41
- cucumber (~> 3.1)
42
- cucumber_priority (~> 0.3.2)
43
- parallel_tests (~> 2.7, >= 2.7.1)
44
- report_builder (~> 1.8, >= 1.8)
45
- rspec (~> 3.8, >= 3.8.0)
46
- selenium-webdriver (~> 3.6, >= 3.6.0)
47
- json (2.3.0)
48
- mini_mime (1.0.2)
49
- mini_portile2 (2.4.0)
50
- multi_json (1.14.0)
51
- multi_test (0.1.2)
52
- nokogiri (1.10.7)
53
- mini_portile2 (~> 2.4.0)
54
- parallel (1.19.1)
55
- parallel_tests (2.29.2)
56
- parallel
57
- public_suffix (4.0.3)
58
- rack (2.0.7)
59
- rack-test (1.1.0)
60
- rack (>= 1.0, < 3)
61
- regexp_parser (1.6.0)
62
- report_builder (1.8)
63
- json (>= 1.8.1)
64
- rspec (3.9.0)
65
- rspec-core (~> 3.9.0)
66
- rspec-expectations (~> 3.9.0)
67
- rspec-mocks (~> 3.9.0)
68
- rspec-core (3.9.1)
69
- rspec-support (~> 3.9.1)
70
- rspec-expectations (3.9.0)
71
- diff-lcs (>= 1.2.0, < 2.0)
72
- rspec-support (~> 3.9.0)
73
- rspec-mocks (3.9.1)
74
- diff-lcs (>= 1.2.0, < 2.0)
75
- rspec-support (~> 3.9.0)
76
- rspec-support (3.9.2)
77
- rubyzip (2.0.0)
78
- selenium-webdriver (3.142.6)
79
- childprocess (>= 0.5, < 4.0)
80
- rubyzip (>= 1.2.2)
81
- xpath (3.2.0)
82
- nokogiri (~> 1.8)
83
-
84
- PLATFORMS
85
- ruby
86
-
87
- DEPENDENCIES
88
- itms_automation
89
- report_builder
90
-
91
- BUNDLED WITH
92
- 2.0.2
@@ -1,34 +0,0 @@
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
@@ -1,24 +0,0 @@
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
@@ -1,5 +0,0 @@
1
- @test
2
- Feature: demo
3
-
4
- Scenario: new scenario
5
- Given Go to Test Cycle Sumary of iTMS project
@@ -1,46 +0,0 @@
1
- And /I open the page "(.*)"/ do |url_site|
2
- execute_openbrowser(url_site)
3
- end
4
-
5
- Given /^test select execute$/ do
6
-
7
- execute_openbrowser("https://infodation.atlassian.net/plugins/servlet/ac/Infodation-tms/test-summary?project.key=IFDTMS&project.id=17400")
8
- # execute_settext("username", "cuong")
9
- # execute_click("okbutton")
10
- switch_to_iframe("iframe1")
11
-
12
- execute_click("verify")
13
- sleep(5)
14
- end
15
-
16
- When /^Go to Test Cycle Sumary of iTMS project$/ do
17
- execute_openbrowser("https://infodation.atlassian.net/plugins/servlet/ac/Infodation-tms/test-summary?project.key=IFDTMS&project.id=17400")
18
- sleep(5)
19
- switch_to_iframe("iframe1")
20
- execute_click("itms_cyclesumarylink")
21
- sleep(3)
22
- custom_action
23
- end
24
-
25
-
26
- def custom_action()
27
- begin
28
- browser = Capybara.current_session.driver.browser
29
- if browser.respond_to?(:clear_cookies)
30
- # Rack::MockSession
31
- browser.clear_cookies
32
- print_log("passed", start, _method_)
33
- elsif browser.respond_to?(:manage) and browser.manage.respond_to?(:delete_all_cookies)
34
- # Selenium::WebDriver
35
- browser.manage.delete_all_cookies
36
- print_log("passed", start, _method_)
37
- else
38
- print_log("failed", start, _method_)
39
- raise "Error: Don't know how to clear cookies. Weird driver?"
40
- end
41
- rescue Exception => e
42
- print_log("failed", start, _method_)
43
- raise "Error: #{e.message}"
44
- end
45
-
46
- end
@@ -1,26 +0,0 @@
1
- username: { xpath_selector: '//input[@id="login"]' }
2
- okbutton: { xpath_selector: '//input[@value="Check Inbox"]' }
3
- iframe: { xpath_selector: '//*[@class="ap-iframe-container iframe-init"]' }
4
- iframe1: { xpath_selector: '//iframe[contains(@id,"Infodation-tms__test-summary_")]' }
5
- verify: { xpath_selector: '//*[@id="aui-uid-1"]' }
6
- firstname:
7
- {
8
- xpath_selector: '/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[5]/td/form/table/tbody/tr[2]/td[2]',
9
- }
10
- lastname:
11
- {
12
- xpath_selector: '/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[5]/td/form/table/tbody/tr[3]/td[2]/input',
13
- }
14
- selectcountry:
15
- {
16
- xpath_selector: '/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[5]/td/form/table/tbody/tr[11]/td[2]/select',
17
- }
18
- loginjira_continuebutton: {xpath_selector: "//button[@id=\"login-submit\"]/span/span/span"}
19
- loginjira_password: {xpath_selector: "//input[@id=\"password\"]"}
20
- loginjira_username: {xpath_selector: "//input[@id=\"username\"]"}
21
- itms_cyclesumarylink: {xpath_selector: "//section[@id=\"content\"]//li[@class=\"menu-item\"]/a"}
22
- itms_createnewtestcyclebutton: {xpath_selector: "//button[@id=\"itms-sidebar-addnew-button\"]"}
23
- itms_createtestcycle_savebutton: {xpath_selector: "//button[@id=\"itms-dialog-confirm\"]"}
24
- itms_createtestcyle_alertmessage: {xpath_selector: "//section[@id=\"ITMS-dialog-cycle\"]//strong"}
25
- itms_clickheretocreatetestcycle: {xpath_selector: "//section[@class=\"aui-buttons\"]/button[3]/span"}
26
- itms_iframe_testsumary: { xpath_selector: '//iframe[contains(@id,"Infodation-tms__test-summary_")]' }
@@ -1,9 +0,0 @@
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"
@@ -1,122 +0,0 @@
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
- end
16
-
17
- def validate_params_exist
18
- raise "❌ ERROR: Missing param SERVER_URL." if ENV['SERVER_URL'].nil?
19
- raise "❌ ERROR: Missing param BROWSER." if ENV['BROWSER'].nil?
20
- if ENV['REPORT']
21
- raise "❌ ERROR: Missing param TESTSUITE." if ENV['TESTSUITE'].nil?
22
- raise "❌ ERROR: Missing param TESTCASE_REPORT_NAME." if ENV['TESTCASE_REPORT_NAME'].nil?
23
- $report_path = "Reports/#{ENV['TESTSUITE']}"
24
- $testcase_report_name = ENV['TESTCASE_REPORT_NAME']
25
- end
26
- end
27
-
28
- def getDriver
29
- case ENV['BROWSER']
30
- when "chrome"
31
- Capybara.register_driver :selenium do |app|
32
- Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'],:desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome())
33
- end
34
- Capybara.current_driver = :selenium
35
- when "firefox"
36
- Capybara.register_driver :selenium do |app|
37
- Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.firefox())
38
- end
39
- Capybara.current_driver = :selenium
40
- when "safari"
41
- Capybara.register_driver :selenium do |app|
42
- Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.safari())
43
- end
44
- Capybara.current_driver = :selenium
45
- when "ie"
46
- Capybara.register_driver :selenium do |app|
47
- Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.internet_explorer())
48
- end
49
- Capybara.current_driver = :selenium
50
- when "chrome_headless"
51
- Capybara.register_driver :selenium do |app|
52
- Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: { args: %w(headless disable-gpu) }))
53
- end
54
- Capybara.current_driver = :selenium
55
- when "remote"
56
- Capybara.register_driver :selenium do |app|
57
- Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'])
58
- end
59
- Capybara.current_driver = :selenium
60
- else
61
- raise "❌ ERROR: Unsupported browser: #{ENV['BROWSER']}. Available: chrome || chrome headless || firefox || safari || ie || remote"
62
- end
63
- unless ENV["SCREEN_RESOLUTION"].nil?
64
- screen_resolution = ENV["SCREEN_RESOLUTION"].split("x")
65
- Capybara.page.current_window.resize_to(screen_resolution[0], screen_resolution[1])
66
- end
67
- end
68
-
69
- def loadYAMLfile(filename)
70
- begin
71
- return YAML.load_file(filename)
72
- rescue Psych::SyntaxError => ex
73
- raise "❌ SyntaxError when reading file: #{ex}"
74
- end
75
- end
76
-
77
- After do |scenario|
78
- # save_screenshot = ENV['SCREENSHOT'] || false
79
- # if save_screenshot == true
80
- # file_name = 'failed_%s.png' % rand(1000).to_s
81
- # page.save_screenshot($screenshot+file_name) if scenario.failed?
82
- # begin
83
- # Capybara.page.driver.quit
84
- # Capybara.send(:session_pool).delete_if { |key, value| key =~ /selenium/i }
85
- # rescue StandardError => myStandardError
86
- # puts "❌ Error: #{myStandardError}"
87
- # exit(1)
88
- # end
89
- # end
90
- # $browser_data = page.driver.browser.capabilities
91
- # p "$browser_data:#{$browser_data.inspect}"
92
- FileUtils.rm_rf(Dir.glob('downloads/*'))
93
- end
94
-
95
- at_exit do
96
- if ENV['REPORT']
97
- begin
98
- # validateReport
99
- time = Time.now.getutc
100
- if $browser_data
101
- browser_name = $browser_data[:browser_name]
102
- browser_version = $browser_data[:browser_version]
103
- platform = $browser_data[:platform_name]
104
- end
105
- ReportBuilder.configure do |config|
106
- config.report_path = "#{$report_path}/#{$testcase_report_name}"
107
- config.input_path = "#{$report_path}/#{$testcase_report_name}.json"
108
- config.report_types = [:json, :html]
109
- config.color = 'blue'
110
- config.additional_info = {
111
- 'Browser' => browser_name || nil,
112
- 'Platform' => platform || nil,
113
- 'Browser Version' => browser_version || nil,
114
- 'Report Generated' => time
115
- }
116
- end
117
- options = { report_title: "iTMS - Test Management System" }
118
- ReportBuilder.build_report options
119
- rescue NoMethodError
120
- end
121
- end
122
- end