qa_robusta 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. data/.autotest +23 -0
  2. data/.gemtest +0 -0
  3. data/History.txt +6 -0
  4. data/Manifest.txt +101 -0
  5. data/README.txt +48 -0
  6. data/Rakefile +18 -0
  7. data/bin/qa_robusta +14 -0
  8. data/common/Rakefile +95 -0
  9. data/common/conf/monkey_patch.yaml +8 -0
  10. data/common/conf/monkey_patch.yaml.ex +10 -0
  11. data/common/lib/array.rb +9 -0
  12. data/common/lib/cache.rb +12 -0
  13. data/common/lib/constants.rb +35 -0
  14. data/common/lib/error_defns.rb +13 -0
  15. data/common/lib/format_html_tmp.html +34 -0
  16. data/common/lib/formatters.rb +18 -0
  17. data/common/lib/gem_helpers.rb +29 -0
  18. data/common/lib/gems/.svn/entries +43 -0
  19. data/common/lib/gems/cache/.svn/entries +28 -0
  20. data/common/lib/gems/doc/.svn/entries +28 -0
  21. data/common/lib/gems/gems/.svn/entries +28 -0
  22. data/common/lib/gems/installed/.svn/entries +40 -0
  23. data/common/lib/gems/installed/cache/.svn/entries +28 -0
  24. data/common/lib/gems/installed/doc/.svn/entries +28 -0
  25. data/common/lib/gems/installed/gems/.svn/entries +28 -0
  26. data/common/lib/gems/installed/specifications/.svn/entries +28 -0
  27. data/common/lib/gems/specifications/.svn/entries +28 -0
  28. data/common/lib/gen_suite_doc.rb +52 -0
  29. data/common/lib/load_test_data.rb +18 -0
  30. data/common/lib/monkey_patch.rb +149 -0
  31. data/common/lib/navigate_mech.rb +79 -0
  32. data/common/lib/update_element.rb +12 -0
  33. data/common/monkey_patches/mechanize.rb +589 -0
  34. data/common/monkey_patches/table.rb +363 -0
  35. data/common/monkey_patches/telnet.rb +420 -0
  36. data/common/monkey_patches/unit.rb +538 -0
  37. data/demo/demo_site.rb +38 -0
  38. data/demo/public/javascripts/jquery-1.6.2.min.js +18 -0
  39. data/demo/views/index.erb +35 -0
  40. data/lib/monkey_patch.rb +26 -0
  41. data/lib/qa_robusta.rb +3 -0
  42. data/mechanize_interface/conf/app.yaml +10 -0
  43. data/mechanize_interface/lib/agent.rb +18 -0
  44. data/mechanize_interface/lib/app_require.rb +19 -0
  45. data/mechanize_interface/lib/get_page.rb +20 -0
  46. data/mechanize_interface/lib/login.rb +30 -0
  47. data/mechanize_interface/lib/navigation_paths.rb +12 -0
  48. data/mechanize_interface/test/lib/mech_unit_test.rb +19 -0
  49. data/qa_observer/conf/dev_users.yaml +9 -0
  50. data/qa_observer/conf/development.yaml +3 -0
  51. data/qa_observer/conf/qa_observer_links.yaml +10 -0
  52. data/qa_observer/generators/site/site_generator.rb +61 -0
  53. data/qa_observer/generators/site/templates/base_urls.yaml.erb +6 -0
  54. data/qa_observer/generators/site/templates/create_flow.rb.erb +54 -0
  55. data/qa_observer/generators/site/templates/elements.rb.erb +61 -0
  56. data/qa_observer/generators/site/templates/html_elements.yaml +22 -0
  57. data/qa_observer/generators/site/templates/navigate.rb +32 -0
  58. data/qa_observer/generators/site/templates/reports.rb +7 -0
  59. data/qa_observer/generators/site/templates/users_list.yaml +21 -0
  60. data/qa_observer/generators/test_case/templates/test_case.rb.erb +62 -0
  61. data/qa_observer/generators/test_case/test_case_generator.rb +29 -0
  62. data/qa_observer/lib/doc.rb +103 -0
  63. data/qa_observer/lib/env_details.rb +2 -0
  64. data/qa_observer/lib/error_defns.rb +3 -0
  65. data/qa_observer/lib/form_helpers.rb +52 -0
  66. data/qa_observer/lib/reports.rb +7 -0
  67. data/qa_observer/lib/requires.rb +23 -0
  68. data/qa_observer/lib/system_test.rb +146 -0
  69. data/qa_observer/lib/test_extention.rb +29 -0
  70. data/qa_observer/lib/update_element.rb +12 -0
  71. data/qa_observer/lib/watir.rb +42 -0
  72. data/qa_observer/script/destroy +14 -0
  73. data/qa_observer/script/generate +14 -0
  74. data/qa_observer/sites/demo/conf/base_urls.yaml +6 -0
  75. data/qa_observer/sites/demo/conf/html_elements.yaml +22 -0
  76. data/qa_observer/sites/demo/conf/remote_machine.yaml +12 -0
  77. data/qa_observer/sites/demo/conf/users_list.yaml +21 -0
  78. data/qa_observer/sites/demo/elements/demo_elements.rb +9 -0
  79. data/qa_observer/sites/demo/flows/demo_flows.rb +37 -0
  80. data/qa_observer/sites/demo/helpers/.placeholder +0 -0
  81. data/qa_observer/sites/demo/lib/navigate.rb +32 -0
  82. data/qa_observer/sites/demo/lib/reports.rb +7 -0
  83. data/qa_observer/sites/demo/results/.placeholder +0 -0
  84. data/qa_observer/sites/demo/results/images/.placeholder +0 -0
  85. data/qa_observer/sites/demo/test_cases/home_page.rb +106 -0
  86. data/qa_observer/suites/demo_lg_chrome/lg.yaml +11 -0
  87. data/qa_observer/suites/demo_md_chrome/md.yaml +11 -0
  88. data/qa_observer/suites/demo_sm_chrome/sm.yaml +11 -0
  89. data/qa_observer/suites/init.rb +41 -0
  90. data/qa_observer/test_runner.rb +125 -0
  91. data/remote_unix/helpers/constants.rb +8 -0
  92. data/remote_unix/helpers/out_xforms.rb +48 -0
  93. data/remote_unix/lib/common.rb +52 -0
  94. data/remote_unix/lib/error_defn.rb +4 -0
  95. data/remote_unix/lib/general_unix.rb +308 -0
  96. data/remote_unix/lib/network_commands.rb +41 -0
  97. data/remote_unix/lib/network_info.rb +98 -0
  98. data/remote_unix/lib/postfix_commands.rb +87 -0
  99. data/remote_unix/lib/postfix_info.rb +30 -0
  100. data/remote_unix/lib/requires.rb +25 -0
  101. data/remote_unix/lib/scp.rb +22 -0
  102. data/remote_unix/lib/ssh.rb +46 -0
  103. data/test/test_qa_robusta.rb +8 -0
  104. metadata +219 -0
