soda 1.3.4 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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