bauxite 0.6.18 → 0.6.19
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.
- checksums.yaml +4 -4
- data/LICENSE +21 -21
- data/README.md +293 -293
- data/Rakefile +128 -128
- data/bin/bauxite +27 -27
- data/doc/Bauxite.html +6 -9
- data/doc/Bauxite/Action.html +298 -315
- data/doc/Bauxite/ActionModule.html +23 -26
- data/doc/Bauxite/Application.html +36 -38
- data/doc/Bauxite/Context.html +303 -303
- data/doc/Bauxite/Errors.html +6 -9
- data/doc/Bauxite/Errors/AssertionError.html +6 -9
- data/doc/Bauxite/Errors/FileNotFoundError.html +6 -9
- data/doc/Bauxite/Errors/FormatError.html +6 -9
- data/doc/Bauxite/Loggers.html +6 -9
- data/doc/Bauxite/Loggers/CompositeLogger.html +29 -32
- data/doc/Bauxite/Loggers/EchoLogger.html +10 -13
- data/doc/Bauxite/Loggers/FileLogger.html +25 -28
- data/doc/Bauxite/Loggers/HtmlLogger.html +99 -102
- data/doc/Bauxite/Loggers/NullLogger.html +16 -19
- data/doc/Bauxite/Loggers/ReportLogger.html +43 -46
- data/doc/Bauxite/Loggers/TerminalLogger.html +76 -79
- data/doc/Bauxite/Loggers/XtermLogger.html +28 -31
- data/doc/Bauxite/Parser.html +87 -89
- data/doc/Bauxite/ParserModule.html +19 -22
- data/doc/Bauxite/Selector.html +99 -105
- data/doc/Bauxite/SelectorModule.html +27 -30
- data/doc/README_md.html +117 -103
- data/doc/created.rid +58 -58
- data/doc/fonts.css +167 -167
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +117 -103
- data/doc/js/darkfish.js +32 -11
- data/doc/js/jquery.js +0 -0
- data/doc/js/navigation.js +0 -0
- data/doc/js/search.js +0 -0
- data/doc/js/search_index.js +1 -1
- data/doc/js/searcher.js +0 -0
- data/doc/rdoc.css +580 -580
- data/doc/table_of_contents.html +69 -72
- data/lib/bauxite.rb +28 -28
- data/lib/bauxite/actions/alias.rb +51 -51
- data/lib/bauxite/actions/assert.rb +49 -49
- data/lib/bauxite/actions/asserth.rb +60 -60
- data/lib/bauxite/actions/assertm.rb +49 -49
- data/lib/bauxite/actions/assertv.rb +40 -40
- data/lib/bauxite/actions/assertw.rb +47 -47
- data/lib/bauxite/actions/break.rb +39 -39
- data/lib/bauxite/actions/capture.rb +61 -61
- data/lib/bauxite/actions/click.rb +36 -36
- data/lib/bauxite/actions/debug.rb +103 -103
- data/lib/bauxite/actions/doif.rb +43 -43
- data/lib/bauxite/actions/dounless.rb +43 -43
- data/lib/bauxite/actions/echo.rb +36 -36
- data/lib/bauxite/actions/exec.rb +46 -46
- data/lib/bauxite/actions/exit.rb +35 -35
- data/lib/bauxite/actions/failif.rb +52 -52
- data/lib/bauxite/actions/js.rb +41 -41
- data/lib/bauxite/actions/load.rb +49 -49
- data/lib/bauxite/actions/open.rb +35 -35
- data/lib/bauxite/actions/params.rb +40 -40
- data/lib/bauxite/actions/replace.rb +37 -37
- data/lib/bauxite/actions/reset.rb +38 -38
- data/lib/bauxite/actions/return.rb +68 -68
- data/lib/bauxite/actions/ruby.rb +58 -58
- data/lib/bauxite/actions/select.rb +48 -48
- data/lib/bauxite/actions/set.rb +39 -39
- data/lib/bauxite/actions/setif.rb +44 -44
- data/lib/bauxite/actions/source.rb +44 -44
- data/lib/bauxite/actions/store.rb +38 -38
- data/lib/bauxite/actions/submit.rb +37 -37
- data/lib/bauxite/actions/test.rb +67 -67
- data/lib/bauxite/actions/tryload.rb +71 -71
- data/lib/bauxite/actions/wait.rb +38 -38
- data/lib/bauxite/actions/write.rb +44 -44
- data/lib/bauxite/application.rb +349 -349
- data/lib/bauxite/core/action.rb +199 -199
- data/lib/bauxite/core/context.rb +791 -791
- data/lib/bauxite/core/errors.rb +41 -41
- data/lib/bauxite/core/logger.rb +169 -169
- data/lib/bauxite/core/parser.rb +85 -85
- data/lib/bauxite/core/selector.rb +152 -152
- data/lib/bauxite/loggers/composite.rb +91 -91
- data/lib/bauxite/loggers/echo.rb +36 -36
- data/lib/bauxite/loggers/file.rb +68 -68
- data/lib/bauxite/loggers/html.rb +154 -154
- data/lib/bauxite/loggers/terminal.rb +134 -134
- data/lib/bauxite/loggers/xterm.rb +101 -101
- data/lib/bauxite/parsers/csv.rb +43 -43
- data/lib/bauxite/parsers/default.rb +42 -42
- data/lib/bauxite/parsers/html.rb +79 -79
- data/lib/bauxite/selectors/attr.rb +39 -39
- data/lib/bauxite/selectors/frame.rb +60 -60
- data/lib/bauxite/selectors/json.rb +88 -88
- data/lib/bauxite/selectors/sid.rb +38 -38
- data/lib/bauxite/selectors/smart.rb +80 -80
- data/lib/bauxite/selectors/window.rb +77 -77
- data/test/alert.bxt +3 -3
- data/test/alert/page.html +4 -4
- data/test/alias.bxt +9 -9
- data/test/asserth.bxt +2 -2
- data/test/assertv.bxt +1 -1
- data/test/assertw.bxt +7 -7
- data/test/broken.bxt.manual +0 -0
- data/test/bug_load_path.bxt.manual +0 -0
- data/test/bug_load_path/broken.bxt.manual +0 -0
- data/test/bug_load_path/test.bxt +0 -0
- data/test/capture.bxt.manual +20 -20
- data/test/capture/my_test.bxt +1 -1
- data/test/capture/page.html +6 -6
- data/test/capture_on_error.bxt.manual +3 -3
- data/test/capture_on_error/my_test.bxt +1 -1
- data/test/capture_on_error/page.html +2 -2
- data/test/debug.bxt.manual +0 -0
- data/test/default_selector.bxt.manual +7 -7
- data/test/default_selector/page.html +10 -10
- data/test/default_selector_var.bxt +1 -1
- data/test/delay.bxt +2 -2
- data/test/delay/page.html +4 -4
- data/test/doif.bxt +6 -6
- data/test/dounless.bxt +6 -6
- data/test/exec.bxt +6 -6
- data/test/exit.bxt +3 -3
- data/test/exit/test.bxt +3 -3
- data/test/extension.bxt.manual +4 -4
- data/test/extension/custom.rb +12 -12
- data/test/extension/page.html +4 -4
- data/test/failif.bxt +7 -7
- data/test/failif/page.html +5 -5
- data/test/format.bxt +17 -17
- data/test/format/page.html +6 -6
- data/test/frame.bxt +6 -6
- data/test/frame/child_frame.html +6 -6
- data/test/frame/grandchild_frame.html +4 -4
- data/test/frame/page.html +4 -4
- data/test/js.bxt +4 -4
- data/test/json.bxt +19 -19
- data/test/json/array.json +3 -3
- data/test/json/object.json +13 -13
- data/test/load.bxt +18 -18
- data/test/load/child.bxt +12 -12
- data/test/parsers.bxt +1 -1
- data/test/parsers.csv +7 -7
- data/test/parsers.html +32 -32
- data/test/parsers/page.html +6 -6
- data/test/return.bxt +1 -1
- data/test/return/f1.bxt +1 -1
- data/test/return/f2.bxt +1 -1
- data/test/return/f3.bxt +1 -1
- data/test/return/f4.bxt +2 -2
- data/test/ruby.bxt +1 -1
- data/test/ruby/custom.rb +5 -5
- data/test/select.bxt +9 -9
- data/test/select/page.html +8 -8
- data/test/selectors.bxt +7 -7
- data/test/selectors/page.html +6 -6
- data/test/set_builtin.bxt +5 -0
- data/test/set_builtin/page.html +5 -0
- data/test/setif.bxt +3 -3
- data/test/smart_selector.bxt +17 -17
- data/test/smart_selector/page.html +17 -17
- data/test/stdin.bxt +0 -0
- data/test/submit.bxt +4 -4
- data/test/submit/page.html +6 -6
- data/test/submit/page2.html +4 -4
- data/test/test.bxt.manual +6 -6
- data/test/test/test1.bxt +2 -2
- data/test/test/test2.bxt +3 -3
- data/test/test/test3.bxt +2 -2
- data/test/test/test4.bxt +1 -1
- data/test/test/test5.bxt +1 -1
- data/test/window.bxt +14 -14
- data/test/window/page.html +5 -5
- data/test/window/popup.html +4 -4
- metadata +5 -3
@@ -1,68 +1,68 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#++
|
22
|
-
|
23
|
-
class Bauxite::Action
|
24
|
-
# Returns the specified variables to the parent scope (if any).
|
25
|
-
#
|
26
|
-
# If +vars+ is <tt>*</tt> every variable defined in the current scope
|
27
|
-
# will be returned to the parent scope.
|
28
|
-
#
|
29
|
-
# The syntax of the variable specification is:
|
30
|
-
# "var1_name" "var2_name" ...
|
31
|
-
#
|
32
|
-
# Note that this method provides an action named +return+ and not
|
33
|
-
# return_action.
|
34
|
-
#
|
35
|
-
# For example:
|
36
|
-
# set result "42"
|
37
|
-
# return result
|
38
|
-
# # => this would inject the result variable (whose value is 42)
|
39
|
-
# # into the calling context.
|
40
|
-
#
|
41
|
-
# Full example (see #load, #write, #click, #store and #assert for more
|
42
|
-
# details):
|
43
|
-
# # in main.bxt
|
44
|
-
# load login.txt "username=jdoe" "password=hello world!"
|
45
|
-
#
|
46
|
-
# # in login.bxt
|
47
|
-
# write id=user "${username}"
|
48
|
-
# write id=pass "${password}"
|
49
|
-
# click id=login
|
50
|
-
# store id=loginName fullName
|
51
|
-
# return fullName
|
52
|
-
#
|
53
|
-
# # back in main.bxt
|
54
|
-
# assert id=greeting "Welcome ${fullName}!"
|
55
|
-
# # => this assertion uses the variable returned from login.bxt
|
56
|
-
#
|
57
|
-
# :category: Action Methods
|
58
|
-
def return_action(*vars)
|
59
|
-
if vars == ['*']
|
60
|
-
@ctx.variables['__RETURN__'] = vars
|
61
|
-
return true
|
62
|
-
end
|
63
|
-
|
64
|
-
rets = @ctx.variables['__RETURN__'] || []
|
65
|
-
@ctx.variables['__RETURN__'] = rets + vars unless rets.include? '*'
|
66
|
-
true
|
67
|
-
end
|
68
|
-
end
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
#++
|
22
|
+
|
23
|
+
class Bauxite::Action
|
24
|
+
# Returns the specified variables to the parent scope (if any).
|
25
|
+
#
|
26
|
+
# If +vars+ is <tt>*</tt> every variable defined in the current scope
|
27
|
+
# will be returned to the parent scope.
|
28
|
+
#
|
29
|
+
# The syntax of the variable specification is:
|
30
|
+
# "var1_name" "var2_name" ...
|
31
|
+
#
|
32
|
+
# Note that this method provides an action named +return+ and not
|
33
|
+
# return_action.
|
34
|
+
#
|
35
|
+
# For example:
|
36
|
+
# set result "42"
|
37
|
+
# return result
|
38
|
+
# # => this would inject the result variable (whose value is 42)
|
39
|
+
# # into the calling context.
|
40
|
+
#
|
41
|
+
# Full example (see #load, #write, #click, #store and #assert for more
|
42
|
+
# details):
|
43
|
+
# # in main.bxt
|
44
|
+
# load login.txt "username=jdoe" "password=hello world!"
|
45
|
+
#
|
46
|
+
# # in login.bxt
|
47
|
+
# write id=user "${username}"
|
48
|
+
# write id=pass "${password}"
|
49
|
+
# click id=login
|
50
|
+
# store id=loginName fullName
|
51
|
+
# return fullName
|
52
|
+
#
|
53
|
+
# # back in main.bxt
|
54
|
+
# assert id=greeting "Welcome ${fullName}!"
|
55
|
+
# # => this assertion uses the variable returned from login.bxt
|
56
|
+
#
|
57
|
+
# :category: Action Methods
|
58
|
+
def return_action(*vars)
|
59
|
+
if vars == ['*']
|
60
|
+
@ctx.variables['__RETURN__'] = vars
|
61
|
+
return true
|
62
|
+
end
|
63
|
+
|
64
|
+
rets = @ctx.variables['__RETURN__'] || []
|
65
|
+
@ctx.variables['__RETURN__'] = rets + vars unless rets.include? '*'
|
66
|
+
true
|
67
|
+
end
|
68
|
+
end
|
data/lib/bauxite/actions/ruby.rb
CHANGED
@@ -1,58 +1,58 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#++
|
22
|
-
|
23
|
-
class Bauxite::Action
|
24
|
-
# Load the specified ruby file into an isolated variable context and
|
25
|
-
# execute the ruby code.
|
26
|
-
#
|
27
|
-
# +file+ can be a path relative to the current test file.
|
28
|
-
#
|
29
|
-
# An optional list of variables can be provided in +vars+. See #load.
|
30
|
-
#
|
31
|
-
# The ruby action file must contain a single lambda that takes a Context
|
32
|
-
# instance as its only argument.
|
33
|
-
#
|
34
|
-
# For example:
|
35
|
-
# # === my_test.rb ======= #
|
36
|
-
# lambda do |ctx|
|
37
|
-
# ctx.exec_action 'echo "${message}"'
|
38
|
-
# ctx.driver.navigate.to 'http://www.ruby-lang.org'
|
39
|
-
# ctx.variables['new'] = 'from ruby!'
|
40
|
-
# ctx.exec_action 'return new'
|
41
|
-
# end
|
42
|
-
# # === end my_test.rb === #
|
43
|
-
#
|
44
|
-
# # in main.bxt
|
45
|
-
# ruby my_test.rb "message=Hello World!"
|
46
|
-
# echo "${new}"
|
47
|
-
# # => this would print 'from ruby!'
|
48
|
-
#
|
49
|
-
# :category: Action Methods
|
50
|
-
def ruby(file, *vars)
|
51
|
-
# _load_file_action is defined in tryload.rb
|
52
|
-
_load_file_action(file, *vars) do |f|
|
53
|
-
content = ''
|
54
|
-
File.open(f, 'r') { |ff| content = ff.read }
|
55
|
-
eval(content).call(@ctx)
|
56
|
-
end || (raise Bauxite::Errors::FileNotFoundError, "File not found: #{file}")
|
57
|
-
end
|
58
|
-
end
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
#++
|
22
|
+
|
23
|
+
class Bauxite::Action
|
24
|
+
# Load the specified ruby file into an isolated variable context and
|
25
|
+
# execute the ruby code.
|
26
|
+
#
|
27
|
+
# +file+ can be a path relative to the current test file.
|
28
|
+
#
|
29
|
+
# An optional list of variables can be provided in +vars+. See #load.
|
30
|
+
#
|
31
|
+
# The ruby action file must contain a single lambda that takes a Context
|
32
|
+
# instance as its only argument.
|
33
|
+
#
|
34
|
+
# For example:
|
35
|
+
# # === my_test.rb ======= #
|
36
|
+
# lambda do |ctx|
|
37
|
+
# ctx.exec_action 'echo "${message}"'
|
38
|
+
# ctx.driver.navigate.to 'http://www.ruby-lang.org'
|
39
|
+
# ctx.variables['new'] = 'from ruby!'
|
40
|
+
# ctx.exec_action 'return new'
|
41
|
+
# end
|
42
|
+
# # === end my_test.rb === #
|
43
|
+
#
|
44
|
+
# # in main.bxt
|
45
|
+
# ruby my_test.rb "message=Hello World!"
|
46
|
+
# echo "${new}"
|
47
|
+
# # => this would print 'from ruby!'
|
48
|
+
#
|
49
|
+
# :category: Action Methods
|
50
|
+
def ruby(file, *vars)
|
51
|
+
# _load_file_action is defined in tryload.rb
|
52
|
+
_load_file_action(file, *vars) do |f|
|
53
|
+
content = ''
|
54
|
+
File.open(f, 'r') { |ff| content = ff.read }
|
55
|
+
eval(content).call(@ctx)
|
56
|
+
end || (raise Bauxite::Errors::FileNotFoundError, "File not found: #{file}")
|
57
|
+
end
|
58
|
+
end
|
@@ -1,48 +1,48 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#++
|
22
|
-
|
23
|
-
class Bauxite::Action
|
24
|
-
# Sets the value of the selected +HTMLSelect+ to +text+.
|
25
|
-
#
|
26
|
-
# +text+ can be the +value+ or the +text+ of the target +HTMLOption+.
|
27
|
-
#
|
28
|
-
# For example:
|
29
|
-
# # assuming <select id="s">
|
30
|
-
# # <option value="one">First</option>
|
31
|
-
# # <option value="two">Second</option>
|
32
|
-
# # </select>
|
33
|
-
# select s Second
|
34
|
-
# select s two
|
35
|
-
# # => both actions select the second option.
|
36
|
-
#
|
37
|
-
# :category: Action Methods
|
38
|
-
def select(selector, text)
|
39
|
-
@ctx.find(selector) do |e|
|
40
|
-
e = Selenium::WebDriver::Support::Select.new(e)
|
41
|
-
begin
|
42
|
-
e.select_by(:value, text)
|
43
|
-
rescue Selenium::WebDriver::Error::NoSuchElementError
|
44
|
-
e.select_by(:text, text)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
#++
|
22
|
+
|
23
|
+
class Bauxite::Action
|
24
|
+
# Sets the value of the selected +HTMLSelect+ to +text+.
|
25
|
+
#
|
26
|
+
# +text+ can be the +value+ or the +text+ of the target +HTMLOption+.
|
27
|
+
#
|
28
|
+
# For example:
|
29
|
+
# # assuming <select id="s">
|
30
|
+
# # <option value="one">First</option>
|
31
|
+
# # <option value="two">Second</option>
|
32
|
+
# # </select>
|
33
|
+
# select s Second
|
34
|
+
# select s two
|
35
|
+
# # => both actions select the second option.
|
36
|
+
#
|
37
|
+
# :category: Action Methods
|
38
|
+
def select(selector, text)
|
39
|
+
@ctx.find(selector) do |e|
|
40
|
+
e = Selenium::WebDriver::Support::Select.new(e)
|
41
|
+
begin
|
42
|
+
e.select_by(:value, text)
|
43
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
44
|
+
e.select_by(:text, text)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/bauxite/actions/set.rb
CHANGED
@@ -1,39 +1,39 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#++
|
22
|
-
|
23
|
-
class Bauxite::Action
|
24
|
-
# Sets the variable named +name+ to the +value+ specified.
|
25
|
-
#
|
26
|
-
# Both +name+ and +value+ are subject to variable expansion
|
27
|
-
# (see Context#expand).
|
28
|
-
#
|
29
|
-
# For example:
|
30
|
-
# set one "uno"
|
31
|
-
# set two "${one} + ${one}"
|
32
|
-
# echo "${two}"
|
33
|
-
# # => this would print 'uno + uno'
|
34
|
-
#
|
35
|
-
# :category: Action Methods
|
36
|
-
def set(name, value)
|
37
|
-
@ctx.variables[name] = value
|
38
|
-
end
|
39
|
-
end
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
#++
|
22
|
+
|
23
|
+
class Bauxite::Action
|
24
|
+
# Sets the variable named +name+ to the +value+ specified.
|
25
|
+
#
|
26
|
+
# Both +name+ and +value+ are subject to variable expansion
|
27
|
+
# (see Context#expand).
|
28
|
+
#
|
29
|
+
# For example:
|
30
|
+
# set one "uno"
|
31
|
+
# set two "${one} + ${one}"
|
32
|
+
# echo "${two}"
|
33
|
+
# # => this would print 'uno + uno'
|
34
|
+
#
|
35
|
+
# :category: Action Methods
|
36
|
+
def set(name, value)
|
37
|
+
@ctx.variables[name] = value
|
38
|
+
end
|
39
|
+
end
|
@@ -1,44 +1,44 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
-
# of this software and associated documentation files (the "Software"), to deal
|
6
|
-
# in the Software without restriction, including without limitation the rights
|
7
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
-
# copies of the Software, and to permit persons to whom the Software is
|
9
|
-
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be included in
|
12
|
-
# all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
-
# SOFTWARE.
|
21
|
-
#++
|
22
|
-
|
23
|
-
class Bauxite::Action
|
24
|
-
# Sets the variable named +name+ to the +value+ specified only if the.
|
25
|
-
# +action+ execution succeeds. If the execution fails, the value of +name+
|
26
|
-
# is left unchanged.
|
27
|
-
#
|
28
|
-
# For example:
|
29
|
-
# set name john
|
30
|
-
# setif is_john true assertv "/John/i" "${name}"
|
31
|
-
# assertv true ${is_john}
|
32
|
-
# # => the assertion would pass
|
33
|
-
#
|
34
|
-
# :category: Action Methods
|
35
|
-
def setif(name, value, action, *args)
|
36
|
-
begin
|
37
|
-
@ctx.exec_parsed_action(action, args, false)
|
38
|
-
@ctx.variables[name] = value
|
39
|
-
true
|
40
|
-
rescue Bauxite::Errors::AssertionError
|
41
|
-
return false
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014 Patricio Zavolinsky
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
#++
|
22
|
+
|
23
|
+
class Bauxite::Action
|
24
|
+
# Sets the variable named +name+ to the +value+ specified only if the.
|
25
|
+
# +action+ execution succeeds. If the execution fails, the value of +name+
|
26
|
+
# is left unchanged.
|
27
|
+
#
|
28
|
+
# For example:
|
29
|
+
# set name john
|
30
|
+
# setif is_john true assertv "/John/i" "${name}"
|
31
|
+
# assertv true ${is_john}
|
32
|
+
# # => the assertion would pass
|
33
|
+
#
|
34
|
+
# :category: Action Methods
|
35
|
+
def setif(name, value, action, *args)
|
36
|
+
begin
|
37
|
+
@ctx.exec_parsed_action(action, args, false)
|
38
|
+
@ctx.variables[name] = value
|
39
|
+
true
|
40
|
+
rescue Bauxite::Errors::AssertionError
|
41
|
+
return false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|