soda 1.3.4 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -233,6 +233,8 @@ class Soda
233
233
  Watir::Browser.default = @params['browser']
234
234
  end
235
235
 
236
+ # sleeping here because watir has issues if a new browsers comes up
237
+ # after a firefox process is killed.
236
238
  sleep(10)
237
239
 
238
240
  if (@params['browser'] =~ /firefox/i)
@@ -815,32 +817,18 @@ class Soda
815
817
  ###############################################################################
816
818
  def RestartBrowserTest(suitename)
817
819
 
818
- # if (!@GotWatchDog)
819
- # begin
820
- # @browser.close()
821
- # sleep(1)
822
- # rescue Exception => e
823
- # end
824
- # @GotWatchDog = false
825
- # end
826
-
827
820
  RestartGlobalTime()
828
821
 
829
822
  if (@params['browser'] =~ /firefox/i)
830
- print "Calling: SodaFireFox.KillProcesses().\n"
831
823
  SodaFireFox.KillProcesses()
832
- print "Finished: Calling SodaFireFox.KillProcesses().\n"
833
824
  end
834
825
 
835
- print "Calling: NewBrowser().\n"
836
826
  err = NewBrowser()
837
827
  if (err != 0)
838
828
  print "(!)Failed to restart browser!\n"
839
829
  end
840
- print "Finished: Calling NewBrowser().\n"
841
830
 
842
831
  if (!@restart_test.empty?)
843
- print "Starting Restart Test: #{@restart_test}.\n"
844
832
  resultdir = "#{@resultsDir}/#{suitename}"
845
833
  @rep = SodaReporter.new(@restart_test, @saveHtml, resultdir,
846
834
  0, nil, false);
@@ -849,7 +837,6 @@ class Soda
849
837
  handleEvents(restart_script)
850
838
  @rep.log("Finished: Browser restart.\n")
851
839
  @rep.EndTestReport()
852
- print "Finished Restart Test.\n"
853
840
  end
854
841
 
855
842
  RestartGlobalTime()
@@ -1833,22 +1820,37 @@ class Soda
1833
1820
  def CheckJavaScriptErrors()
1834
1821
  result = nil
1835
1822
  data = nil
1823
+ error_hash = {}
1836
1824
 
1837
1825
  if (Watir::Browser.default == "firefox")
1838
1826
  result = @browser.execute_script(
1839
1827
  "#{SodaUtils::FIREFOX_JS_ERROR_CHECK_SRC}")
1840
1828
  data = result.split(/######/)
1841
1829
  data.each do |line|
1830
+ line = line.chomp()
1831
+
1842
1832
  if ( (line != "") &&
1843
1833
  (line !~ /chrome:\/\/browser\/content\/tabbrowser\.xm/) &&
1844
1834
  (line !~ /SShStarter.js/i ))
1845
- @rep.ReportJavaScriptError("Javascript Error:#{line}\n",
1846
- $skip_css_errors)
1847
-
1835
+ if (error_hash.key?(line))
1836
+ error_hash[line] += 1
1837
+ else
1838
+ error_hash[line] = 1
1839
+ end
1848
1840
  end
1849
1841
  end
1850
1842
  end
1851
1843
 
1844
+ error_hash.each do |error, count|
1845
+ if (count > 1)
1846
+ msg = "Javascript Error (repeated #{count} times):#{error}\n"
1847
+ else
1848
+ msg = "Javascript Error:#{error}\n"
1849
+ end
1850
+
1851
+ @rep.ReportJavaScriptError(msg, $skip_css_errors)
1852
+ end
1853
+
1852
1854
  return 0
1853
1855
  end
1854
1856
 
@@ -2114,7 +2116,9 @@ JSCode
2114
2116
  'link',
2115
2117
  'append',
2116
2118
  'disabled',
2117
- 'jscriptevent'
2119
+ 'jscriptevent',
2120
+ 'cssprop',
2121
+ 'cssvalue'
2118
2122
  ]
2119
2123
 
2120
2124
  if (@SIGNAL_STOP != false)
