soda 1.4.2 → 1.4.3
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.
- data/lib/Soda.rb +6 -30
- data/lib/SodaElements.xml +8 -1
- data/lib/SodaUtils.rb +64 -67
- data/lib/sodainfo.rb +1 -1
- metadata +4 -4
data/lib/Soda.rb
CHANGED
@@ -1873,39 +1873,15 @@ class Soda
|
|
1873
1873
|
result = nil
|
1874
1874
|
|
1875
1875
|
if (event['content'].length > 0)
|
1876
|
-
|
1877
|
-
|
1878
|
-
# (injection) requires firebug, for now.
|
1879
|
-
toExec = "";
|
1880
|
-
if (event.key?('addUtils') && (getStringBool(event['addUtils'])))
|
1881
|
-
event['content'] = SodaUtils::getSodaJS() + event['content'];
|
1882
|
-
end
|
1883
|
-
|
1884
|
-
escapedContent = event['content'].gsub(/\\/, '\\').gsub(/"/, '\"');
|
1885
|
-
|
1886
|
-
toExec = <<JSCode
|
1887
|
-
if (typeof window.Firebug != "undefined") {
|
1888
|
-
window.TabWatcher.watchBrowser(window.FirebugChrome.getCurrentBrowser());
|
1889
|
-
window.Firebug.minimizeBar();
|
1890
|
-
window.Firebug.CommandLine.evaluateInWebPage("#{escapedContent}", browser.contentDocument.defaultView);
|
1891
|
-
window.Firebug.closeFirebug();
|
1892
|
-
}
|
1893
|
-
JSCode
|
1894
|
-
|
1895
|
-
result = @browser.execute_script(toExec)
|
1896
|
-
else
|
1897
|
-
escapedContent = event['content'].gsub(/\\/, '\\').gsub(/"/, '\"')
|
1898
|
-
toExec = 'browser.document.parentWindow.execScript("' + escapedContent + '")'
|
1899
|
-
result = @browser.execute_script(event['content'])
|
1900
|
-
end
|
1901
|
-
result = result.to_s()
|
1902
|
-
PrintDebug("JavaScript Results: \"#{result}\"\n")
|
1876
|
+
addUtils = event.key?('addUtils') && (getStringBool(event['addUtils']))
|
1877
|
+
result = SodaUtils.execute_script(event['content'], addUtils, @browser, @rep)
|
1903
1878
|
else
|
1904
1879
|
@rep.log("No javascript source content found!", SodaUtils::ERROR)
|
1905
1880
|
return -1
|
1906
1881
|
end
|
1907
1882
|
|
1908
1883
|
CheckJavaScriptErrors()
|
1884
|
+
return result;
|
1909
1885
|
end
|
1910
1886
|
|
1911
1887
|
###############################################################################
|
@@ -2638,7 +2614,7 @@ JSCode
|
|
2638
2614
|
e_dump = SodaUtils.DumpEvent(event)
|
2639
2615
|
@rep.log("No Element found for event!\n",
|
2640
2616
|
SodaUtils::ERROR)
|
2641
|
-
@rep.log("Event Dump for unfound element: #{e_dump}!\n",
|
2617
|
+
@rep.log("Event Dump for unfound element: #{e_dump}!\n",
|
2642
2618
|
SodaUtils::EVENT)
|
2643
2619
|
end
|
2644
2620
|
else
|
@@ -2950,7 +2926,7 @@ JSCode
|
|
2950
2926
|
result = {}
|
2951
2927
|
tests = []
|
2952
2928
|
suite_name = File.basename(suitefile, ".xml")
|
2953
|
-
|
2929
|
+
|
2954
2930
|
print "Running Suite: #{suitefile}\n"
|
2955
2931
|
|
2956
2932
|
begin
|
@@ -2982,7 +2958,7 @@ JSCode
|
|
2982
2958
|
end
|
2983
2959
|
end
|
2984
2960
|
end
|
2985
|
-
|
2961
|
+
|
2986
2962
|
fd.close()
|
2987
2963
|
rescue Exception => e
|
2988
2964
|
SodaUtils.PrintSoda(e.message, SodaUtils::ERROR)
|
data/lib/SodaElements.xml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<soda>
|
1
|
+
<soda>
|
2
2
|
<!--
|
3
3
|
Copyright (c) 2010, SugarCRM, Inc.
|
4
4
|
All rights reserved.
|
@@ -59,6 +59,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
59
59
|
</accessor_attributes>
|
60
60
|
</wait>
|
61
61
|
|
62
|
+
<sugarwait>
|
63
|
+
<accessor_attributes>
|
64
|
+
<accessor type="integer">timeout</accessor>
|
65
|
+
<accessor type="string">condition</accessor>
|
66
|
+
</accessor_attributes>
|
67
|
+
</sugarwait>
|
68
|
+
|
62
69
|
<puts>
|
63
70
|
<accessor_attributes>
|
64
71
|
<accessor type="string">text</accessor>
|
data/lib/SodaUtils.rb
CHANGED
@@ -748,65 +748,26 @@ def SodaUtils.IEConvertHref(event, url)
|
|
748
748
|
end
|
749
749
|
|
750
750
|
###############################################################################
|
751
|
-
#
|
752
|
-
#
|
753
|
-
# actions.
|
751
|
+
# execute_script -- function
|
752
|
+
# Executes given javascript in the browser
|
754
753
|
#
|
755
754
|
# Input:
|
755
|
+
# script: javascript string to be executed
|
756
756
|
# browser: This is a watir browser object.
|
757
757
|
# reportobj: This is an active SodaReporter object.
|
758
758
|
#
|
759
759
|
# Returns:
|
760
|
-
# -1 on error else
|
761
|
-
#
|
762
|
-
# Notes:
|
763
|
-
# I had to split up how Windows OS finds the windows, because Watir's
|
764
|
-
# browser.url() method returns '' every time if there are more then
|
765
|
-
# one window open. This is not the cause it Linux, as linux seems to
|
766
|
-
# know what the current active browser is and returns the expected url.
|
760
|
+
# -1 on error else the javascript result.
|
767
761
|
#
|
768
762
|
###############################################################################
|
769
|
-
def SodaUtils.
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
t2 = nil
|
778
|
-
|
779
|
-
os = GetOsType()
|
780
|
-
|
781
|
-
linux_js = <<JAVA
|
782
|
-
var windows = getWindows();
|
783
|
-
var win_count = windows.length -1;
|
784
|
-
var current_browser_id = -1;
|
785
|
-
var result = "undefined";
|
786
|
-
|
787
|
-
for (var i = 0; i <= win_count; i++) {
|
788
|
-
var tmp_win = windows[i];
|
789
|
-
var tmp_url = tmp_win.getBrowser().contentDocument.URL;
|
790
|
-
|
791
|
-
if (tmp_url == "#{url}") {
|
792
|
-
current_browser_id = i;
|
793
|
-
break;
|
794
|
-
}
|
795
|
-
}
|
796
|
-
JAVA
|
797
|
-
|
798
|
-
other_js = <<JAVA
|
799
|
-
var current_browser_id = 0;
|
800
|
-
JAVA
|
801
|
-
|
802
|
-
if (os =~ /linux/i)
|
803
|
-
js = "#{linux_js}\n"
|
804
|
-
else
|
805
|
-
js = "#{other_js}\n"
|
806
|
-
end
|
807
|
-
|
808
|
-
js += <<JAVA
|
809
|
-
current_browser_id = 0;
|
763
|
+
def SodaUtils.execute_script(script, addUtils, browser, rep)
|
764
|
+
result = nil
|
765
|
+
|
766
|
+
if (script.length > 0)
|
767
|
+
script = script.gsub(/[\n\r]/, "")
|
768
|
+
escapedContent = script.gsub(/\\/, '\\').gsub(/"/, '\"')
|
769
|
+
js = <<JSCode
|
770
|
+
current_browser_id = 0;
|
810
771
|
if (current_browser_id > -1) {
|
811
772
|
var target = getWindows()[current_browser_id];
|
812
773
|
var browser = target.getBrowser();
|
@@ -819,31 +780,67 @@ if (current_browser_id > -1) {
|
|
819
780
|
if (tmp != null) {
|
820
781
|
doc.body.removeChild(tmp);
|
821
782
|
}
|
822
|
-
|
823
|
-
d.setAttribute("id", "Sodahack");
|
824
|
-
var src = "if (typeof SUGAR == 'undefined') {\n";
|
825
|
-
src += " document.soda_sugar_done = 'undefined';\n";
|
826
|
-
src += "} else {\n";
|
827
|
-
src += " document.soda_sugar_done = SUGAR.util.ajaxCallInProgress();\n";
|
828
|
-
src += "}";
|
829
783
|
|
784
|
+
d.setAttribute("id", "Sodahack");
|
785
|
+
var src = "document.soda_js_result = (function(){#{escapedContent}})()";
|
830
786
|
d.innerHTML = src;
|
831
787
|
doc.body.appendChild(d);
|
832
|
-
print(doc.
|
833
|
-
result = doc.
|
788
|
+
print(doc.soda_js_result);
|
789
|
+
result = doc.soda_js_result;
|
834
790
|
} else {
|
835
|
-
result = "
|
791
|
+
result = "No Browser to use";
|
836
792
|
}
|
837
|
-
|
838
793
|
print(result);
|
839
|
-
|
794
|
+
JSCode
|
795
|
+
|
796
|
+
#Now actually execute the js in the browser
|
797
|
+
result = browser.js_eval(js)
|
798
|
+
result = result.chomp()
|
799
|
+
else
|
800
|
+
result = "No script passed"
|
801
|
+
end
|
802
|
+
|
803
|
+
return result
|
804
|
+
end
|
805
|
+
|
806
|
+
|
807
|
+
|
808
|
+
|
809
|
+
###############################################################################
|
810
|
+
# WaitSugarAjaxDone -- function
|
811
|
+
# This function waits to make sure that sugar has finished all ajax
|
812
|
+
# actions.
|
813
|
+
#
|
814
|
+
# Input:
|
815
|
+
# browser: This is a watir browser object.
|
816
|
+
# reportobj: This is an active SodaReporter object.
|
817
|
+
#
|
818
|
+
# Returns:
|
819
|
+
# -1 on error else 0.
|
820
|
+
#
|
821
|
+
# Notes:
|
822
|
+
# I had to split up how Windows OS finds the windows, because Watir's
|
823
|
+
# browser.url() method returns '' every time if there are more then
|
824
|
+
# one window open. This is not the cause it Linux, as linux seems to
|
825
|
+
# know what the current active browser is and returns the expected url.
|
826
|
+
#
|
827
|
+
###############################################################################
|
828
|
+
def SodaUtils.WaitSugarAjaxDone(browser, reportobj)
|
829
|
+
done = false
|
830
|
+
result = 0
|
831
|
+
undef_count = 0
|
832
|
+
url = browser.url()
|
833
|
+
os = ""
|
834
|
+
str_res = ""
|
835
|
+
t1 = nil
|
836
|
+
t2 = nil
|
840
837
|
|
838
|
+
js = "if(SUGAR && SUGAR.util && !SUGAR.util.ajaxCallInProgress()) return 'true'; else return 'false';"
|
841
839
|
reportobj.log("Calling: SugarWait.\n")
|
842
840
|
t1 = Time.now()
|
843
841
|
|
844
|
-
for i in 0..
|
845
|
-
tmp =
|
846
|
-
tmp = tmp.chomp()
|
842
|
+
for i in 0..60
|
843
|
+
tmp = SodaUtils.execute_script(js, false, browser, reportobj)
|
847
844
|
|
848
845
|
case (tmp)
|
849
846
|
when /false/i
|
@@ -861,7 +858,7 @@ JAVA
|
|
861
858
|
SodaUtils::WARN)
|
862
859
|
end
|
863
860
|
|
864
|
-
if (tmp ==
|
861
|
+
if (tmp == true)
|
865
862
|
done = true
|
866
863
|
break
|
867
864
|
end
|
data/lib/sodainfo.rb
CHANGED
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:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 3
|
10
|
+
version: 1.4.3
|
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-05-
|
18
|
+
date: 2011-05-25 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: firewatir
|