@@ -0,0 +1,41 @@
1
+ module RemoteUnix
2
+ # common utilities which test cases can utilize
3
+ class NetworkCommands
4
+ include Common
5
+ attr_accessor :network_info
6
+ def initialize(params={})
7
+ @ssh = SSH.new(params[:host], params[:user], params[:password])
8
+ @network_info = RemoteUnix::NetworkInfo.new(@ssh) unless @network_info
9
+ set_platform
10
+ end
11
+
12
+ # params={ :static => 'some ip',
13
+ # :dynamic => 'any value' --> just checks if key is present
14
+ # :netmask => 'some netmask'
15
+ # :gateway => 'some gateway'
16
+ # :device => proper interface..eth0, eth1, etc..
17
+ def deb_update_interface(params={})
18
+
19
+ unless @platform[:distro] == 'DEB'
20
+ raise ArgumentError, "calling deb specific function on non debian distro"
21
+ end
22
+
23
+ if !@platform[:sudo]
24
+ nav_path = [
25
+ {:execute => "",
26
+ :expected_output => /#{@expected_prompt}/i, :timeout => 1}
27
+
28
+ ]
29
+ else
30
+ # TODO: nav_path different for sudo interaction
31
+ end
32
+
33
+ begin
34
+ puts @ssh.navigate(nav_path).inspect
35
+ rescue => e
36
+ puts "IGNORE: #{e}"
37
+ end
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,98 @@
1
+ module RemoteUnix
2
+ # common utilities which test cases can utilize
3
+ class NetworkInfo
4
+ include Common
5
+ attr_reader :interfaces, :dns
6
+ def initialize(ssh_session)
7
+ @ssh = ssh_session
8
+ @interfaces = {}
9
+ @dns = {}
10
+ end
11
+
12
+ def get_interface_devices
13
+ nav_path = [
14
+ {:execute => "ifconfig -a",
15
+ :timeout => 1},
16
+ ]
17
+
18
+ begin
19
+ devices = []
20
+ out = GenericShellOutput.to_lines(@ssh.navigate(nav_path), nav_path.first[:execute])
21
+ out.grep(/eth/).each { |i| devices << i.split(' ').first }
22
+ end
23
+ devices
24
+ end
25
+
26
+ def get_gw_for_interface
27
+
28
+ end
29
+
30
+ def get_dns_info
31
+ nav_path = [
32
+ {:execute => "cat /etc/resolv.conf",
33
+ :timeout => 1},
34
+ ]
35
+
36
+ begin
37
+
38
+ out = GenericShellOutput.to_lines(@ssh.navigate(nav_path), nav_path.first[:execute])
39
+ dns_servers = []
40
+
41
+ out.grep(/nameserver/).each { |i| dns_servers << i.split(' ').last }
42
+
43
+ if out.grep(/dhclient/).nitems > 0
44
+ dhcp_enabled = true
45
+ else
46
+ dhcp_enabled = false
47
+ end
48
+
49
+ search_domain = out.grep(/search/).to_s.split(' ').last
50
+
51
+ @dns = {:dns_servers => dns_servers, :search_domain => search_domain,
52
+ :dhcp_enabled => dhcp_enabled}
53
+ end
54
+
55
+ @dns
56
+
57
+ end
58
+
59
+ def get_interface_info(dev)
60
+ nav_path = [
61
+ {:execute => "ifconfig #{dev}",
62
+ :timeout => 1},
63
+ ]
64
+
65
+ begin
66
+ out = GenericShellOutput.to_lines(@ssh.navigate(nav_path), nav_path.first[:execute]).to_s
67
+ begin
68
+ ip = out.scan(/.* inet addr:(.*) .*/m).first.first.split(' ').first.strip
69
+ rescue NoMethodError => e
70
+ ip=''
71
+ end
72
+ begin
73
+ mask = out.scan(/.* Mask:(.*) .*/m).first.first.split(' ').first.strip
74
+ rescue NoMethodError => e
75
+ mask = ''
76
+ end
77
+ mac = out.scan(/.* HWaddr (.*) .*/m).first.first.split(' ').first.strip
78
+ misc_info = get_dns_info
79
+
80
+ return {dev => {:ip => ip, :mask => mask, :mac => mac,
81
+ :dns_servers => misc_info[:dns_servers],
82
+ :search_domain => misc_info[:search_domain],
83
+ :dhcp_enabled => misc_info[:dhcp_enabled]
84
+ }
85
+ }
86
+
87
+ end
88
+ end
89
+
90
+ def get_interfaces_info
91
+ get_interface_devices.each {|dev|
92
+ @interfaces.merge(get_interface_info(dev))
93
+ }
94
+ @interfaces
95
+ end
96
+
97
+ end
98
+ end
@@ -0,0 +1,87 @@
1
+ module RemoteUnix
2
+ # common utilities which test cases can utilize
3
+ class PostfixCommands
4
+ include Common
5
+ attr_accessor :postfix_info
6
+ def initialize(params={})
7
+ @main_cfg = nil
8
+ @ssh = SSH.new(params[:host], params[:user], params[:password])
9
+
10
+ @greylisting_cfg=<<-EOF
11
+ smtpd_recipient_restrictions =
12
+ reject_unauth_destination
13
+ check_policy_service inet:127.0.0.1:10023
14
+ EOF
15
+
16
+ @postfix_info = RemoteUnix::PostfixInfo.new(@ssh) unless @postfix_info
17
+ set_platform
18
+ end
19
+
20
+ # install postfix and postgrey
21
+ def install
22
+ nav_path = [
23
+ {:execute => "apt-get remove -y exim4-daemon-light exim4 exim4-base exim4-config",
24
+ :expected_output => /#{@expected_prompt}/i, :timeout => 0},
25
+
26
+
27
+ {:execute => "rm -f /var/cache/apt/archives/*.deb",
28
+ :expected_output => /#{@expected_prompt}/i, :timeout => 0},
29
+
30
+
31
+ {:execute => "apt-get -y install -d postfix postgrey",
32
+ :expected_output => /#{@expected_prompt}/i, :timeout => 0},
33
+
34
+ {:execute => "dpkg -i /var/cache/apt/archives/*.deb",
35
+ :expected_output => /#{@expected_prompt}/i, :timeout => 0},
36
+
37
+
38
+ ]
39
+ out=@ssh.navigate(nav_path)
40
+
41
+ end
42
+
43
+ def get_main_cfg
44
+ nav_path = [
45
+ {:execute => "cat /etc/postfix/main.cfg",
46
+ :expected_output => /#{@expected_prompt}/i, :timeout => 0},
47
+
48
+ ]
49
+ @main_cfg = RemoteUnix::GenericShellOutput.to_lines(@ssh.navigate(nav_path), nav_path.first[:execute]).to_s
50
+
51
+ end
52
+
53
+ def put_main_cfg
54
+ nav_path = [
55
+ {:execute => "echo #{@main_cfg} > /etc/postfix/main.cfg",
56
+ :expected_output => /#{@expected_prompt}/i, :timeout => 0},
57
+
58
+ ]
59
+ out = RemoteUnix::GenericShellOutput.to_lines(@ssh.navigate(nav_path), nav_path.first[:execute])
60
+
61
+ end
62
+
63
+ # grab postfix config and add greylisting support
64
+ def enable_greylisting
65
+ get_main_cfg
66
+
67
+ unless @main_cfg !~ /#{@greylisting_cfg}/m
68
+ @main_cfg += @greylisting_cfg
69
+ end
70
+
71
+ put_main_cfg
72
+ end
73
+
74
+ # grab postfix config and remove greylisting support
75
+ def disable_greylisting
76
+ get_main_cfg
77
+
78
+ unless @main_cfg =~ /#{@greylisting_cfg}/m
79
+ @main_cfg.gsub!(/#{@greylisting_cfg}/m)
80
+ end
81
+
82
+ put_main_cfg
83
+
84
+ end
85
+
86
+ end
87
+ end
@@ -0,0 +1,30 @@
1
+ module RemoteUnix
2
+ # common utilities which test cases can utilize
3
+ class PostfixInfo
4
+ include Common
5
+ def initialize(ssh_session)
6
+ @ssh = ssh_session
7
+ set_platform
8
+ end
9
+
10
+ def installed?
11
+ nav_path = [
12
+ {:execute => "dpkg --get-selections | grep postfix | grep -cv deinstall",
13
+ :timeout => 12},
14
+ ]
15
+
16
+ begin
17
+ out = RemoteUnix::GenericShellOutput.to_lines(@ssh.navigate(nav_path), nav_path.first[:execute]).to_s
18
+ if out == '0'
19
+ return false
20
+ else
21
+ return true
22
+ end
23
+ # TODO: need to handle Net::SSH connection ex
24
+ rescue => e
25
+ puts "IGNORE: #{e}"
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ base_dir = File.expand_path(File.dirname(__FILE__))
2
+ require 'fileutils'
3
+ require "#{base_dir}/../../common/lib/gem_helpers"
4
+ require 'time'
5
+ require 'find'
6
+ GemHelpers.update_gem_path "#{base_dir}/../../common/gems/installed"
7
+
8
+ require "#{base_dir}/common"
9
+ require "net/scp"
10
+ require "#{base_dir}/scp"
11
+ require "#{base_dir}/ssh"
12
+ require 'net/ssh/telnet'
13
+ #require 'ruby-debug'
14
+
15
+ require_dirs = [base_dir, "#{base_dir}/../helpers"]
16
+
17
+ require_dirs.each { |dir|
18
+ Find.find(dir) { |entry|
19
+ next if File.directory?(entry) || entry == "requires.rb" || entry !~ /\.rb$/
20
+ require entry
21
+ }
22
+ }
23
+
24
+
25
+
@@ -0,0 +1,22 @@
1
+ module SCP
2
+ class Upload
3
+ def initialize(host, user, password, local_file, remote_file)
4
+ begin
5
+ Net::SCP.start(host, user, :password => password) { |scp| scp.upload! local_file, remote_file }
6
+ rescue => e
7
+ retry
8
+ end
9
+ end
10
+ end
11
+ class Download
12
+ def initialize(host, user, password, remote_file, local_file)
13
+ begin
14
+ Net::SCP.start(host, user, :password => password) { |scp| scp.download! remote_file, local_file }
15
+ rescue => e
16
+ retry
17
+ end
18
+
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,46 @@
1
+ class SSH
2
+ def initialize(host, user, password)
3
+ @ssh = Net::SSH.start(host, user, {:password => password})
4
+ @ssh.send_global_request("[EMAIL PROTECTED]")
5
+ @ssh_telnet = Net::SSH::Telnet.new("Session" => @ssh)
6
+ end
7
+ def navigate(nav_path=[])
8
+
9
+ unless nav_path.kind_of?(Array)
10
+ raise ArgumentError, "argument must be an array"
11
+ end
12
+
13
+ data = []
14
+ nav_path.each { |cmd|
15
+ retry_ct = 0
16
+ @ssh.send_global_request("[EMAIL PROTECTED]")
17
+ puts "executing cmd: #{cmd.inspect}"
18
+ raise ArgumentError unless cmd.has_key?(:execute)
19
+ begin
20
+ if cmd.has_key?(:expected_output) && cmd.has_key?(:timeout)
21
+ out = @ssh_telnet.cmd("String" => cmd[:execute],
22
+ "Match" => cmd[:expected_output],
23
+ "Waittime" => cmd[:timeout])
24
+ elsif cmd.has_key?(:expected_output)
25
+ out = @ssh_telnet.cmd("String" => cmd[:execute], "Match" => cmd[:expected_output])
26
+ else
27
+ if cmd.has_key?(:timeout)
28
+ out = @ssh_telnet.cmd("String" => cmd[:execute], "Waittime" => cmd[:timeout])
29
+ else
30
+ out = @ssh_telnet.cmd("String" => cmd[:execute])
31
+ end
32
+ end
33
+ rescue Timeout::Error => e
34
+ retry_ct += 1
35
+ out = ''
36
+ retry if retry_ct < 4
37
+ puts "Timout::Error occured: retrying"
38
+ retry
39
+ end
40
+ puts out
41
+ data << out
42
+ }
43
+
44
+ data
45
+ end
46
+ end
@@ -0,0 +1,8 @@
1
+ require "test/unit"
2
+ require "qa_robusta"
3
+
4
+ class TestQaRobusta < Test::Unit::TestCase
5
+ def test_sanity
6
+ flunk "write tests or I will kneecap you"
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,219 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: qa_robusta
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.3
6
+ platform: ruby
7
+ authors:
8
+ - Cliff Cyphers
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-10-03 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: platform_helpers
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.1.2
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: rubigen
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: hoe
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: "2.12"
46
+ type: :development
47
+ version_requirements: *id003
48
+ description: |-
49
+ QA Robusta is an automation framework easing pain points away from automation test case writers. How is pain relieved?
50
+
51
+ * Elements, such as links, buttons, and other html objects are defined in one
52
+ location. This ensures over time the user won't have definitions spread out
53
+ throughout different layers of code requiring time consuming updates if the
54
+ application under test is modified.
55
+ * Well defined flows allows the user to have a common means for navigating and
56
+ controlling interactions with the application under test. This takes all logic
57
+ out of test classes and yields in higher more modular code re-use.
58
+ * When an application requiring testing has the elements and flows implemented
59
+ less code savy resources can easily add new test cases once trained on how to
60
+ access the flows and elements.
61
+ * When ever a link or button is clicked a screen shot is taken
62
+ * Results are available under site/results directory in html format. Report
63
+ includes the rdoc on a per test class method along with any screen shots taken.
64
+ Example report: https://cyberconnect.biz/opensource/demo_results.html
65
+ * Transparent remote Unix command execution leading to well defined interfaces
66
+ for common task. For example, one may have a class defined specifically for
67
+ RemoteUnixNetwork. This class would have methods such as, assign_ip, ifup, ifdown,
68
+ etc. This class then would be able to perform these task on any remote Unix machine.
69
+ * Executes the same on Windows or Linux/Unix environments. Developers have the
70
+ freedom to develop on the platform of choice.
71
+ * Mechanize extension: Allows the user to define a web application's page elements in
72
+ a YAML format and provide navigation paths accessing the YAML structure to interact
73
+ with the web application. Users can also perform direct http.post or any other
74
+ mechanize functionality when defining state-full interfaces to hit a web application
75
+ without going through a browser.
76
+ email:
77
+ - cliff.cyphers@gmail.com
78
+ executables:
79
+ - qa_robusta
80
+ extensions: []
81
+
82
+ extra_rdoc_files:
83
+ - History.txt
84
+ - Manifest.txt
85
+ - README.txt
86
+ files:
87
+ - .autotest
88
+ - History.txt
89
+ - Manifest.txt
90
+ - README.txt
91
+ - Rakefile
92
+ - bin/qa_robusta
93
+ - lib/qa_robusta.rb
94
+ - remote_unix/helpers/constants.rb
95
+ - remote_unix/helpers/out_xforms.rb
96
+ - remote_unix/lib/scp.rb
97
+ - remote_unix/lib/error_defn.rb
98
+ - remote_unix/lib/network_info.rb
99
+ - remote_unix/lib/general_unix.rb
100
+ - remote_unix/lib/network_commands.rb
101
+ - remote_unix/lib/postfix_commands.rb
102
+ - remote_unix/lib/common.rb
103
+ - remote_unix/lib/ssh.rb
104
+ - remote_unix/lib/postfix_info.rb
105
+ - remote_unix/lib/requires.rb
106
+ - demo/public/javascripts/jquery-1.6.2.min.js
107
+ - demo/demo_site.rb
108
+ - demo/views/index.erb
109
+ - mechanize_interface/conf/app.yaml
110
+ - mechanize_interface/lib/get_page.rb
111
+ - mechanize_interface/lib/login.rb
112
+ - mechanize_interface/lib/navigation_paths.rb
113
+ - mechanize_interface/lib/agent.rb
114
+ - mechanize_interface/lib/app_require.rb
115
+ - mechanize_interface/test/lib/mech_unit_test.rb
116
+ - qa_observer/script/generate
117
+ - qa_observer/script/destroy
118
+ - qa_observer/sites/demo/test_cases/home_page.rb
119
+ - qa_observer/sites/demo/elements/demo_elements.rb
120
+ - qa_observer/sites/demo/conf/base_urls.yaml
121
+ - qa_observer/sites/demo/conf/users_list.yaml
122
+ - qa_observer/sites/demo/conf/html_elements.yaml
123
+ - qa_observer/sites/demo/conf/remote_machine.yaml
124
+ - qa_observer/sites/demo/flows/demo_flows.rb
125
+ - qa_observer/sites/demo/lib/reports.rb
126
+ - qa_observer/sites/demo/lib/navigate.rb
127
+ - qa_observer/sites/demo/helpers/.placeholder
128
+ - qa_observer/sites/demo/results/.placeholder
129
+ - qa_observer/sites/demo/results/images/.placeholder
130
+ - qa_observer/conf/dev_users.yaml
131
+ - qa_observer/conf/development.yaml
132
+ - qa_observer/conf/qa_observer_links.yaml
133
+ - qa_observer/suites/init.rb
134
+ - qa_observer/suites/demo_sm_chrome/sm.yaml
135
+ - qa_observer/suites/demo_lg_chrome/lg.yaml
136
+ - qa_observer/suites/demo_md_chrome/md.yaml
137
+ - qa_observer/test_runner.rb
138
+ - qa_observer/generators/test_case/templates/test_case.rb.erb
139
+ - qa_observer/generators/test_case/test_case_generator.rb
140
+ - qa_observer/generators/site/templates/base_urls.yaml.erb
141
+ - qa_observer/generators/site/templates/reports.rb
142
+ - qa_observer/generators/site/templates/create_flow.rb.erb
143
+ - qa_observer/generators/site/templates/navigate.rb
144
+ - qa_observer/generators/site/templates/elements.rb.erb
145
+ - qa_observer/generators/site/templates/users_list.yaml
146
+ - qa_observer/generators/site/templates/html_elements.yaml
147
+ - qa_observer/generators/site/site_generator.rb
148
+ - qa_observer/lib/form_helpers.rb
149
+ - qa_observer/lib/error_defns.rb
150
+ - qa_observer/lib/env_details.rb
151
+ - qa_observer/lib/reports.rb
152
+ - qa_observer/lib/doc.rb
153
+ - qa_observer/lib/update_element.rb
154
+ - qa_observer/lib/watir.rb
155
+ - qa_observer/lib/test_extention.rb
156
+ - qa_observer/lib/system_test.rb
157
+ - qa_observer/lib/requires.rb
158
+ - common/monkey_patches/table.rb
159
+ - common/monkey_patches/unit.rb
160
+ - common/monkey_patches/telnet.rb
161
+ - common/monkey_patches/mechanize.rb
162
+ - common/conf/monkey_patch.yaml
163
+ - common/conf/monkey_patch.yaml.ex
164
+ - common/Rakefile
165
+ - common/lib/formatters.rb
166
+ - common/lib/error_defns.rb
167
+ - common/lib/navigate_mech.rb
168
+ - common/lib/gems/gems/.svn/entries
169
+ - common/lib/gems/doc/.svn/entries
170
+ - common/lib/gems/cache/.svn/entries
171
+ - common/lib/gems/installed/gems/.svn/entries
172
+ - common/lib/gems/installed/doc/.svn/entries
173
+ - common/lib/gems/installed/cache/.svn/entries
174
+ - common/lib/gems/installed/specifications/.svn/entries
175
+ - common/lib/gems/installed/.svn/entries
176
+ - common/lib/gems/specifications/.svn/entries
177
+ - common/lib/gems/.svn/entries
178
+ - common/lib/load_test_data.rb
179
+ - common/lib/monkey_patch.rb
180
+ - common/lib/format_html_tmp.html
181
+ - common/lib/update_element.rb
182
+ - common/lib/cache.rb
183
+ - common/lib/array.rb
184
+ - common/lib/gem_helpers.rb
185
+ - common/lib/gen_suite_doc.rb
186
+ - common/lib/constants.rb
187
+ - lib/monkey_patch.rb
188
+ - test/test_qa_robusta.rb
189
+ - .gemtest
190
+ homepage: https://cyberconnect.biz/opensource/qa_robusta.html
191
+ licenses: []
192
+
193
+ post_install_message:
194
+ rdoc_options:
195
+ - --main
196
+ - README.txt
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: "0"
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: "0"
211
+ requirements: []
212
+
213
+ rubyforge_project: qa_robusta
214
+ rubygems_version: 1.8.10
215
+ signing_key:
216
+ specification_version: 3
217
+ summary: QA Robusta is an automation framework easing pain points away from automation test case writers
218
+ test_files:
219
+ - test/test_qa_robusta.rb