@@ -2149,6 +2153,8 @@ JSCode
2149
2153
  end
2150
2154
 
2151
2155
  case (foundaction)
2156
+ when /cssprop|cssvalue/i
2157
+ cssInfoEvent(event)
2152
2158
  when "jscriptevent"
2153
2159
  fieldType.jsevent(@curEl, js, true)
2154
2160
  js_fired = true
@@ -2325,6 +2331,59 @@ JSCode
2325
2331
 
2326
2332
  end
2327
2333
 
2334
+ ###############################################################################
2335
+ # cssInfoEvent -- method
2336
+ # This method checks that css values for a given soda element.
2337
+ #
2338
+ # Input:
2339
+ # event: A soda event.
2340
+ #
2341
+ # Output:
2342
+ # returns 0 on success or -1 on error.
2343
+ #
2344
+ ###############################################################################
2345
+ def cssInfoEvent(event)
2346
+ jssh_var = ""
2347
+ jssh_data = nil
2348
+ css_data = nil
2349
+
2350
+ if (!event.key?('cssprop'))
2351
+ @rep.ReportFailure("Missing attribte: 'cssprop' on line: "+
2352
+ "#{event[line_number]}!\n")
2353
+ return -1
2354
+ elsif (!event.key?('cssvalue'))
2355
+ @rep.ReportFailure("Missing attribte: 'cssvalue' on line: "+
2356
+ "#{event['line_number']}!\n")
2357
+ return -1
2358
+ end
2359
+
2360
+ event['cssprop'] = replaceVars(event['cssprop'])
2361
+ event['cssvalue'] = replaceVars(event['cssvalue'])
2362
+
2363
+ if (@params['browser'] =~ /firefox/i)
2364
+ css_data = SodaUtils.GetFireFoxStyle(@curEl, event['cssprop'],
2365
+ @rep, @browser)
2366
+ elsif (@params['browser'] =~ /ie/i)
2367
+ css_data = SodaUtils.GetIEStyle(@curEl, event['cssprop'], @rep)
2368
+ end
2369
+
2370
+ return -1 if (css_data == nil)
2371
+
2372
+ if (event['cssvalue'] == "#{css_data}")
2373
+ msg = "CSS property '#{event['cssprop']}' => "+
2374
+ "'#{css_data}'"
2375
+ @rep.Assert(true, msg)
2376
+ else
2377
+ msg = "CSS propery '#{event['cssprop']}' => "+
2378
+ "'#{css_data}' was expecting value: "+
2379
+ "'#{event['cssvalue']}'!"
2380
+ @rep.Assert(false, msg, @currentTestFile,
2381
+ "#{event['line_number']}")
2382
+ end
2383
+
2384
+ return 0
2385
+ end
2386
+
2328
2387
  ###############################################################################
2329
2388
  # crazyEvilIETabHack -- Method
2330
2389
  # This method make ie's tab pages act like firefox's in the since that,
@@ -72,6 +72,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
72
72
  <accessor type="string">jscriptevent</accessor>
73
73
  <accessor type="boolean">exists</accessor>
74
74
  </accessor_attributes>
75
+
76
+ <soda_attributes>
77
+ <accessor type="string">cssprop</accessor>
78
+ <accessor type="string">cssvalue</accessor>
79
+ </soda_attributes>
75
80
  </filefield>
76
81
 
77
82
  <browser>
@@ -85,7 +90,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
85
90
  <name>refresh</name>
86
91
  <name>forward</name>
87
92
  </action>
88
-
93
+ <accessor type="string">cssprop</accessor>
94
+ <accessor type="string">cssvalue</accessor>
89
95
  <accessor type="string">assertnot</accessor>
90
96
  <accessor type="string">assert</accessor>
91
97
  <accessor type="string">url</accessor>
@@ -121,6 +127,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
121
127
  <accessor type="boolean">jswait</accessor>
122
128
  <accessor type="boolean">disabled</accessor>
123
129
  <accessor type="boolean">exists</accessor>
