bauxite 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +95 -53
- data/Rakefile +1 -2
- data/doc/Bauxite/Action.html +5 -1
- data/doc/Bauxite/Application.html +249 -0
- data/doc/Bauxite/Context.html +37 -29
- data/doc/Bauxite/Loggers/XtermLogger.html +7 -5
- data/doc/created.rid +38 -37
- data/doc/index.html +2 -0
- data/doc/js/search_index.js +1 -1
- data/doc/table_of_contents.html +9 -0
- data/lib/bauxite/actions/debug.rb +8 -3
- data/lib/bauxite/application.rb +114 -1
- data/lib/bauxite/core/Context.rb +11 -8
- data/lib/bauxite/loggers/xterm.rb +19 -4
- data/lib/bauxite.rb +1 -1
- metadata +3 -2
data/lib/bauxite/application.rb
CHANGED
@@ -24,8 +24,121 @@ require 'optparse'
|
|
24
24
|
require_relative 'core/Context.rb'
|
25
25
|
|
26
26
|
module Bauxite
|
27
|
+
# +bauxite+ command-line program.
|
28
|
+
#
|
29
|
+
# This program executes Bauxite tests and outputs the execution progress
|
30
|
+
# and tests results to the terminal.
|
31
|
+
#
|
32
|
+
# == Synopsis
|
33
|
+
#
|
34
|
+
# bauxite [OPTIONS] file1 file2 ...
|
35
|
+
# # => Executes file1, then file2, and so on.
|
36
|
+
#
|
37
|
+
# bauxite [OPTIONS] -d
|
38
|
+
# # => Start Bauxite directly in the debug console.
|
39
|
+
#
|
40
|
+
# bauxite [OPTIONS]
|
41
|
+
# # => Start Bauxite and read test actions from the standard input.
|
42
|
+
#
|
43
|
+
# == Options
|
44
|
+
# For a detailed list of options for your Bauxite version execute:
|
45
|
+
# bauxite -h
|
46
|
+
#
|
47
|
+
#
|
48
|
+
# [-v, \--verbose]
|
49
|
+
# Show verbose error messages (i.e. print exception names and
|
50
|
+
# backtraces).
|
51
|
+
#
|
52
|
+
# [-t, \--timeout SECONDS]
|
53
|
+
# Number of seconds to wait before issuing a timeout error. This
|
54
|
+
# timeout applies only to Selectors.
|
55
|
+
#
|
56
|
+
# [-d, \--debug]
|
57
|
+
# If an error occurs, break into the debug console. This mode is very
|
58
|
+
# useful to try different selector combinations and debug
|
59
|
+
# NoSuchElementError errors.
|
60
|
+
#
|
61
|
+
# [-p, \--provider DRIVER]
|
62
|
+
# Selenium WebDriver provider. Defaults to +firefox+.
|
63
|
+
#
|
64
|
+
# Other options include:
|
65
|
+
# - +remote+
|
66
|
+
# - +ie+
|
67
|
+
# - +chrome+
|
68
|
+
# - +android+
|
69
|
+
# - +iphone+
|
70
|
+
# - +opera+
|
71
|
+
# - +phantomjs+
|
72
|
+
# - +safari+
|
73
|
+
#
|
74
|
+
# Driver availability dependes on the system running Bauxite.
|
75
|
+
# [-P, \--provider-option OPTION]
|
76
|
+
# A <tt>name=value</tt> pair of options that are directly forwarded to
|
77
|
+
# the Selenium WebDriver provider. This option argument can appear
|
78
|
+
# multiple times in the command line to specify multiple options.
|
79
|
+
#
|
80
|
+
# [-l, \--logger LOGGER]
|
81
|
+
# Logger instance to use. Defaults to +xterm+ if the +TERM+ environment
|
82
|
+
# variable is set to +xterm+, otherwise it defaults to +terminal+.
|
83
|
+
#
|
84
|
+
# To see a complete list of the available loggers execute:
|
85
|
+
# bauxite -h
|
86
|
+
#
|
87
|
+
# [-L, \--logger-option OPTION]
|
88
|
+
# A <tt>name=value</tt> pair of options that are directly forwarded to
|
89
|
+
# the logger. This option argument can appear multiple times in the
|
90
|
+
# command line to specify multiple options.
|
91
|
+
#
|
92
|
+
# [-r, \--reset]
|
93
|
+
# Issue a Action#reset action between every test specified in
|
94
|
+
# the command line. This option enforces test isolation by resetting
|
95
|
+
# the test context before each test (this removes cookies, sessions,
|
96
|
+
# etc. from the previous test).
|
97
|
+
#
|
98
|
+
# [-w, \--wait]
|
99
|
+
# Wait for user input when the test completes instead of closing the
|
100
|
+
# browser window.
|
101
|
+
#
|
102
|
+
# [-u, \--url URL]
|
103
|
+
# This option is an alias of:
|
104
|
+
# -p remote -P url=URL
|
105
|
+
# If +URL+ is not present <tt>http://localhost:4444/wd/hub</tt> will be
|
106
|
+
# assumed.
|
107
|
+
#
|
108
|
+
# [-e, \--extension DIR]
|
109
|
+
# Loads every Ruby file (*.rb) inside +DIR+ (and subdirectories). This
|
110
|
+
# option can be used to load custom Bauxite extensions (e.g. Actions,
|
111
|
+
# Selectors, Loggers, etc.) for a specific test run.
|
112
|
+
#
|
113
|
+
# For example:
|
114
|
+
# # === custom/my_selector.rb ======= #
|
115
|
+
# class Bauxite::Selector
|
116
|
+
# def by_attr(value)
|
117
|
+
# attr "by_attr:#{value}"
|
118
|
+
# end
|
119
|
+
# end
|
120
|
+
# # === end custom/my_selector.rb === #
|
121
|
+
#
|
122
|
+
# # === custom/my_test.bxt ========== #
|
123
|
+
# # ...
|
124
|
+
# assert "by_attr=attr_value" hello
|
125
|
+
# # ...
|
126
|
+
# # === end custom/my_test.bxt ====== #
|
127
|
+
#
|
128
|
+
# bauxite -e custom custom/my_test.bxt
|
129
|
+
#
|
130
|
+
# [\--version]
|
131
|
+
# Shows the Bauxite version.
|
132
|
+
#
|
133
|
+
# == Exit Status
|
134
|
+
# The +bauxite+ program exits with +zero+ if every action in the test
|
135
|
+
# succeeded and +non-zero+ otherwise.
|
136
|
+
#
|
137
|
+
# If the test run includes multiple Action#test actions, the exit status
|
138
|
+
# equals the number of failed test cases (again, +zero+ indicates success).
|
139
|
+
#
|
27
140
|
class Application
|
28
|
-
def self.start
|
141
|
+
def self.start #:nodoc:
|
29
142
|
options = {
|
30
143
|
:logger => (ENV['TERM'] == 'xterm') ? 'xterm' : 'terminal',
|
31
144
|
:verbose => false,
|
data/lib/bauxite/core/Context.rb
CHANGED
@@ -71,7 +71,8 @@ module Bauxite
|
|
71
71
|
@options = options
|
72
72
|
@driver_name = (options[:driver] || :firefox).to_sym
|
73
73
|
@variables = {
|
74
|
-
'__TIMEOUT__' => (options[:timeout] || 10).to_i
|
74
|
+
'__TIMEOUT__' => (options[:timeout] || 10).to_i,
|
75
|
+
'__DEBUG__' => false
|
75
76
|
}
|
76
77
|
@aliases = {}
|
77
78
|
@tests = []
|
@@ -315,13 +316,15 @@ module Bauxite
|
|
315
316
|
p e
|
316
317
|
puts e.backtrace
|
317
318
|
end
|
318
|
-
|
319
|
-
debug
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
319
|
+
unless @variables['__DEBUG__']
|
320
|
+
if break_into_debug and @options[:debug]
|
321
|
+
debug
|
322
|
+
elsif exit_on_error
|
323
|
+
if @variables['__RAISE_ERROR__']
|
324
|
+
raise
|
325
|
+
else
|
326
|
+
exit false
|
327
|
+
end
|
325
328
|
end
|
326
329
|
end
|
327
330
|
end
|
@@ -68,12 +68,27 @@ protected
|
|
68
68
|
true
|
69
69
|
end
|
70
70
|
|
71
|
+
#--
|
72
|
+
# Adapted from:
|
73
|
+
# https://github.com/jimweirich/rake/blob/master/lib/rake/application.rb
|
74
|
+
# See Rake::Application#terminal_width
|
75
|
+
#++
|
71
76
|
def _screen_width
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
77
|
+
if RbConfig::CONFIG['host_os'] =~
|
78
|
+
/(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
|
79
|
+
(_dynamic_width_stty.nonzero? || _dynamic_width_tput)
|
80
|
+
else
|
76
81
|
super
|
77
82
|
end
|
83
|
+
rescue Exception => e
|
84
|
+
super
|
78
85
|
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def _dynamic_width_stty
|
89
|
+
%x{stty size 2>/dev/null}.split[1].to_i
|
90
|
+
end
|
91
|
+
def _dynamic_width_tput
|
92
|
+
%x{tput cols 2>/dev/null}.to_i
|
93
|
+
end
|
79
94
|
end
|
data/lib/bauxite.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bauxite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patricio Zavolinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- doc/Bauxite.html
|
53
53
|
- doc/Bauxite/Action.html
|
54
54
|
- doc/Bauxite/ActionModule.html
|
55
|
+
- doc/Bauxite/Application.html
|
55
56
|
- doc/Bauxite/Context.html
|
56
57
|
- doc/Bauxite/Errors.html
|
57
58
|
- doc/Bauxite/Errors/AssertionError.html
|