tuneup-plist-to-junit 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3c4362932bc7e756badcfc523c406fd05c47ad0e
4
+ data.tar.gz: 90355223ca4ee0bb777a67868807be4d456b4535
5
+ SHA512:
6
+ metadata.gz: 19f10e904c4560ef2588194d6fee58ca9e7134543062d3084503a82907bad4183332a229b4f5c4365e594c0c6d2e89b5bc83e007d161407f280edfeab14d479d
7
+ data.tar.gz: cdfd99bea3ce7b4f45d21671dd5adcc6932e0313a2de37d62ef4d02c520267664de9d3340ce5a808b342d9fbbfaa44f0471eaf3aa2e1df1999a7a13123d411a5
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/
19
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in tuneup-plist-to-junit.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Vincent Pizzo
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,52 @@
1
+ # TuneUpPlistToJunit
2
+
3
+ Utility to simply convert a TuneupJS UIAutomation plist file into a JUnit
4
+ style xml output to be parsed by a CI server such as Jenkins.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'tuneup-plist-to-junit'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install tuneup-plist-to-junit
19
+
20
+ ## Testing
21
+
22
+ simply run:
23
+
24
+ $ rspec test/tuneup_plist_to_junit_utils_spec.rb
25
+
26
+ ## Usage
27
+
28
+ To use, simply use
29
+
30
+ $ tuneup_plist_to_junit_parser
31
+
32
+ Usage: TuneUpPlistToJunit.rb [options]
33
+
34
+ Specific options:
35
+ -i, --input FILE UIAutomation plist generated with TuneupJS. Default: Automation Results.plist
36
+ -o, --output FILE Output location of JUnit test report. Default: test_report.xml
37
+
38
+ Common options:
39
+ -h, --help Show this message
40
+ -v, --version Show version
41
+
42
+
43
+ ## Contributing
44
+
45
+ Contributions are welcome and greatly encouraged as I don't have a whole lot of time
46
+ to dedicate to maintaining this project.
47
+
48
+ 1. Fork it
49
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
50
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
51
+ 4. Push to the branch (`git push origin my-new-feature`)
52
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require_relative '../lib/tuneup_plist_to_junit_utils'
5
+
6
+ # Parses our command line arguments as well as provide help, versioning, and default
7
+ # command line arguments
8
+ #
9
+ # @param [Array] args the command line arguments
10
+ # @return [OpenStruct] the processed options
11
+ def parse_command_line_args(args)
12
+ options = OpenStruct.new
13
+
14
+ # Set our default input/output arguments
15
+ options.input = 'Automation Results.plist'
16
+ options.output = 'test_report.xml'
17
+
18
+ # Build our options parser
19
+ opt_parser = OptionParser.new do |opts|
20
+ opts.banner = 'Usage: TuneUpPlistToJunit.rb [options]'
21
+
22
+ opts.separator ''
23
+ opts.separator 'Specific options:'
24
+
25
+ # Mandatory arguments
26
+ opts.on('-i', '--input FILE', 'UIAutomation plist generated with TuneupJS. Default: Automation Results.plist') do |input|
27
+ options.input = input
28
+ end
29
+
30
+ opts.on('-o', '--output FILE', 'Output location of JUnit test report. Default: test_report.xml') do |output|
31
+ options.output = output
32
+ end
33
+
34
+ opts.separator ''
35
+ opts.separator 'Common options:'
36
+
37
+ # Optional arguments
38
+ opts.on_tail('-h', '--help', 'Show this message') do
39
+ puts opts
40
+ exit
41
+ end
42
+
43
+ opts.on_tail('-v', '--version', 'Show version') do
44
+ puts TuneUpPlistToJunit::VERSION
45
+ exit
46
+ end
47
+ end
48
+
49
+ # Parse our options and return the process options
50
+ opt_parser.parse!(args)
51
+ options
52
+ end
53
+
54
+ # Process the command line arguments
55
+ options = parse_command_line_args(ARGV)
56
+
57
+ # Convert the plist file to junit xml and write it to our destination
58
+ junit_report = TuneUpPlistToJunitUtils.new.generate_reports(options.input)
59
+ File.open(options.output, 'w') { |f| f.write(junit_report) }
60
+
@@ -0,0 +1,3 @@
1
+ module TuneUpPlistToJunit
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,156 @@
1
+ require 'TuneUpPlistToJunit/version'
2
+ require 'plist'
3
+ require 'nokogiri'
4
+ require 'JSON'
5
+
6
+ class TuneUpPlistToJunitUtils
7
+ #Constants that refer to the <Type> plist tag
8
+ LOG_DEBUG = 0
9
+ LOG_ERROR = 3
10
+ START_TEST = 4
11
+ END_SUCCESS = 5
12
+ END_FAILURE = 7
13
+ SCREENSHOT = 8
14
+
15
+ private_constant :LOG_DEBUG
16
+ private_constant :LOG_ERROR
17
+ private_constant :START_TEST
18
+ private_constant :END_SUCCESS
19
+ private_constant :END_FAILURE
20
+ private_constant :SCREENSHOT
21
+
22
+ private
23
+
24
+ # Parses the plist file and returns just the test results array (log messages)
25
+ #
26
+ # @param [String] plist_file_or_xml file name or xml of the UIAutomation plist file
27
+ # @return [Array] the unprocessed plist test results array, aka log messages
28
+ def parse_plist(plist_file_or_xml)
29
+ plist_hash = Plist::parse_xml(plist_file_or_xml)
30
+
31
+ # We want the 'All Samples' plist key which contains our test results
32
+ plist_hash['All Samples']
33
+ end
34
+
35
+ # Converts the log messages from the plist into an intermediate test array so that
36
+ # it can be processed with the (see #generate_junit_report) method. The test hash should
37
+ # be similar to:
38
+ # {:name => 'test name',
39
+ # :log_type => 'Pass|Fail|etc',
40
+ # :log_message_type => 4|5|7,
41
+ # :timestamp => '2014',
42
+ # :messages => [ {:message => 'debug message',
43
+ # :log_type => 0|3|8,
44
+ # :log_message_type => 'ERROR|SCREENSHOT|DEBUG|ETC',
45
+ # :timestamp => '2014'} ]}
46
+ #
47
+ # @param [Array] log_messages the unprocessed log messages from the plist
48
+ # @return [Array] the list of tests in an understandable format
49
+ def convert_log_messages_to_tests(log_messages)
50
+ # The tests array to return
51
+ tests = []
52
+
53
+ # The current test we are processing
54
+ current_test = nil
55
+
56
+ log_messages.each do |log_message|
57
+ # Pull our relevant fields from the log message in from the plist
58
+ message = log_message['Message']
59
+ log_type = log_message['LogType']
60
+ timestamp = log_message['Timestamp']
61
+ screenshot = log_message['Screenshot']
62
+ log_message_type = log_message['Type']
63
+ children = log_message['children']
64
+
65
+ # If our log message type is the START type, initialize a new current test for us to use
66
+ if !current_test && log_message_type == START_TEST
67
+ current_test = {:name => message,
68
+ :log_type => log_type,
69
+ :log_message_type => log_message_type,
70
+ :timestamp => timestamp,
71
+ :messages => []}
72
+
73
+ # In order to add a message to our current test, the message type can't be a begin or end node
74
+ elsif current_test && log_message_type != END_FAILURE && log_message_type != END_SUCCESS && log_message_type != START_TEST
75
+ message = log_message_type == SCREENSHOT ? screenshot : message
76
+ message = "#{message} \nView Dump: \n#{JSON.pretty_generate(children)}\n" if children
77
+ current_test[:messages] << {:message => message,
78
+ :log_type => log_type,
79
+ :log_message_type => log_message_type,
80
+ :timestamp => timestamp}
81
+
82
+ # If the current test is present and the message type is an end node, then add the current test to our tests and
83
+ # reset the current test
84
+ elsif current_test && (log_message_type == END_FAILURE || log_message_type == END_SUCCESS)
85
+ current_test[:end_message_type] = log_message_type
86
+ current_test[:elapsed_time] = timestamp.to_time - current_test[:timestamp].to_time
87
+ tests << current_test
88
+ current_test = nil
89
+ end
90
+ end
91
+
92
+ tests
93
+ end
94
+
95
+ # After the tests have been processed into an intermediate state from (@see #convert_log_messages_to_tests),
96
+ # the tests can then me transformed into a junit style xml output
97
+ #
98
+ # @param tests [Array] array of processed plist tests as generated from (@see #convert_log_messages_to_tests)
99
+ # @return [String] a junit xml string
100
+ def generate_junit_report(tests)
101
+ # Gather our root <testsuite/> tag information
102
+ total_tests = tests.size
103
+ total_errors = tests.reduce(0) { |sum, t| sum + t[:messages].count { |m| m[:log_message_type] == LOG_ERROR } }
104
+ total_failures = tests.count { |t| t[:end_message_type] == END_FAILURE }
105
+ starting_time = tests.empty? ? '' : tests[0][:timestamp]
106
+ total_time = tests.reduce(0) { |sum, t| sum + t[:elapsed_time] }
107
+
108
+ # Begin building our junit xml using Nokogiri
109
+ builder = Nokogiri::XML::Builder.new do |xml|
110
+ # Our root xml tag should be a <testsuite/> tag with the number of tests, duration, failures, etc
111
+ xml.testsuite(:tests => total_tests, :errors => total_errors, :failures => total_failures, :timestamp => starting_time, :time => total_time) {
112
+ # For each of our tests we want to create a <testcase/> tag
113
+ tests.each do |test|
114
+ xml.testcase(:name => test[:name], :time => test[:elapsed_time]) {
115
+
116
+ # If the test case ended in a failure, we want to add a <failure/> tag
117
+ if test[:end_message_type] == END_FAILURE
118
+ xml.failure(:message => test[:name], :type => test[:log_type])
119
+ end
120
+
121
+ # Add the messages from the test to the test case tag
122
+ test[:messages].each do |message|
123
+ case message[:log_message_type]
124
+
125
+ # For debug and screenshot, we'll convert the messages to a <system-out/> tag
126
+ when LOG_DEBUG, SCREENSHOT
127
+ xml.send(:"system-out") {
128
+ xml.text message[:message]
129
+ }
130
+
131
+ # This is likely the LOG_ERROR case which we'll record it as an <error/> tag
132
+ else
133
+ xml.error(:message => message[:message], :type => message[:log_type])
134
+ end
135
+ end
136
+ }
137
+ end
138
+ }
139
+ end
140
+
141
+ builder.to_xml
142
+ end
143
+
144
+ public
145
+
146
+ # Process the plist file and generates a JUnit style xml string
147
+ #
148
+ # @param [String] plist_file_or_xml file name or xml of the UIAutomation plist file
149
+ # @return [String] the JUnit style xml
150
+ def generate_reports(plist_file_or_xml)
151
+ log_messages = parse_plist(plist_file_or_xml)
152
+ tests = convert_log_messages_to_tests(log_messages)
153
+ generate_junit_report(tests)
154
+ end
155
+
156
+ end
@@ -0,0 +1,1106 @@
1
+ <?xml version="1.0"?>
2
+ <testsuite tests="12" errors="3" failures="3" timestamp="2014-03-04T20:36:27+00:00" time="166.0">
3
+ <testcase name="Holding login button shows the edit url popup" time="14.0">
4
+ <system-out>target.frontMostApp().mainWindow().buttons()["Login Button"].touchAndHold("5.5")</system-out>
5
+ <system-out>target.frontMostApp().mainWindow().textViews()[0].touchAndHold("1.1")</system-out>
6
+ <system-out>target.frontMostApp().editingMenu().elements()["Select All"].tap()</system-out>
7
+ <system-out>target.frontMostApp().keyboard().typeString("http://vince.poweredbypeanuts.com:3000/api")</system-out>
8
+ <system-out>target.frontMostApp().mainWindow().buttons()[1].tap()</system-out>
9
+ </testcase>
10
+ <testcase name="Login button takes us to the login webview" time="2.0">
11
+ <system-out>target.frontMostApp().mainWindow().buttons()["Login Button"].tap()</system-out>
12
+ </testcase>
13
+ <testcase name="Searching for provider yeilds only one result" time="3.0">
14
+ <system-out>target.frontMostApp().mainWindow().scrollViews()[0].webViews()[0].textFields()[0].tap()</system-out>
15
+ <system-out>target.frontMostApp().keyboard().typeString("DemoDummy")</system-out>
16
+ </testcase>
17
+ <testcase name="Tapping the provider link brings us to the demo login page" time="3.0">
18
+ <system-out>target.frontMostApp().mainWindow().scrollViews()[0].webViews()[0].links()["DemoDummy"].tap()</system-out>
19
+ </testcase>
20
+ <testcase name="Logging in with our dummy user shows the login screen, then inbox" time="8.0">
21
+ <system-out>target.frontMostApp().mainWindow().scrollViews()[0].webViews()[0].textFields()[0].tap()</system-out>
22
+ <system-out>target.frontMostApp().keyboard().typeString("automated@singlewire.com")</system-out>
23
+ <system-out>target.frontMostApp().mainWindow().scrollViews()[0].webViews()[0].buttons()["Login"].tap()</system-out>
24
+ </testcase>
25
+ <testcase name="Inbox contains no initial rows" time="8.0"/>
26
+ <testcase name="Clicking on the compose icon starts the loading process. Initial templates show." time="1.0">
27
+ <system-out>target.frontMostApp().navigationBar().rightButton().tap()</system-out>
28
+ </testcase>
29
+ <testcase name="Clicking on the first template shows the compose screen." time="3.0">
30
+ <failure message="Clicking on the first template shows the compose screen." type="Fail"/>
31
+ <system-out>target.frontMostApp().mainWindow().tableViews()["Message Templates Table"].cells()[0].tap()</system-out>
32
+ <error message="AssertionException: &quot;Expected &lt;The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College Mass Notification System. If this was an actual emergency, you would receive essential news and information.&gt; but received &lt;An intruder has been spotted on campus&gt;&quot;" type="Error"/>
33
+ <system-out>UIATarget: name:iPhone Simulator rect:{{0, 0}, {320, 568}}
34
+ View Dump:
35
+ [
36
+ {
37
+ "LogType": "Debug",
38
+ "Message": "UIAApplication: name:InformaCast rect:{{0, 20}, {320, 548}}",
39
+ "Screenshot": "A803396E-5DA2-4802-B2D8-2BB4ACC3B225",
40
+ "Timestamp": "2014-03-04T20:37:09+00:00",
41
+ "Type": 0,
42
+ "children": [
43
+ {
44
+ "LogType": "Debug",
45
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
46
+ "Screenshot": "88296D7F-533F-4E2B-BD09-AC0958CC9FD7",
47
+ "Timestamp": "2014-03-04T20:37:09+00:00",
48
+ "Type": 0,
49
+ "children": [
50
+ {
51
+ "LogType": "Debug",
52
+ "Message": "UIANavigationBar: name:Compose rect:{{0, 20}, {320, 44}}",
53
+ "Screenshot": "159EED56-52FB-43A4-866A-2D18781FBD8C",
54
+ "Timestamp": "2014-03-04T20:37:09+00:00",
55
+ "Type": 0,
56
+ "children": [
57
+ {
58
+ "LogType": "Debug",
59
+ "Message": "UIAImage: rect:{{0, 0}, {320, 64}}",
60
+ "Screenshot": "1C209DDD-A19A-46FF-9BC1-B8107AD0D212",
61
+ "Timestamp": "2014-03-04T20:37:09+00:00",
62
+ "Type": 0,
63
+ "children": [
64
+ {
65
+ "LogType": "Debug",
66
+ "Message": "UIAImage: rect:{{0, 64}, {320, 0}}",
67
+ "Screenshot": "2FAD6EC1-0CCB-400B-8BC3-BE854DEA4726",
68
+ "Timestamp": "2014-03-04T20:37:09+00:00",
69
+ "Type": 0,
70
+ "children": [
71
+
72
+ ]
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "LogType": "Debug",
78
+ "Message": "UIAStaticText: name:Compose value:Compose rect:{{121, 28}, {78, 27}}",
79
+ "Screenshot": "2BFB07C2-8B86-4D39-8126-EF3FA794CC05",
80
+ "Timestamp": "2014-03-04T20:37:09+00:00",
81
+ "Type": 0,
82
+ "children": [
83
+
84
+ ]
85
+ },
86
+ {
87
+ "LogType": "Debug",
88
+ "Message": "UIAButton: name:Notifications rect:{{-54, 28}, {54, 30}}",
89
+ "Timestamp": "2014-03-04T20:37:09+00:00",
90
+ "Type": 0,
91
+ "children": [
92
+ {
93
+ "LogType": "Debug",
94
+ "Message": "UIAStaticText: name:Notifications value:Notifications rect:{{-35, 30}, {35, 22}}",
95
+ "Timestamp": "2014-03-04T20:37:09+00:00",
96
+ "Type": 0,
97
+ "children": [
98
+
99
+ ]
100
+ }
101
+ ]
102
+ },
103
+ {
104
+ "LogType": "Debug",
105
+ "Message": "UIAButton: name:Back rect:{{8, 26}, {55, 30}}",
106
+ "Screenshot": "F1C9E660-3182-4AB0-9DE6-A7E44D288F62",
107
+ "Timestamp": "2014-03-04T20:37:09+00:00",
108
+ "Type": 0,
109
+ "children": [
110
+
111
+ ]
112
+ },
113
+ {
114
+ "LogType": "Debug",
115
+ "Message": "UIAButton: name:Cancel rect:{{8, 28}, {50, 30}}",
116
+ "Screenshot": "12A898CF-48AE-4A92-9D38-2DFB75F4498E",
117
+ "Timestamp": "2014-03-04T20:37:09+00:00",
118
+ "Type": 0,
119
+ "children": [
120
+ {
121
+ "LogType": "Debug",
122
+ "Message": "UIAStaticText: name:Cancel value:Cancel rect:{{8, 32}, {50, 21}}",
123
+ "Screenshot": "566F8694-6C1B-42C7-9791-F043913D6428",
124
+ "Timestamp": "2014-03-04T20:37:09+00:00",
125
+ "Type": 0,
126
+ "children": [
127
+
128
+ ]
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "LogType": "Debug",
134
+ "Message": "UIAButton: name:UINavigationBarBackIndicatorDefault.png rect:{{8, 32}, {12, 20}}",
135
+ "Screenshot": "F9430908-BFBF-4EC4-92F8-6B148DA9D279",
136
+ "Timestamp": "2014-03-04T20:37:09+00:00",
137
+ "Type": 0,
138
+ "children": [
139
+
140
+ ]
141
+ },
142
+ {
143
+ "LogType": "Debug",
144
+ "Message": "UIAStaticText: name:Select Template value:Select Template rect:{{27, 28}, {126, 27}}",
145
+ "Screenshot": "BB7E8447-17CC-4A04-9635-E31F893B4E00",
146
+ "Timestamp": "2014-03-04T20:37:09+00:00",
147
+ "Type": 0,
148
+ "children": [
149
+ {
150
+ "LogType": "Debug",
151
+ "Message": "UIAStaticText: name:Select Template value:Select Template rect:{{27, 28}, {126, 24}}",
152
+ "Screenshot": "B62BD658-942D-4E94-B94A-54D53876488A",
153
+ "Timestamp": "2014-03-04T20:37:09+00:00",
154
+ "Type": 0,
155
+ "children": [
156
+
157
+ ]
158
+ }
159
+ ]
160
+ },
161
+ {
162
+ "LogType": "Debug",
163
+ "Message": "UIAButton: name:Send rect:{{274, 28}, {38, 30}}",
164
+ "Screenshot": "EE982447-A912-426B-8867-905096F88EEE",
165
+ "Timestamp": "2014-03-04T20:37:09+00:00",
166
+ "Type": 0,
167
+ "children": [
168
+
169
+ ]
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "LogType": "Debug",
175
+ "Message": "UIATableView: name:Message Templates Table value:rows 1 to 4 of 4 rect:{{-96, 64}, {320, 504}}",
176
+ "Screenshot": "B5753812-ADC1-4DDF-848A-042CC0F2EE9E",
177
+ "Timestamp": "2014-03-04T20:37:09+00:00",
178
+ "Type": 0,
179
+ "children": [
180
+ {
181
+ "LogType": "Debug",
182
+ "Message": "UIATableCell: name:Intruder Alert, An intruder has been spotted on campus, Notice. An intruder has been spotted on campus heading towards the recreation center. Please be advised and stay tuned for further updates. value:1 rect:{{-96, 64}, {320, 90}}",
183
+ "Screenshot": "23CD05E0-870C-42B9-8794-FFF5993AB26F",
184
+ "Timestamp": "2014-03-04T20:37:09+00:00",
185
+ "Type": 0,
186
+ "children": [
187
+ {
188
+ "LogType": "Debug",
189
+ "Message": "UIAStaticText: name:Intruder Alert, An intruder has been spotted on campus, Notice. An intruder has been spotted on campus heading towards the recreation center. Please be advised and stay tuned for further updates. value: rect:{{-96, 64}, {320, 90}}",
190
+ "Screenshot": "C2F8D9F0-8BFE-487F-8951-7A821B049731",
191
+ "Timestamp": "2014-03-04T20:37:09+00:00",
192
+ "Type": 0,
193
+ "children": [
194
+
195
+ ]
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ "LogType": "Debug",
201
+ "Message": "UIATableCell: name:The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College , The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College Mass Notification System. If this was an actual emergency, you would receive essential news and information., The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College Mass Notification System. If this was an actual emergency, you would receive essential news and information. value: rect:{{-96, 154}, {320, 90}}",
202
+ "Screenshot": "CFD4108B-3CAD-4221-8233-059B60A62458",
203
+ "Timestamp": "2014-03-04T20:37:09+00:00",
204
+ "Type": 0,
205
+ "children": [
206
+ {
207
+ "LogType": "Debug",
208
+ "Message": "UIAStaticText: name:The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College , The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College Mass Notification System. If this was an actual emergency, you would receive essential news and information., The following is a test of the Edmonds Community College Mass Notification System. The following is a test of the Edmonds Community College Mass Notification System. If this was an actual emergency, you would receive essential news and information. value: rect:{{-96, 154}, {320, 90}}",
209
+ "Screenshot": "617F00FC-7E28-4CD3-90CC-ECB9AD7F3551",
210
+ "Timestamp": "2014-03-04T20:37:09+00:00",
211
+ "Type": 0,
212
+ "children": [
213
+
214
+ ]
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "LogType": "Debug",
220
+ "Message": "UIATableCell: name:What would you like this friday?, What would you like this friday?, Please take a second to confirm what you would like to eat this friday. If you have any allergies, please send your requests to: admin@company.com value: rect:{{-96, 244}, {320, 90}}",
221
+ "Screenshot": "2DE2BC3B-5538-42F8-B903-B070EFC9FEAD",
222
+ "Timestamp": "2014-03-04T20:37:09+00:00",
223
+ "Type": 0,
224
+ "children": [
225
+ {
226
+ "LogType": "Debug",
227
+ "Message": "UIAStaticText: name:What would you like this friday?, What would you like this friday?, Please take a second to confirm what you would like to eat this friday. If you have any allergies, please send your requests to: admin@company.com value: rect:{{-96, 244}, {320, 90}}",
228
+ "Screenshot": "E146EE0F-3515-4665-8958-554600F3C731",
229
+ "Timestamp": "2014-03-04T20:37:09+00:00",
230
+ "Type": 0,
231
+ "children": [
232
+
233
+ ]
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ "LogType": "Debug",
239
+ "Message": "UIATableCell: name:Weather Alert, Hail warning until 8PM, THE NATIONAL WEATHER SERVICE IN MADISON HAS ISSUED A * HAIL WARNING FOR... EASTERN DANE COUNTY IN WISCONSIN... NORTHEN DANE COUNTY IN WISCONSIN... * UNTIL 8 PM CDT value: rect:{{-96, 334}, {320, 90}}",
240
+ "Screenshot": "DA4DA586-8B9D-41C2-92EB-FED37037E0F8",
241
+ "Timestamp": "2014-03-04T20:37:09+00:00",
242
+ "Type": 0,
243
+ "children": [
244
+ {
245
+ "LogType": "Debug",
246
+ "Message": "UIAStaticText: name:Weather Alert, Hail warning until 8PM, THE NATIONAL WEATHER SERVICE IN MADISON HAS ISSUED A * HAIL WARNING FOR... EASTERN DANE COUNTY IN WISCONSIN... NORTHEN DANE COUNTY IN WISCONSIN... * UNTIL 8 PM CDT value: rect:{{-96, 334}, {320, 90}}",
247
+ "Screenshot": "4D6DD5DC-6D3E-4067-B3E4-3994B4D4800E",
248
+ "Timestamp": "2014-03-04T20:37:09+00:00",
249
+ "Type": 0,
250
+ "children": [
251
+
252
+ ]
253
+ }
254
+ ]
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "LogType": "Debug",
260
+ "Message": "UIAImage: name:UINavigationVerticalColumnShadow.png rect:{{-9, 0}, {9, 568}}",
261
+ "Timestamp": "2014-03-04T20:37:09+00:00",
262
+ "Type": 0,
263
+ "children": [
264
+
265
+ ]
266
+ },
267
+ {
268
+ "LogType": "Debug",
269
+ "Message": "UIATableView: name:Compose Table View value:rows 1 to 6 of 8 rect:{{0, 0}, {320, 568}}",
270
+ "Screenshot": "551A88F2-9E00-4ABF-8D03-3F245EEED42D",
271
+ "Timestamp": "2014-03-04T20:37:09+00:00",
272
+ "Type": 0,
273
+ "children": [
274
+ {
275
+ "LogType": "Debug",
276
+ "Message": "UIATableGroup: name:SUBJECT rect:{{0, 64}, {320, 55}}",
277
+ "Screenshot": "53833C2A-5662-4AAF-9CBD-C69A2AFF8AD9",
278
+ "Timestamp": "2014-03-04T20:37:09+00:00",
279
+ "Type": 0,
280
+ "children": [
281
+ {
282
+ "LogType": "Debug",
283
+ "Message": "UIAElement: name:SUBJECT rect:{{0, 64}, {320, 55}}",
284
+ "Screenshot": "A53031DC-15A6-4BBB-B56E-ED33953633A3",
285
+ "Timestamp": "2014-03-04T20:37:09+00:00",
286
+ "Type": 0,
287
+ "children": [
288
+
289
+ ]
290
+ }
291
+ ]
292
+ },
293
+ {
294
+ "LogType": "Debug",
295
+ "Message": "UIATableCell: name:Subject Text View value: rect:{{0, 119}, {320, 67}}",
296
+ "Screenshot": "F420E8F0-50EC-4135-A36A-B1F457A7BF14",
297
+ "Timestamp": "2014-03-04T20:37:09+00:00",
298
+ "Type": 0,
299
+ "children": [
300
+ {
301
+ "LogType": "Debug",
302
+ "Message": "UIATextView: name:Subject Text View value:An intruder has been spotted on campus rect:{{20, 127}, {280, 50}}",
303
+ "Screenshot": "46C872C0-E3EC-433D-966A-5BB8CA412E0B",
304
+ "Timestamp": "2014-03-04T20:37:09+00:00",
305
+ "Type": 0,
306
+ "children": [
307
+
308
+ ]
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "LogType": "Debug",
314
+ "Message": "UIATableGroup: name:RECIPIENTS rect:{{0, 196}, {320, 38}}",
315
+ "Screenshot": "614B4B9E-2891-43C9-8F8A-06B9D3853974",
316
+ "Timestamp": "2014-03-04T20:37:09+00:00",
317
+ "Type": 0,
318
+ "children": [
319
+ {
320
+ "LogType": "Debug",
321
+ "Message": "UIAElement: name:RECIPIENTS rect:{{0, 196}, {320, 38}}",
322
+ "Screenshot": "AFB432FD-4B15-4038-82AB-BD05BB13215D",
323
+ "Timestamp": "2014-03-04T20:37:09+00:00",
324
+ "Type": 0,
325
+ "children": [
326
+
327
+ ]
328
+ }
329
+ ]
330
+ },
331
+ {
332
+ "LogType": "Debug",
333
+ "Message": "UIATableCell: value: rect:{{0, 234}, {320, 49}}",
334
+ "Screenshot": "EABDD25D-01EF-4B98-9E78-4C3DC90F9290",
335
+ "Timestamp": "2014-03-04T20:37:09+00:00",
336
+ "Type": 0,
337
+ "children": [
338
+ {
339
+ "LogType": "Debug",
340
+ "Message": "UIAStaticText: name:Security value:Security rect:{{32, 242}, {69, 31}}",
341
+ "Screenshot": "1DE3B41C-E398-415A-A901-D1D2E54136C8",
342
+ "Timestamp": "2014-03-04T20:37:09+00:00",
343
+ "Type": 0,
344
+ "children": [
345
+
346
+ ]
347
+ },
348
+ {
349
+ "LogType": "Debug",
350
+ "Message": "UIAStaticText: name:Students value:Students rect:{{105, 242}, {75, 31}}",
351
+ "Screenshot": "90120C26-3C89-49F0-8C24-36DD810535B7",
352
+ "Timestamp": "2014-03-04T20:37:09+00:00",
353
+ "Type": 0,
354
+ "children": [
355
+
356
+ ]
357
+ },
358
+ {
359
+ "LogType": "Debug",
360
+ "Message": "UIATextField: value: rect:{{182, 242}, {75, 31}}",
361
+ "Screenshot": "23419D92-AB43-488D-8331-5E90ED5B40BE",
362
+ "Timestamp": "2014-03-04T20:37:09+00:00",
363
+ "Type": 0,
364
+ "children": [
365
+ {
366
+ "LogType": "Debug",
367
+ "Message": "UIATextField: value: rect:{{182, 242}, {75, 31}}",
368
+ "Screenshot": "8FAEA89D-0A20-4354-BF17-1A0745273C91",
369
+ "Timestamp": "2014-03-04T20:37:09+00:00",
370
+ "Type": 0,
371
+ "children": [
372
+
373
+ ]
374
+ }
375
+ ]
376
+ }
377
+ ]
378
+ },
379
+ {
380
+ "LogType": "Debug",
381
+ "Message": "UIATableGroup: name:CONFIRMATION rect:{{0, 292}, {320, 38}}",
382
+ "Screenshot": "11D81913-C852-4D9A-955C-F6FCE48FC928",
383
+ "Timestamp": "2014-03-04T20:37:09+00:00",
384
+ "Type": 0,
385
+ "children": [
386
+ {
387
+ "LogType": "Debug",
388
+ "Message": "UIAElement: name:CONFIRMATION rect:{{0, 292}, {320, 38}}",
389
+ "Screenshot": "14F4B006-DBDE-4235-A81A-37708658D561",
390
+ "Timestamp": "2014-03-04T20:37:09+00:00",
391
+ "Type": 0,
392
+ "children": [
393
+
394
+ ]
395
+ }
396
+ ]
397
+ },
398
+ {
399
+ "LogType": "Debug",
400
+ "Message": "UIATableCell: name:Have you seen the intruder? value: rect:{{0, 330}, {320, 44}}",
401
+ "Screenshot": "40013E1C-F992-49C2-A5F9-EE67DBA5285B",
402
+ "Timestamp": "2014-03-04T20:37:09+00:00",
403
+ "Type": 0,
404
+ "children": [
405
+ {
406
+ "LogType": "Debug",
407
+ "Message": "UIAStaticText: name:Have you seen the intruder? value: rect:{{0, 330}, {320, 44}}",
408
+ "Screenshot": "B9C410A1-61E9-4AF6-AE9B-78DE1B1025EC",
409
+ "Timestamp": "2014-03-04T20:37:09+00:00",
410
+ "Type": 0,
411
+ "children": [
412
+
413
+ ]
414
+ }
415
+ ]
416
+ },
417
+ {
418
+ "LogType": "Debug",
419
+ "Message": "UIATableGroup: name:BODY rect:{{0, 384}, {320, 38}}",
420
+ "Screenshot": "82669029-860B-4DAF-A086-ED6F68A6ACF7",
421
+ "Timestamp": "2014-03-04T20:37:09+00:00",
422
+ "Type": 0,
423
+ "children": [
424
+ {
425
+ "LogType": "Debug",
426
+ "Message": "UIAElement: name:BODY rect:{{0, 384}, {320, 38}}",
427
+ "Screenshot": "DE1CFB9C-148D-4B18-B901-7AA7B89C85CA",
428
+ "Timestamp": "2014-03-04T20:37:09+00:00",
429
+ "Type": 0,
430
+ "children": [
431
+
432
+ ]
433
+ }
434
+ ]
435
+ },
436
+ {
437
+ "LogType": "Debug",
438
+ "Message": "UIATableCell: value: rect:{{0, 422}, {320, 109}}",
439
+ "Screenshot": "7E4B5913-5C2D-4420-8434-AF179EB487F8",
440
+ "Timestamp": "2014-03-04T20:37:09+00:00",
441
+ "Type": 0,
442
+ "children": [
443
+ {
444
+ "LogType": "Debug",
445
+ "Message": "UIATextView: value:Notice. An intruder has been spotted on campus heading towards the recreation center. Please be advised and stay tuned for further updates. rect:{{20, 428}, {280, 96}}",
446
+ "Screenshot": "0403F8CA-4B18-4A0E-A81D-24C7EEB64848",
447
+ "Timestamp": "2014-03-04T20:37:09+00:00",
448
+ "Type": 0,
449
+ "children": [
450
+
451
+ ]
452
+ }
453
+ ]
454
+ },
455
+ {
456
+ "LogType": "Debug",
457
+ "Message": "UIATableGroup: name:IMAGE rect:{{0, 540}, {320, 38}}",
458
+ "Screenshot": "88852DD2-C348-4546-8431-C0FF3BB215C6",
459
+ "Timestamp": "2014-03-04T20:37:09+00:00",
460
+ "Type": 0,
461
+ "children": [
462
+ {
463
+ "LogType": "Debug",
464
+ "Message": "UIAElement: name:IMAGE rect:{{0, 540}, {320, 38}}",
465
+ "Screenshot": "6AD54A57-A03B-4A53-84B7-BA685A8F32C1",
466
+ "Timestamp": "2014-03-04T20:37:09+00:00",
467
+ "Type": 0,
468
+ "children": [
469
+
470
+ ]
471
+ }
472
+ ]
473
+ },
474
+ {
475
+ "LogType": "Debug",
476
+ "Message": "UIATableCell: name:No image available value: rect:{{0, 578}, {320, 180}}",
477
+ "Timestamp": "2014-03-04T20:37:09+00:00",
478
+ "Type": 0,
479
+ "children": [
480
+ {
481
+ "LogType": "Debug",
482
+ "Message": "UIAStaticText: name:No image available value: rect:{{0, 578}, {320, 180}}",
483
+ "Timestamp": "2014-03-04T20:37:09+00:00",
484
+ "Type": 0,
485
+ "children": [
486
+
487
+ ]
488
+ }
489
+ ]
490
+ },
491
+ {
492
+ "LogType": "Debug",
493
+ "Message": "UIATableCell: name:Choose value: rect:{{0, 758}, {320, 43}}",
494
+ "Timestamp": "2014-03-04T20:37:09+00:00",
495
+ "Type": 0,
496
+ "children": [
497
+ {
498
+ "LogType": "Debug",
499
+ "Message": "UIAButton: name:Choose rect:{{0, 0}, {136, 30}}",
500
+ "Screenshot": "8B1E5657-0DC2-45A8-9630-2A3126F1A07F",
501
+ "Timestamp": "2014-03-04T20:37:09+00:00",
502
+ "Type": 0,
503
+ "children": [
504
+
505
+ ]
506
+ },
507
+ {
508
+ "LogType": "Debug",
509
+ "Message": "UIAButton: name:Remove rect:{{0, 0}, {136, 30}}",
510
+ "Screenshot": "7440BC8A-BE14-4902-AA1C-7272883E156F",
511
+ "Timestamp": "2014-03-04T20:37:09+00:00",
512
+ "Type": 0,
513
+ "children": [
514
+
515
+ ]
516
+ }
517
+ ]
518
+ },
519
+ {
520
+ "LogType": "Debug",
521
+ "Message": "UIATableGroup: name:Audio rect:{{0, 811}, {320, 38}}",
522
+ "Timestamp": "2014-03-04T20:37:09+00:00",
523
+ "Type": 0,
524
+ "children": [
525
+ {
526
+ "LogType": "Debug",
527
+ "Message": "UIAStaticText: name:Audio rect:{{0, 811}, {320, 38}}",
528
+ "Timestamp": "2014-03-04T20:37:09+00:00",
529
+ "Type": 0,
530
+ "children": [
531
+
532
+ ]
533
+ }
534
+ ]
535
+ },
536
+ {
537
+ "LogType": "Debug",
538
+ "Message": "UIATableCell: name:0:00, 0:14 value: rect:{{0, 848}, {320, 139}}",
539
+ "Timestamp": "2014-03-04T20:37:09+00:00",
540
+ "Type": 0,
541
+ "children": [
542
+ {
543
+ "LogType": "Debug",
544
+ "Message": "UIAStaticText: name:0:00, 0:14 value: rect:{{0, 848}, {320, 139}}",
545
+ "Timestamp": "2014-03-04T20:37:09+00:00",
546
+ "Type": 0,
547
+ "children": [
548
+
549
+ ]
550
+ },
551
+ {
552
+ "LogType": "Debug",
553
+ "Message": "UIAButton: name:play button rect:{{0, 0}, {23, 28}}",
554
+ "Screenshot": "82CC182A-FBE5-4B8D-872F-15542947B944",
555
+ "Timestamp": "2014-03-04T20:37:09+00:00",
556
+ "Type": 0,
557
+ "children": [
558
+
559
+ ]
560
+ },
561
+ {
562
+ "LogType": "Debug",
563
+ "Message": "UIASlider: value:0% rect:{{0, 0}, {129, 34}}",
564
+ "Screenshot": "B882401D-EC26-4F3B-A0A2-3B472E82082E",
565
+ "Timestamp": "2014-03-04T20:37:09+00:00",
566
+ "Type": 0,
567
+ "children": [
568
+
569
+ ]
570
+ },
571
+ {
572
+ "LogType": "Debug",
573
+ "Message": "UIASlider: value:100% rect:{{0, 0}, {192, 34}}",
574
+ "Screenshot": "C9BEFA36-4DE9-495A-A4CB-AF180CBFF971",
575
+ "Timestamp": "2014-03-04T20:37:09+00:00",
576
+ "Type": 0,
577
+ "children": [
578
+
579
+ ]
580
+ }
581
+ ]
582
+ },
583
+ {
584
+ "LogType": "Debug",
585
+ "Message": "UIATableCell: name:Record value: rect:{{0, 988}, {320, 43}}",
586
+ "Timestamp": "2014-03-04T20:37:09+00:00",
587
+ "Type": 0,
588
+ "children": [
589
+ {
590
+ "LogType": "Debug",
591
+ "Message": "UIAButton: name:Record rect:{{0, 0}, {136, 30}}",
592
+ "Screenshot": "D3B34FAF-4AAC-45A0-B2FC-A123A153F83F",
593
+ "Timestamp": "2014-03-04T20:37:09+00:00",
594
+ "Type": 0,
595
+ "children": [
596
+
597
+ ]
598
+ },
599
+ {
600
+ "LogType": "Debug",
601
+ "Message": "UIAButton: name:Remove rect:{{0, 0}, {136, 30}}",
602
+ "Screenshot": "B8EFCA7F-4CF2-42D1-A22F-B8E4D3C57BE7",
603
+ "Timestamp": "2014-03-04T20:37:09+00:00",
604
+ "Type": 0,
605
+ "children": [
606
+
607
+ ]
608
+ }
609
+ ]
610
+ }
611
+ ]
612
+ }
613
+ ]
614
+ },
615
+ {
616
+ "LogType": "Debug",
617
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
618
+ "Screenshot": "30EF0EC3-0B16-4C4E-8AAB-44EA51AF053C",
619
+ "Timestamp": "2014-03-04T20:37:09+00:00",
620
+ "Type": 0,
621
+ "children": [
622
+ {
623
+ "LogType": "Debug",
624
+ "Message": "UIAStatusBar: rect:{{0, 0}, {320, 20}}",
625
+ "Screenshot": "C912E855-A577-441D-8816-3F58797C07D9",
626
+ "Timestamp": "2014-03-04T20:37:09+00:00",
627
+ "Type": 0,
628
+ "children": [
629
+ {
630
+ "LogType": "Debug",
631
+ "Message": "UIAElement: name:Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top rect:{{6, 0}, {38, 20}}",
632
+ "Screenshot": "81EE41EF-6B08-4085-A1EC-CB0A453B7DE2",
633
+ "Timestamp": "2014-03-04T20:37:09+00:00",
634
+ "Type": 0,
635
+ "children": [
636
+
637
+ ]
638
+ },
639
+ {
640
+ "LogType": "Debug",
641
+ "Message": "UIAElement: name:3 of 3 Wi-Fi bars rect:{{49, 0}, {13, 20}}",
642
+ "Screenshot": "5B102B96-DB34-4C29-A838-2FE1850B2612",
643
+ "Timestamp": "2014-03-04T20:37:09+00:00",
644
+ "Type": 0,
645
+ "children": [
646
+
647
+ ]
648
+ },
649
+ {
650
+ "LogType": "Debug",
651
+ "Message": "UIAElement: name:Network connection in progress rect:{{68, 0}, {10, 20}}",
652
+ "Screenshot": "B683AEAA-0260-43A7-A478-8ED70B755EC0",
653
+ "Timestamp": "2014-03-04T20:37:09+00:00",
654
+ "Type": 0,
655
+ "children": [
656
+
657
+ ]
658
+ },
659
+ {
660
+ "LogType": "Debug",
661
+ "Message": "UIAElement: name:2:37 PM rect:{{137, 0}, {47, 20}}",
662
+ "Screenshot": "F1A86B82-7F63-40B0-9F3E-073EADBBBE8F",
663
+ "Timestamp": "2014-03-04T20:37:09+00:00",
664
+ "Type": 0,
665
+ "children": [
666
+
667
+ ]
668
+ },
669
+ {
670
+ "LogType": "Debug",
671
+ "Message": "UIAElement: name:Network connection in progress rect:{{274, 0}, {10, 20}}",
672
+ "Screenshot": "76165A58-7AAB-4D33-A6A4-658DD2EB2D1A",
673
+ "Timestamp": "2014-03-04T20:37:09+00:00",
674
+ "Type": 0,
675
+ "children": [
676
+
677
+ ]
678
+ },
679
+ {
680
+ "LogType": "Debug",
681
+ "Message": "UIAElement: name:100% battery power rect:{{290, 0}, {25, 20}}",
682
+ "Screenshot": "4AB9C5D7-F8EC-4ECF-860D-B84096727E35",
683
+ "Timestamp": "2014-03-04T20:37:09+00:00",
684
+ "Type": 0,
685
+ "children": [
686
+
687
+ ]
688
+ }
689
+ ]
690
+ }
691
+ ]
692
+ },
693
+ {
694
+ "LogType": "Debug",
695
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
696
+ "Screenshot": "17A8FD1A-9485-41CD-9AEF-4CE9EC713438",
697
+ "Timestamp": "2014-03-04T20:37:09+00:00",
698
+ "Type": 0,
699
+ "children": [
700
+
701
+ ]
702
+ }
703
+ ]
704
+ }
705
+ ]
706
+ </system-out>
707
+ <system-out>target.captureRectWithName("{origin:{x:0.00,y:0.00}, size:{height:568.00,width:320.00}}", "Clicking on the first template shows the compose screen.-fail")</system-out>
708
+ <system-out>3696C5B1-5177-4A8A-8FAD-9D7EEBE4B9C8</system-out>
709
+ </testcase>
710
+ <testcase name="Clicking the send button starts the send process. We receive the notification within 10 seconds." time="112.0">
711
+ <failure message="Clicking the send button starts the send process. We receive the notification within 10 seconds." type="Fail"/>
712
+ <system-out>target.frontMostApp().navigationBar().rightButton().tap()</system-out>
713
+ <error message="AssertionException: &quot;Expected &lt;1&gt; but received &lt;0&gt;&quot;" type="Error"/>
714
+ <system-out>UIATarget: name:iPhone Simulator rect:{{0, 0}, {320, 568}}
715
+ View Dump:
716
+ [
717
+ {
718
+ "LogType": "Debug",
719
+ "Message": "UIAApplication: name:InformaCast rect:{{0, 20}, {320, 548}}",
720
+ "Screenshot": "C386F2FB-65D0-4ACE-B522-107F5059AFB6",
721
+ "Timestamp": "2014-03-04T20:39:01+00:00",
722
+ "Type": 0,
723
+ "children": [
724
+ {
725
+ "LogType": "Debug",
726
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
727
+ "Screenshot": "50D01E4D-486C-4362-8C9D-00E260F6DD66",
728
+ "Timestamp": "2014-03-04T20:39:01+00:00",
729
+ "Type": 0,
730
+ "children": [
731
+ {
732
+ "LogType": "Debug",
733
+ "Message": "UIANavigationBar: name:Notifications rect:{{0, 20}, {320, 44}}",
734
+ "Screenshot": "8B5BA665-D1CE-44A5-9C77-7814046977B2",
735
+ "Timestamp": "2014-03-04T20:39:01+00:00",
736
+ "Type": 0,
737
+ "children": [
738
+ {
739
+ "LogType": "Debug",
740
+ "Message": "UIAImage: rect:{{0, 0}, {320, 64}}",
741
+ "Screenshot": "7A402D5F-4995-43D4-BD2A-B5E1834F958D",
742
+ "Timestamp": "2014-03-04T20:39:01+00:00",
743
+ "Type": 0,
744
+ "children": [
745
+ {
746
+ "LogType": "Debug",
747
+ "Message": "UIAImage: rect:{{0, 64}, {320, 0}}",
748
+ "Screenshot": "A3E6FE95-FE3E-40B6-9D54-014CDAF4841F",
749
+ "Timestamp": "2014-03-04T20:39:01+00:00",
750
+ "Type": 0,
751
+ "children": [
752
+
753
+ ]
754
+ }
755
+ ]
756
+ },
757
+ {
758
+ "LogType": "Debug",
759
+ "Message": "UIAButton: name:menu rect:{{5, 26}, {44, 30}}",
760
+ "Screenshot": "BB248BA8-5CBD-42B9-869B-C7042FFBAC2A",
761
+ "Timestamp": "2014-03-04T20:39:01+00:00",
762
+ "Type": 0,
763
+ "children": [
764
+
765
+ ]
766
+ },
767
+ {
768
+ "LogType": "Debug",
769
+ "Message": "UIAButton: name:UINavigationBarBackIndicatorDefault.png rect:{{8, 32}, {12, 20}}",
770
+ "Screenshot": "F5B6A155-AE56-4460-9229-3C53F5BF8977",
771
+ "Timestamp": "2014-03-04T20:39:01+00:00",
772
+ "Type": 0,
773
+ "children": [
774
+
775
+ ]
776
+ },
777
+ {
778
+ "LogType": "Debug",
779
+ "Message": "UIAStaticText: name:Notifications value:Notifications rect:{{112, 28}, {96, 27}}",
780
+ "Screenshot": "8B3D83C2-9930-4A1E-81D2-B1638DE6D87C",
781
+ "Timestamp": "2014-03-04T20:39:01+00:00",
782
+ "Type": 0,
783
+ "children": [
784
+
785
+ ]
786
+ },
787
+ {
788
+ "LogType": "Debug",
789
+ "Message": "UIAButton: name:Compose rect:{{274, 26}, {45, 30}}",
790
+ "Screenshot": "8B839C37-B793-4B04-A262-AB111BBD001A",
791
+ "Timestamp": "2014-03-04T20:39:01+00:00",
792
+ "Type": 0,
793
+ "children": [
794
+
795
+ ]
796
+ }
797
+ ]
798
+ },
799
+ {
800
+ "LogType": "Debug",
801
+ "Message": "UIATableView: name:Inbox Table rect:{{0, 0}, {320, 568}}",
802
+ "Screenshot": "DD0F2837-147F-473F-8D1E-9B9C126AAA31",
803
+ "Timestamp": "2014-03-04T20:39:01+00:00",
804
+ "Type": 0,
805
+ "children": [
806
+ {
807
+ "LogType": "Debug",
808
+ "Message": "UIAImage: rect:{{0, 20}, {320, 44}}",
809
+ "Screenshot": "316D0409-CE88-4EEF-998D-8D9A36462621",
810
+ "Timestamp": "2014-03-04T20:39:01+00:00",
811
+ "Type": 0,
812
+ "children": [
813
+
814
+ ]
815
+ },
816
+ {
817
+ "LogType": "Debug",
818
+ "Message": "UIASearchBar: value:Search rect:{{8, 28}, {304, 28}}",
819
+ "Screenshot": "E44379B4-43B5-4840-AC77-C2A2A6C9292A",
820
+ "Timestamp": "2014-03-04T20:39:01+00:00",
821
+ "Type": 0,
822
+ "children": [
823
+
824
+ ]
825
+ }
826
+ ]
827
+ }
828
+ ]
829
+ },
830
+ {
831
+ "LogType": "Debug",
832
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
833
+ "Screenshot": "5B262F64-21F8-4D59-A34F-105EC00112AD",
834
+ "Timestamp": "2014-03-04T20:39:01+00:00",
835
+ "Type": 0,
836
+ "children": [
837
+ {
838
+ "LogType": "Debug",
839
+ "Message": "UIAStatusBar: rect:{{0, 0}, {320, 20}}",
840
+ "Screenshot": "1DE8438C-3BC5-433A-90C8-5ED317E04775",
841
+ "Timestamp": "2014-03-04T20:39:01+00:00",
842
+ "Type": 0,
843
+ "children": [
844
+ {
845
+ "LogType": "Debug",
846
+ "Message": "UIAElement: name:Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top rect:{{6, 0}, {38, 20}}",
847
+ "Screenshot": "E19A38AC-BCB8-43D9-87BD-EFE5747E70EF",
848
+ "Timestamp": "2014-03-04T20:39:01+00:00",
849
+ "Type": 0,
850
+ "children": [
851
+
852
+ ]
853
+ },
854
+ {
855
+ "LogType": "Debug",
856
+ "Message": "UIAElement: name:3 of 3 Wi-Fi bars rect:{{49, 0}, {13, 20}}",
857
+ "Screenshot": "BA4EB5FE-F6E2-4B89-8CD9-20E1AD2E110B",
858
+ "Timestamp": "2014-03-04T20:39:01+00:00",
859
+ "Type": 0,
860
+ "children": [
861
+
862
+ ]
863
+ },
864
+ {
865
+ "LogType": "Debug",
866
+ "Message": "UIAElement: name:2:39 PM rect:{{137, 0}, {47, 20}}",
867
+ "Screenshot": "1847A931-F57C-4AAB-917D-E735C892CF8F",
868
+ "Timestamp": "2014-03-04T20:39:01+00:00",
869
+ "Type": 0,
870
+ "children": [
871
+
872
+ ]
873
+ },
874
+ {
875
+ "LogType": "Debug",
876
+ "Message": "UIAElement: name:100% battery power rect:{{290, 0}, {25, 20}}",
877
+ "Screenshot": "3EE308DA-6B08-4438-9ADF-F8A8895E13AA",
878
+ "Timestamp": "2014-03-04T20:39:01+00:00",
879
+ "Type": 0,
880
+ "children": [
881
+
882
+ ]
883
+ }
884
+ ]
885
+ }
886
+ ]
887
+ },
888
+ {
889
+ "LogType": "Debug",
890
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
891
+ "Screenshot": "45E13172-2D53-474D-8C23-8B9EEB03F143",
892
+ "Timestamp": "2014-03-04T20:39:01+00:00",
893
+ "Type": 0,
894
+ "children": [
895
+
896
+ ]
897
+ }
898
+ ]
899
+ }
900
+ ]
901
+ </system-out>
902
+ <system-out>target.captureRectWithName("{origin:{x:0.00,y:0.00}, size:{height:568.00,width:320.00}}", "Clicking the send button starts the send process. We receive the notification within 10 seconds.-fail")</system-out>
903
+ <system-out>4A226AB2-F15D-4ACF-A508-9B1A1868230B</system-out>
904
+ </testcase>
905
+ <testcase name="Deleting the notification removes it from the table view" time="10.0">
906
+ <failure message="Deleting the notification removes it from the table view" type="Fail"/>
907
+ <system-out>Cannot perform action on invalid element: UIAElementNil from target.frontMostApp().mainWindow().tableViews()["Inbox Table"].cells()[0]</system-out>
908
+ <error message="VerboseError: Cannot perform action on invalid element: UIAElementNil from target.frontMostApp().mainWindow().tableViews()[&quot;Inbox Table&quot;].cells()[0]" type="Error"/>
909
+ <system-out>UIATarget: name:iPhone Simulator rect:{{0, 0}, {320, 568}}
910
+ View Dump:
911
+ [
912
+ {
913
+ "LogType": "Debug",
914
+ "Message": "UIAApplication: name:InformaCast rect:{{0, 20}, {320, 548}}",
915
+ "Screenshot": "92C27D04-2D44-4456-B984-2B9D05A494F1",
916
+ "Timestamp": "2014-03-04T20:39:11+00:00",
917
+ "Type": 0,
918
+ "children": [
919
+ {
920
+ "LogType": "Debug",
921
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
922
+ "Screenshot": "4BA18C43-9CCF-4989-B4B6-8943E807EE83",
923
+ "Timestamp": "2014-03-04T20:39:11+00:00",
924
+ "Type": 0,
925
+ "children": [
926
+ {
927
+ "LogType": "Debug",
928
+ "Message": "UIANavigationBar: name:Notifications rect:{{0, 20}, {320, 44}}",
929
+ "Screenshot": "AE38C533-0099-4A22-AFB2-5BC197BA7C60",
930
+ "Timestamp": "2014-03-04T20:39:11+00:00",
931
+ "Type": 0,
932
+ "children": [
933
+ {
934
+ "LogType": "Debug",
935
+ "Message": "UIAImage: rect:{{0, 0}, {320, 64}}",
936
+ "Screenshot": "B9C865AE-B499-43DD-A71A-E6739D0A4CEA",
937
+ "Timestamp": "2014-03-04T20:39:11+00:00",
938
+ "Type": 0,
939
+ "children": [
940
+ {
941
+ "LogType": "Debug",
942
+ "Message": "UIAImage: rect:{{0, 64}, {320, 0}}",
943
+ "Screenshot": "532D72C8-168E-4888-8767-CFB429E6EEA8",
944
+ "Timestamp": "2014-03-04T20:39:11+00:00",
945
+ "Type": 0,
946
+ "children": [
947
+
948
+ ]
949
+ }
950
+ ]
951
+ },
952
+ {
953
+ "LogType": "Debug",
954
+ "Message": "UIAButton: name:menu rect:{{5, 26}, {44, 30}}",
955
+ "Screenshot": "5A2706AA-114E-43ED-B015-5CD8D7032724",
956
+ "Timestamp": "2014-03-04T20:39:11+00:00",
957
+ "Type": 0,
958
+ "children": [
959
+
960
+ ]
961
+ },
962
+ {
963
+ "LogType": "Debug",
964
+ "Message": "UIAButton: name:UINavigationBarBackIndicatorDefault.png rect:{{8, 32}, {12, 20}}",
965
+ "Screenshot": "08B77B31-76F9-4FF2-A253-C91A23122158",
966
+ "Timestamp": "2014-03-04T20:39:11+00:00",
967
+ "Type": 0,
968
+ "children": [
969
+
970
+ ]
971
+ },
972
+ {
973
+ "LogType": "Debug",
974
+ "Message": "UIAStaticText: name:Notifications value:Notifications rect:{{112, 28}, {96, 27}}",
975
+ "Screenshot": "0FF86976-A5C6-4715-BAF5-375B921FC1BE",
976
+ "Timestamp": "2014-03-04T20:39:11+00:00",
977
+ "Type": 0,
978
+ "children": [
979
+
980
+ ]
981
+ },
982
+ {
983
+ "LogType": "Debug",
984
+ "Message": "UIAButton: name:Compose rect:{{274, 26}, {45, 30}}",
985
+ "Screenshot": "EE6BA9CC-D377-437A-9E6E-AC9516829F08",
986
+ "Timestamp": "2014-03-04T20:39:11+00:00",
987
+ "Type": 0,
988
+ "children": [
989
+
990
+ ]
991
+ }
992
+ ]
993
+ },
994
+ {
995
+ "LogType": "Debug",
996
+ "Message": "UIATableView: name:Inbox Table rect:{{0, 0}, {320, 568}}",
997
+ "Screenshot": "4FD3E04F-FEAC-4202-8710-CC5383FD052E",
998
+ "Timestamp": "2014-03-04T20:39:11+00:00",
999
+ "Type": 0,
1000
+ "children": [
1001
+ {
1002
+ "LogType": "Debug",
1003
+ "Message": "UIAImage: rect:{{0, 20}, {320, 44}}",
1004
+ "Screenshot": "861234BF-8726-4350-8768-AAB5E7CE53E0",
1005
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1006
+ "Type": 0,
1007
+ "children": [
1008
+
1009
+ ]
1010
+ },
1011
+ {
1012
+ "LogType": "Debug",
1013
+ "Message": "UIASearchBar: value:Search rect:{{8, 28}, {304, 28}}",
1014
+ "Screenshot": "E7449AA6-BE80-4AD8-B747-9A36EC9F60AA",
1015
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1016
+ "Type": 0,
1017
+ "children": [
1018
+
1019
+ ]
1020
+ }
1021
+ ]
1022
+ }
1023
+ ]
1024
+ },
1025
+ {
1026
+ "LogType": "Debug",
1027
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
1028
+ "Screenshot": "35ED98AF-BDFF-4F0D-8831-4480140312E4",
1029
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1030
+ "Type": 0,
1031
+ "children": [
1032
+ {
1033
+ "LogType": "Debug",
1034
+ "Message": "UIAStatusBar: rect:{{0, 0}, {320, 20}}",
1035
+ "Screenshot": "3FD2B46A-6705-4934-8045-E2FF4A03B1D7",
1036
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1037
+ "Type": 0,
1038
+ "children": [
1039
+ {
1040
+ "LogType": "Debug",
1041
+ "Message": "UIAElement: name:Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top rect:{{6, 0}, {38, 20}}",
1042
+ "Screenshot": "96772486-B9BA-4A42-916E-81EEF968FB0A",
1043
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1044
+ "Type": 0,
1045
+ "children": [
1046
+
1047
+ ]
1048
+ },
1049
+ {
1050
+ "LogType": "Debug",
1051
+ "Message": "UIAElement: name:3 of 3 Wi-Fi bars rect:{{49, 0}, {13, 20}}",
1052
+ "Screenshot": "F0C9ABC3-3D5D-45D7-A004-E33557613115",
1053
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1054
+ "Type": 0,
1055
+ "children": [
1056
+
1057
+ ]
1058
+ },
1059
+ {
1060
+ "LogType": "Debug",
1061
+ "Message": "UIAElement: name:2:39 PM rect:{{137, 0}, {47, 20}}",
1062
+ "Screenshot": "6E23CFA0-866B-4C2E-A6DD-3A007D867BAB",
1063
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1064
+ "Type": 0,
1065
+ "children": [
1066
+
1067
+ ]
1068
+ },
1069
+ {
1070
+ "LogType": "Debug",
1071
+ "Message": "UIAElement: name:100% battery power rect:{{290, 0}, {25, 20}}",
1072
+ "Screenshot": "2A823045-E536-44B1-A129-7316820E3E07",
1073
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1074
+ "Type": 0,
1075
+ "children": [
1076
+
1077
+ ]
1078
+ }
1079
+ ]
1080
+ }
1081
+ ]
1082
+ },
1083
+ {
1084
+ "LogType": "Debug",
1085
+ "Message": "UIAWindow: rect:{{0, 0}, {320, 568}}",
1086
+ "Screenshot": "5F5DAF4D-C417-4546-A3CF-63CC8EE2814D",
1087
+ "Timestamp": "2014-03-04T20:39:11+00:00",
1088
+ "Type": 0,
1089
+ "children": [
1090
+
1091
+ ]
1092
+ }
1093
+ ]
1094
+ }
1095
+ ]
1096
+ </system-out>
1097
+ <system-out>target.captureRectWithName("{origin:{x:0.00,y:0.00}, size:{height:568.00,width:320.00}}", "Deleting the notification removes it from the table view-fail")</system-out>
1098
+ <system-out>119716EC-B426-42CE-B90E-0A4F553254FD</system-out>
1099
+ </testcase>
1100
+ <testcase name="Clicking the menu icon shows the slide out menu with the correct details" time="0.0">
1101
+ <system-out>target.frontMostApp().navigationBar().leftButton().tap()</system-out>
1102
+ </testcase>
1103
+ <testcase name="Clicking the log out button starts the log out process" time="2.0">
1104
+ <system-out>target.frontMostApp().mainWindow().tableViews()["Menu Table"].cells()["Log Out"].tap()</system-out>
1105
+ </testcase>
1106
+ </testsuite>