130
+ <accessor type="string">cssprop</accessor>
131
+ <accessor type="string">cssvalue</accessor>
124
132
  </soda_attributes>
125
133
  </textfield>
126
134
 
@@ -143,6 +151,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
143
151
  <accessor type="boolean">disabled</accessor>
144
152
  <accessor type="string">jscriptevent</accessor>
145
153
  <accessor type="boolean">exists</accessor>
154
+ <accessor type="string">cssprop</accessor>
155
+ <accessor type="string">cssvalue</accessor>
146
156
  </soda_attributes>
147
157
  </textarea>
148
158
 
@@ -157,6 +167,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
157
167
  </accessor_attributes>
158
168
 
159
169
  <soda_attributes>
170
+ <accessor type="string">cssprop</accessor>
171
+ <accessor type="string">cssvalue</accessor>
160
172
  </soda_attributes>
161
173
  </h3>
162
174
 
@@ -172,6 +184,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
172
184
  </accessor_attributes>
173
185
 
174
186
  <soda_attributes>
187
+ <accessor type="string">cssprop</accessor>
188
+ <accessor type="string">cssvalue</accessor>
175
189
  </soda_attributes>
176
190
  </label>
177
191
 
@@ -198,6 +212,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
198
212
  <accessor type="boolean">jswait</accessor>
199
213
  <accessor type="string">assertPage</accessor>
200
214
  <accessor type="boolean">disabled</accessor>
215
+ <accessor type="string">cssprop</accessor>
216
+ <accessor type="string">cssvalue</accessor>
201
217
  </soda_attributes>
202
218
  </button>
203
219
 
@@ -212,6 +228,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
212
228
  </accessor_attributes>
213
229
 
214
230
  <soda_attributes>
231
+ <accessor type="string">cssprop</accessor>
232
+ <accessor type="string">cssvalue</accessor>
215
233
  </soda_attributes>
216
234
  </h4>
217
235
 
@@ -226,6 +244,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
226
244
  </accessor_attributes>
227
245
 
228
246
  <soda_attributes>
247
+ <accessor type="string">cssprop</accessor>
248
+ <accessor type="string">cssvalue</accessor>
229
249
  </soda_attributes>
230
250
  </ul>
231
251
 
@@ -244,6 +264,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
244
264
  <accessor type="string">set</accessor>
245
265
  <accessor type="string">jscriptevent</accessor>
246
266
  <accessor type="boolean">exists</accessor>
267
+ <accessor type="string">cssprop</accessor>
268
+ <accessor type="string">cssvalue</accessor>
247
269
  </soda_attributes>
248
270
  </filefield>
249
271
 
@@ -261,6 +283,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
261
283
  <soda_attributes>
262
284
  <accessor type="string">jscriptevent</accessor>
263
285
  <accessor type="boolean">exists</accessor>
286
+ <accessor type="string">cssprop</accessor>
287
+ <accessor type="string">cssvalue</accessor>
264
288
  </soda_attributes>
265
289
  </file_field>
266
290
 
@@ -277,6 +301,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
277
301
  <soda_attributes>
278
302
  <accessor type="string">assert</accessor>
279
303
  <accessor type="string">assertnot</accessor>
304
+ <accessor type="string">cssprop</accessor>
305
+ <accessor type="string">cssvalue</accessor>
280
306
  </soda_attributes>
281
307
  </h5>
282
308
 
@@ -295,6 +321,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295
321
  <accessor type="string">assertnot</accessor>
296
322
  <accessor type="string">jscriptevent</accessor>
297
323
  <accessor type="boolean">exists</accessor>
324
+ <accessor type="string">cssprop</accessor>
325
+ <accessor type="string">cssvalue</accessor>
298
326
  </soda_attributes>
299
327
  </cell>
300
328
 
@@ -313,6 +341,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
313
341
  <accessor type="string">assertnot</accessor>
314
342
  <accessor type="string">jscriptevent</accessor>
315
343
  <accessor type="boolean">exists</accessor>
344
+ <accessor type="string">cssprop</accessor>
345
+ <accessor type="string">cssvalue</accessor>
316
346
  </soda_attributes>
317
347
  </td>
318
348
 
@@ -327,6 +357,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
327
357
  </accessor_attributes>
328
358
 
329
359
  <soda_attributes>
360
+ <accessor type="string">cssprop</accessor>
361
+ <accessor type="string">cssvalue</accessor>
330
362
  </soda_attributes>
331
363
  </h6>
332
364
 
@@ -351,6 +383,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
351
383
  <accessor type="boolean">disabled</accessor>
352
384
  <accessor type="boolean">exists</accessor>
353
385
  <accessor type="string">jscriptevent</accessor>
386
+ <accessor type="string">cssprop</accessor>
387
+ <accessor type="string">cssvalue</accessor>
354
388
  </soda_attributes>
355
389
  </select>
356
390
 
@@ -371,6 +405,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
371
405
  <accessor type="boolean">disabled</accessor>
372
406
  <accessor type="string">jscriptevent</accessor>
373
407
  <accessor type="boolean">exists</accessor>
408
+ <accessor type="string">cssprop</accessor>
409
+ <accessor type="string">cssvalue</accessor>
374
410
  </soda_attributes>
375
411
  </select_list>
376
412
 
@@ -385,6 +421,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
385
421
  </accessor_attributes>
386
422
 
387
423
  <soda_attributes>
424
+ <accessor type="string">cssprop</accessor>
425
+ <accessor type="string">cssvalue</accessor>
388
426
  </soda_attributes>
389
427
  </pre>
390
428
 
@@ -402,6 +440,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
402
440
  <accessor type="string">jscriptevent</accessor>
403
441
  <accessor type="boolean">click</accessor>
404
442
  <accessor type="boolean">exists</accessor>
443
+ <accessor type="string">cssprop</accessor>
444
+ <accessor type="string">cssvalue</accessor>
405
445
  </soda_attributes>
406
446
  </row>
407
447
 
@@ -418,6 +458,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
418
458
  <soda_attributes>
419
459
  <accessor type="string">jscriptevent</accessor>
420
460
  <accessor type="boolean">exists</accessor>
461
+ <accessor type="string">cssprop</accessor>
462
+ <accessor type="string">cssvalue</accessor>
421
463
  </soda_attributes>
422
464
  </tr>
423
465
 
@@ -437,6 +479,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
437
479
  <accessor type="string">jscriptevent</accessor>
438
480
  <accessor type="boolean">click</accessor>
439
481
  <accessor type="boolean">exists</accessor>
482
+ <accessor type="string">cssprop</accessor>
483
+ <accessor type="string">cssvalue</accessor>
440
484
  </soda_attributes>
441
485
  </table>
442
486
 
@@ -457,6 +501,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
457
501
  <accessor type="boolean">disabled</accessor>
458
502
  <accessor type="string">jscriptevent</accessor>
459
503
  <accessor type="boolean">exists</accessor>
504
+ <accessor type="string">cssprop</accessor>
505
+ <accessor type="string">cssvalue</accessor>
460
506
  </soda_attributes>
461
507
  </radio>
462
508
 
@@ -471,6 +517,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
471
517
  </accessor_attributes>
472
518
 
473
519
  <soda_attributes>
520
+ <accessor type="string">cssprop</accessor>
521
+ <accessor type="string">cssvalue</accessor>
474
522
  </soda_attributes>
475
523
  </p>
476
524
 
@@ -496,6 +544,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
496
544
  <accessor type="boolean">assertPage</accessor>
497
545
  <accessor type="string">jscriptevent</accessor>
498
546
  <accessor type="boolean">exists</accessor>
547
+ <accessor type="string">cssprop</accessor>
548
+ <accessor type="string">cssvalue</accessor>
499
549
  </soda_attributes>
500
550
  </checkbox>
501
551
 
@@ -513,6 +563,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
513
563
  <soda_attributes>
514
564
  <accessor type="string">jscriptevent</accessor>
515
565
  <accessor type="boolean">exists</accessor>
566
+ <accessor type="string">cssprop</accessor>
567
+ <accessor type="string">cssvalue</accessor>
516
568
  </soda_attributes>
517
569
  </map>
518
570
 
@@ -529,6 +581,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
529
581
  <soda_attributes>
530
582
  <accessor type="string">jscriptevent</accessor>
531
583
  <accessor type="boolean">exists</accessor>
584
+ <accessor type="string">cssprop</accessor>
585
+ <accessor type="string">cssvalue</accessor>
532
586
  </soda_attributes>
533
587
  </frame>
534
588
 
@@ -547,6 +601,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
547
601
  <accessor type="boolean">exist</accessor>
548
602
  <accessor type="string">jscriptevent</accessor>
549
603
  <accessor type="boolean">exists</accessor>
604
+ <accessor type="string">cssprop</accessor>
605
+ <accessor type="string">cssvalue</accessor>
550
606
  </soda_attributes>
551
607
  </form>
552
608
 
@@ -567,6 +623,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
567
623
  <accessor type="string">assertnot</accessor>
568
624
  <accessor type="string">jscriptevent</accessor>
569
625
  <accessor type="boolean">exists</accessor>
626
+ <accessor type="string">cssprop</accessor>
627
+ <accessor type="string">cssvalue</accessor>
570
628
  </soda_attributes>
571
629
  </div>
572
630
 
@@ -583,6 +641,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
583
641
  <soda_attributes>
584
642
  <accessor type="string">jscriptevent</accessor>
585
643
  <accessor type="boolean">exists</accessor>
644
+ <accessor type="string">cssprop</accessor>
645
+ <accessor type="string">cssvalue</accessor>
586
646
  </soda_attributes>
587
647
  </area>
588
648
 
@@ -600,6 +660,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
600
660
  <accessor type="boolean">click</accessor>
601
661
  <accessor type="string">jscriptevent</accessor>
602
662
  <accessor type="boolean">exists</accessor>
663
+ <accessor type="string">cssprop</accessor>
664
+ <accessor type="string">cssvalue</accessor>
603
665
  </soda_attributes>
604
666
  </li>
605
667
 
@@ -625,6 +687,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
625
687
  <accessor type="boolean">jswait</accessor>
626
688
  <accessor type="boolean">assertPage</accessor>
627
689
  <accessor type="boolean">disabled</accessor>
690
+ <accessor type="string">cssprop</accessor>
691
+ <accessor type="string">cssvalue</accessor>
628
692
  </soda_attributes>
629
693
  </link>
630
694
 
@@ -639,6 +703,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
639
703
  </accessor_attributes>
640
704
 
641
705
  <soda_attributes>
706
+ <accessor type="string">cssprop</accessor>
707
+ <accessor type="string">cssvalue</accessor>
642
708
  </soda_attributes>
643
709
  </h1>
644
710
 
@@ -660,6 +726,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
660
726
  <accessor type="string">jscriptevent</accessor>
661
727
  <accessor type="boolean">exists</accessor>
662
728
  <accessor type="boolean">alert</accessor>
729
+ <accessor type="string">cssprop</accessor>
730
+ <accessor type="string">cssvalue</accessor>
663
731
  </soda_attributes>
664
732
  </image>
665
733
 
@@ -675,6 +743,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
675
743
 
676
744
  <soda_attributes>
677
745
  <accessor type="boolean">click</accessor>
746
+ <accessor type="string">cssprop</accessor>
747
+ <accessor type="string">cssvalue</accessor>
678
748
  </soda_attributes>
679
749
  </h2>
680
750
 
@@ -693,6 +763,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
693
763
  <accessor type="boolean">disabled</accessor>
694
764
  <accessor type="string">jscriptevent</accessor>
695
765
  <accessor type="boolean">exists</accessor>
766
+ <accessor type="string">cssprop</accessor>
767
+ <accessor type="string">cssvalue</accessor>
696
768
  </soda_attributes>
697
769
  </text_field>
698
770
 
@@ -714,6 +786,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
714
786
  <accessor type="string">jscriptevent</accessor>
715
787
  <accessor type="boolean">jswait</accessor>
716
788
  <accessor type="boolean">exists</accessor>
789
+ <accessor type="string">cssprop</accessor>
790
+ <accessor type="string">cssvalue</accessor>
717
791
  </soda_attributes>
718
792
  </span>
719
793
 
@@ -732,6 +806,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
732
806
  <soda_attributes>
733
807
  <accessor type="string">var</accessor>
734
808
  <accessor type="boolean">exists</accessor>
809
+ <accessor type="string">cssprop</accessor>
810
+ <accessor type="string">cssvalue</accessor>
735
811
  </soda_attributes>
736
812
  </hidden>
737
813
 
@@ -70,7 +70,6 @@ def SodaFireFox.CreateFireFoxBrowser(options = nil)
70
70
  result['exception'] = e
71
71
  result['browser'] = nil
72
72
  ensure
73
-
74
73
  end
75
74
 
76
75
  return result
@@ -133,17 +132,12 @@ def SodaFireFox.KillProcessWindows()
133
132
  tmp = nil
134
133
  result = 0
135
134
 
136
- print "Calling: Kernel.open(| tasklist /NH).\n"
137
135
  tmp = Kernel.open("| tasklist /NH")
138
- print "Readling Lines...\n"
139
136
  lines = tmp.readlines()
140
- print "Lines Read.\n"
141
137
  tmp.close()
142
- print "Closing process IO handle.\n"
143
138
 
144
139
  lines.each do |l|
145
140
  l = l.chomp()
146
- print "Process Line: '#{l}'\n"
147
141
  if (l =~ /firefox/i)
148
142
  hash = {
149
143
  'pid' => nil,
@@ -157,21 +151,22 @@ def SodaFireFox.KillProcessWindows()
157
151
  end
158
152
 
159
153
  len = firefox.length()
160
- print "Processes found length: #{len}\n"
161
-
162
154
  if (firefox.length < 1)
163
155
  print "(*)No firefox processes to kill, browser closed clean.\n"
164
156
  end
165
157
 
166
158
  firefox.each do |hash|
167
159
  begin
160
+ res = false
168
161
  print "Killing Process ID: #{hash['pid']}, Name:"+
169
162
  "#{hash['name']}\n"
170
163
  cmd = "taskkill /F /T /PID #{hash['pid']}"
171
- print "Calling Command: '#{cmd}'\n"
172
164
  res = Kernel.system(cmd)
173
- print "Commnd Result: #{res}\n"
174
- print "Console Results: #{$?}\n"
165
+
166
+ if (res =! true)
167
+ print "Failed calling command: #{cmd}!\n"
168
+ result = -1
169
+ end
175
170
  rescue Exception => e
176
171
  print "(!)Exception : #{e.message}\n"
177
172
  result = -1
@@ -737,7 +737,7 @@ HTML
737
737
  row_data = FormatEventDump(line)
738
738
  when /major\sexception/i
739
739
  row_data = FormatMajorException(line)
740
- when /javascript\s+error:/i
740
+ when /javascript\s+error:|javascript\s+error\s+\(repeated/i
741
741
  row_data = FormatJSError(line)
742
742
  when /css\s+error:/i
743
743
  row_data = FormatJSError(line)
@@ -874,6 +874,225 @@ JAVA
874
874
  return result
875
875
  end
876
876
 
877
+ ###############################################################################
878
+ # GetJsshVar -- function
879
+ # This function is a total hack to get an the watirobj's instance var
880
+ # @element_name which holds the internal jssh var names for accessing
881
+ # the wair object in jssh. This is needed bcause the firewatir style
882
+ # merhod isn't working. So I cause an internal class error which I
883
+ # then parse to get the needed var name.
884
+ #
885
+ # Input:
886
+ # watirobj: This is the watir object which you want to get the jssh var of.
887
+ #
888
+ # Output:
889
+ # Returns a string with the jssh var name.
890
+ #
891
+ ###############################################################################
892
+ def SodaUtils.GetJsshVar(watirobj)
893
+ err = ""
894
+
895
+ err = watirobj.class_eval(%q{@element_name})
896
+ err = err.gsub(/^typeerror:\s+/i, "")
897
+ err = err.gsub(/\.\D+/, "")
898
+
899
+ return err
900
+ end
901
+
902
+ ###############################################################################
903
+ # GetJsshStyle -- function
904
+ # This function gets the style information from from a watir object using
905
+ # jssh.
906
+ #
907
+ # Input:
908
+ # jssh_var: This is the internal firewatir jssh var used to access the
909
+ # watir object. This is returned from calling the GetJsshVar function.
910
+ #
911
+ # Output:
912
+ # Returns a hash with all of the style info, or an empty hash if there is
913
+ # no information to get.
914
+ #
915
+ ###############################################################################
916
+ def SodaUtils.GetJsshStyle(jssh_var, browser)
917
+ hash = {}
918
+
919
+ java = <<JS
920
+ var style = #{jssh_var}.style;
921
+ var data = "";
922
+ var len = style.length -1;
923
+
924
+ for (var i = 0; i <= len; i++) {
925
+ var name = style[i];
926
+ var value = style.getPropertyValue(name);
927
+ var splitter = "---";
928
+
929
+ if (i == 0) {
930
+ splitter = ""
931
+ }
932
+
933
+ data = data + splitter + name + "=>" + value;
934
+ }
935
+
936
+ if (data.length < 1) {
937
+ data = "null";
938
+ }
939
+
940
+ print(data)
941
+ JS
942
+
943
+ out = browser.execute_script(java)
944
+ if (out != "null")
945
+ data = out.split("---")
946
+ data.each do |item|
947
+ tmp = item.split("=>")
948
+ hash[tmp[0]] = tmp[1]
949
+ end
950
+ end
951
+
952
+ return hash
953
+ end
954
+
955
+
956
+ ###############################################################################
957
+ # GetIEStyle -- function
958
+ # This function get a style property from a watir object in IE.
959
+ #
960
+ # Intput:
961
+ # watirobj: The IE watir object.
962
+ # css_prop: The property name to get the info for.
963
+ # reportobj: The soda reporter object.
964
+ #
965
+ # Output:
966
+ # returns nil on error or a string on success.
967
+ #
968
+ ###############################################################################
969
+ def SodaUtils.GetIEStyle(watirobj, css_prop, reportobj)
970
+ err = nil
971
+ prop_data = nil
972
+ new_prop = ""
973
+ len = 0
974
+
975
+ # because the IE access functions do not use the same names as the
976
+ # standard css property names, we need con convert the names into
977
+ # IE's ole friendly method name.
978
+ prop_data = css_prop.split("-")
979
+ len = prop_data.length() -1
980
+ if (len > 0)
981
+ i = 1
982
+ for i in i..len do
983
+ prop_data[i].capitalize!
984
+ end
985
+
986
+ prop_data.each do |d|
987
+ new_prop << "#{d}"
988
+ end
989
+ else
990
+ new_prop = css_prop
991
+ end
992
+
993
+ begin
994
+ err = eval("watirobj.style.#{new_prop}")
995
+ rescue Exception => e
996
+ err = nil
997
+ reportobj.ReportFailure("Failed to find any CSS data for"+
998
+ " property: '#{new_prop}'!\n")
999
+ end
1000
+
1001
+ return err
1002
+ end
1003
+
1004
+ ###############################################################################
1005
+ # GetFireFoxStyle -- function
1006
+ # This function get a style property from a watir object in firefox.
1007
+ #
1008
+ # Intput:
1009
+ # watirobj: The IE watir object.
1010
+ # css_prop: The property name to get the info for.
1011
+ # reportobj: The soda reporter object.
1012
+ # browser: The currenlt Watir::Browser object.
1013
+ #
1014
+ # Output:
1015
+ # returns nil on error or a string on success.
1016
+ #
1017
+ ###############################################################################
1018
+ def SodaUtils.GetFireFoxStyle(watirobj, css_prop, reportobj, browser)
1019
+ jssh_var = ""
1020
+ jssh_data = nil
1021
+ result = nil
1022
+
1023
+ jssh_var = SodaUtils.GetJsshVar(watirobj)
1024
+ if (jssh_var.empty?)
1025
+ reportobj.ReportFailure("Failed to find needed jssh var!\n")
1026
+ e_dump = SodaUtils.DumpEvent(event)
1027
+ reportobj.log("Event Dump for empty jssh var: #{e_dump}!\n",
1028
+ SodaUtils::EVENT)
1029
+ return nil
1030
+ else
1031
+ reportobj.log("Found internal jssh var: '#{jssh_var}'.\n")
1032
+ end
1033
+
1034
+ jssh_data = SodaUtils.GetJsshStyle(jssh_var, browser)
1035
+
1036
+ if (jssh_data.empty?)
1037
+ reportobj.ReportFailure("Failed to find any CSS data for"+
1038
+ " property: '#{css_prop}'!\n")
1039
+ e_dump = SodaUtils.DumpEvent(event)
1040
+ reportobj.log("Event Dump for empty CSS data: #{e_dump}!\n",
1041
+ SodaUtils::EVENT)
1042
+ return nil
1043
+ end
1044
+
1045
+ if (!jssh_data.key?("#{css_prop}"))
1046
+ reportobj.ReportFailure("Failed to find CSS key: '#{css_prop}'"+
1047
+ " for element!\n")
1048
+ e_dump = SodaUtils.DumpEvent(event)
1049
+ reportobj.log("Event Dump for missing CSS key: #{e_dump}!\n",
1050
+ SodaUtils::EVENT)
1051
+ return nil
1052
+ else
1053
+ result = jssh_data[css_prop]
1054
+ end
1055
+
1056
+ return result
1057
+ end
1058
+
1059
+ ###############################################################################
1060
+ # cssInfoEvent -- method
1061
+ # This method checks that css values for a given soda element.
1062
+ #
1063
+ # Input:
1064
+ # event: A soda event.
1065
+ # watirobj: The watir element object.
1066
+ # browser: The watir browser object.
1067
+ # reportobj: The current sodareporter object.
1068
+ #
1069
+ # Output:
1070
+ # returns 0 on success or -1 on error.
1071
+ #
1072
+ ###############################################################################
1073
+ def SodaUtils.GetStyleInfo(event, watirobj, browser, reportobj)
1074
+
1075
+ if (!event.key?('cssprop'))
1076
+ reportobj.ReportFailure("Missing attribte: 'cssprop' on line: "+
1077
+ "#{event[line_number]}!\n")
1078
+ return -1
1079
+ elsif (!event.key?('cssvalue'))
1080
+ reportobj.ReportFailure("Missing attribte: 'cssvalue' on line: "+
1081
+ "#{event['line_number']}!\n")
1082
+ return -1
1083
+ end
1084
+
1085
+ if (@params['browser'] !~ /firefox/i)
1086
+ @reportobj.log("Currently this function is only supported on firefox!",
1087
+ SodaUtils::WARN)
1088
+ return -1
1089
+ end
1090
+
1091
+ event['cssprop'] = replaceVars(event['cssprop'])
1092
+ event['cssvalue'] = replaceVars(event['cssvalue'])
1093
+
1094
+ return 0
1095
+ end
877
1096
 
878
1097
  ###############################################################################
879
1098
  ###############################################################################
@@ -1,4 +1,4 @@
1
1
  require 'Soda'
2
2
 
3
- SODA_GEM_VERSION = "1.3.4"
3
+ SODA_GEM_VERSION = "1.3.5"
4
4
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soda
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 4
10
- version: 1.3.4
9
+ - 5
10
+ version: 1.3.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Trampus Richmond
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-28 00:00:00 -07:00
18
+ date: 2011-03-31 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency