superbara 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +10 -4
- data/README.md +2 -2
- data/lib/pry_monkey.rb +1 -1
- data/lib/superbara.rb +29 -15
- data/lib/superbara/cli.rb +69 -89
- data/lib/superbara/context.rb +8 -87
- data/lib/superbara/context/base.rb +15 -0
- data/lib/superbara/context/eval.rb +12 -0
- data/lib/superbara/context/run.rb +15 -0
- data/lib/superbara/context/shell.rb +16 -0
- data/lib/superbara/context/start.rb +31 -0
- data/lib/superbara/dsl.rb +13 -19
- data/lib/superbara/version.rb +1 -1
- data/superbara.gemspec +1 -0
- data/tests/all/main.rb +1 -1
- data/tests/common/main.rb +1 -1
- data/tests/envs/on_error/main.rb +3 -3
- data/tests/envs/on_error/second_ok.rb +1 -1
- data/tests/features/find.rb +4 -1
- data/tests/minimal/main.rb +6 -1
- data/tests/minimal/minimal.rb +12 -0
- data/tests/run/main.rb +25 -0
- data/tests/run/once.rb +1 -0
- data/tests/run/value.rb +1 -0
- data/tests/tags/block.rb +1 -1
- data/tests/tags/notags.rb +1 -1
- data/tests/tags/simple.rb +1 -1
- metadata +30 -3
- data/lib/superbara/errors/export_stops_error.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab8bf36370219d9cdc7b4519eee57b6a8fed48128f0d41b0e98a450c4cd88357
|
4
|
+
data.tar.gz: d89410c70aca07dc35dbe3696e53e7c7901f9206a1bcfa438749cb362b0a4547
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb4124bad9f79400663e58eba62389c0b7e6dca4fe692dd43703ed90c6890289f0af7f8160e39028138009cebd01f46ac2650287e9e1a91b4b6375e45305355a
|
7
|
+
data.tar.gz: 0cec8306e977a827ddc049b013c31e89fb1216697e0ca1bc42c070c5ece5f4445a75b93fc3cdd7a685f510286c20b6c2f33e765889e2190ebffd939583a28486
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
superbara (0.
|
4
|
+
superbara (0.13.0)
|
5
|
+
astrolabe (~> 1.3, >= 1.3.1)
|
5
6
|
binding_of_caller (~> 0.8, >= 0.8.0)
|
6
7
|
capybara (~> 3.1, >= 3.1.0)
|
7
8
|
colorize (~> 0.8, >= 0.8.1)
|
@@ -15,6 +16,9 @@ GEM
|
|
15
16
|
specs:
|
16
17
|
addressable (2.5.2)
|
17
18
|
public_suffix (>= 2.0.2, < 4.0)
|
19
|
+
ast (2.4.0)
|
20
|
+
astrolabe (1.3.1)
|
21
|
+
parser (~> 2.2)
|
18
22
|
binding_of_caller (0.8.0)
|
19
23
|
debug_inspector (>= 0.0.1)
|
20
24
|
byebug (10.0.2)
|
@@ -44,6 +48,8 @@ GEM
|
|
44
48
|
mustermann (1.0.2)
|
45
49
|
nokogiri (1.8.2)
|
46
50
|
mini_portile2 (~> 2.3.0)
|
51
|
+
parser (2.5.1.0)
|
52
|
+
ast (~> 2.4.0)
|
47
53
|
pry (0.11.3)
|
48
54
|
coderay (~> 1.1.0)
|
49
55
|
method_source (~> 0.9.0)
|
@@ -52,7 +58,7 @@ GEM
|
|
52
58
|
pry (~> 0.10)
|
53
59
|
public_suffix (3.0.2)
|
54
60
|
rack (2.0.5)
|
55
|
-
rack-protection (2.0.
|
61
|
+
rack-protection (2.0.3)
|
56
62
|
rack
|
57
63
|
rack-test (1.0.0)
|
58
64
|
rack (>= 1.0, < 3)
|
@@ -74,10 +80,10 @@ GEM
|
|
74
80
|
selenium-webdriver (3.12.0)
|
75
81
|
childprocess (~> 0.5)
|
76
82
|
rubyzip (~> 1.2)
|
77
|
-
sinatra (2.0.
|
83
|
+
sinatra (2.0.3)
|
78
84
|
mustermann (~> 1.0)
|
79
85
|
rack (~> 2.0)
|
80
|
-
rack-protection (= 2.0.
|
86
|
+
rack-protection (= 2.0.3)
|
81
87
|
tilt (~> 2.0)
|
82
88
|
tilt (2.0.8)
|
83
89
|
xpath (3.1.0)
|
data/README.md
CHANGED
@@ -74,10 +74,10 @@ find "h1"
|
|
74
74
|
run "vars"
|
75
75
|
|
76
76
|
# possible to run just once per session (superbara start) to speed up
|
77
|
-
run "login", once: true
|
77
|
+
run "login", {}, once: true
|
78
78
|
|
79
79
|
# ..and do something when already ran
|
80
|
-
run "login", once: true do
|
80
|
+
run "login", {}, once: true do
|
81
81
|
# when already logged in
|
82
82
|
visit "http://www.example.com/main"
|
83
83
|
end
|
data/lib/pry_monkey.rb
CHANGED
data/lib/superbara.rb
CHANGED
@@ -11,8 +11,6 @@ require_relative "selenium_monkey"
|
|
11
11
|
require_relative "capybara_monkey"
|
12
12
|
require_relative "pry_monkey"
|
13
13
|
|
14
|
-
::Kernel.send :undef_method, :p
|
15
|
-
|
16
14
|
require_relative "superbara/config"
|
17
15
|
|
18
16
|
module Superbara
|
@@ -24,16 +22,6 @@ module Superbara
|
|
24
22
|
@@project_path = Dir.pwd
|
25
23
|
@@config = Superbara::Config.new
|
26
24
|
@@errored_runs = []
|
27
|
-
@@main = nil
|
28
|
-
|
29
|
-
def self.main=(main)
|
30
|
-
@@main=main
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.main
|
34
|
-
@@main
|
35
|
-
end
|
36
|
-
|
37
25
|
|
38
26
|
def self.start!
|
39
27
|
@@started_at = Time.now
|
@@ -96,6 +84,14 @@ module Superbara
|
|
96
84
|
@@current_context
|
97
85
|
end
|
98
86
|
|
87
|
+
@@last_context_return_value = nil
|
88
|
+
def self.last_context_return_value=(value)
|
89
|
+
@@last_context_return_value = value
|
90
|
+
end
|
91
|
+
def self.last_context_return_value
|
92
|
+
@@last_context_return_value
|
93
|
+
end
|
94
|
+
|
99
95
|
def self.output(str)
|
100
96
|
if Superbara.shell? || Superbara.seconds_since_start.nil?
|
101
97
|
puts str
|
@@ -152,6 +148,19 @@ module Superbara
|
|
152
148
|
end
|
153
149
|
end
|
154
150
|
|
151
|
+
def self.print_error(ex)
|
152
|
+
puts ""
|
153
|
+
print "Error: ".colorize(:red)
|
154
|
+
puts ex.message.split(" for #<Superbara::Context").first
|
155
|
+
puts " in #{ex.backtrace_locations.first.path}:#{ex.backtrace_locations.first.lineno}"
|
156
|
+
end
|
157
|
+
|
158
|
+
def self.print_tag_skip(ex)
|
159
|
+
test_tags = Marshal.load(ex.message).join(",")
|
160
|
+
allowed_tags = Superbara.config.tags.join(",")
|
161
|
+
Superbara.output " ..skipped due to test tags (#{test_tags}) not found in current tags: #{allowed_tags}"
|
162
|
+
end
|
163
|
+
|
155
164
|
def self.errored_runs
|
156
165
|
@@errored_runs
|
157
166
|
end
|
@@ -160,6 +169,14 @@ module Superbara
|
|
160
169
|
@@config
|
161
170
|
end
|
162
171
|
|
172
|
+
def self.start_did_open_debug
|
173
|
+
@@start_did_open_debug
|
174
|
+
end
|
175
|
+
|
176
|
+
def self.start_did_open_debug=(value)
|
177
|
+
@@start_did_open_debug = value
|
178
|
+
end
|
179
|
+
|
163
180
|
def self.toast(text, duration: 1, delay: nil)
|
164
181
|
return unless Superbara.visual?
|
165
182
|
|
@@ -222,8 +239,6 @@ if (window.document.body) {
|
|
222
239
|
end
|
223
240
|
end
|
224
241
|
|
225
|
-
Superbara.main = self
|
226
|
-
|
227
242
|
require_relative "superbara/version"
|
228
243
|
require_relative "superbara/helpers"
|
229
244
|
require_relative "superbara/chrome"
|
@@ -231,7 +246,6 @@ require_relative "superbara/cli"
|
|
231
246
|
require_relative "superbara/context"
|
232
247
|
require_relative "superbara/web"
|
233
248
|
require_relative "superbara/errors/not_desired_tag_error"
|
234
|
-
require_relative "superbara/errors/export_stops_error"
|
235
249
|
|
236
250
|
trap "SIGINT" do
|
237
251
|
puts "
|
data/lib/superbara/cli.rb
CHANGED
@@ -110,109 +110,89 @@ scroll 50
|
|
110
110
|
end
|
111
111
|
|
112
112
|
Pry.start if ENV['SUPERBARA_DEBUG']
|
113
|
-
ctx = nil
|
114
113
|
webapp_thread = nil
|
115
114
|
puts "== superbara #{Superbara::VERSION} =="
|
115
|
+
|
116
116
|
loop do
|
117
|
-
|
117
|
+
case main_command
|
118
|
+
when "web"
|
119
|
+
webapp = Superbara::Web.new port: (ENV['SUPERBARA_WEB_PORT'] || 4567)
|
120
|
+
webapp.run!
|
121
|
+
exit 0
|
122
|
+
when "shell"
|
123
|
+
Superbara.visual_enable!
|
124
|
+
Superbara.shell_enable!
|
125
|
+
|
126
|
+
unless webapp_thread
|
127
|
+
webapp_thread = Thread.new do
|
128
|
+
webapp = Superbara::Web.new access_log: false
|
129
|
+
webapp.run!
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
Superbara::Context::Shell.new "visit 'localhost:4567'"
|
135
|
+
when "run", "start"
|
136
|
+
puts "project: #{Superbara.project_name}"
|
137
|
+
puts ""
|
138
|
+
puts "t action".colorize(:light_black)
|
139
|
+
|
140
|
+
Superbara.start!
|
141
|
+
|
142
|
+
Superbara.visual_disabled do
|
143
|
+
Superbara::Context::Eval.new "visit 'about:blank'"
|
144
|
+
end
|
118
145
|
|
119
|
-
begin
|
120
146
|
case main_command
|
121
|
-
when "
|
122
|
-
webapp = Superbara::Web.new port: (ENV['SUPERBARA_WEB_PORT'] || 4567)
|
123
|
-
webapp.run!
|
124
|
-
exit 0
|
125
|
-
when "shell"
|
147
|
+
when "start"
|
126
148
|
Superbara.visual_enable!
|
127
|
-
Superbara.shell_enable!
|
128
149
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
150
|
+
Superbara.start_did_open_debug = false
|
151
|
+
Superbara::Context::Start.new File.join(Superbara.project_path, project_entrypoint)
|
152
|
+
unless Superbara.start_did_open_debug
|
153
|
+
puts
|
154
|
+
print "WARNING: ".colorize(:yellow)
|
155
|
+
puts "your script had a return statement - local variables NOT available in debugger"
|
156
|
+
Superbara::Context::Shell.new
|
134
157
|
end
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
Superbara
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
Superbara.current_context.__superbara_eval "visit 'about:blank'"
|
158
|
+
when "run"
|
159
|
+
begin
|
160
|
+
Superbara::Context::Run.new File.join(Superbara.project_path, project_entrypoint)
|
161
|
+
rescue Superbara::Errors::NotDesiredTagError => ex
|
162
|
+
test_tags = Marshal.load(ex.message).join(",")
|
163
|
+
allowed_tags = Superbara.config.tags.join(",")
|
164
|
+
Superbara.output " ..skipped due to test tags (#{test_tags}) not found in current tags: #{allowed_tags}"
|
165
|
+
rescue => ex
|
166
|
+
Superbara.print_error ex
|
167
|
+
exit 1
|
168
|
+
else
|
169
|
+
puts """
|
170
|
+
🏁 🏁 🏁 done."""
|
149
171
|
end
|
150
172
|
|
151
|
-
|
152
|
-
|
153
|
-
Superbara.
|
154
|
-
|
155
|
-
|
156
|
-
Superbara.current_context.__superbara_load File.join(Superbara.project_path, project_entrypoint)
|
157
|
-
puts """
|
158
|
-
🏁 🏁 🏁 done."""
|
159
|
-
|
160
|
-
case main_command
|
161
|
-
when "run"
|
162
|
-
if Superbara.errored_runs.any?
|
163
|
-
puts ""
|
164
|
-
error_or_errors = if Superbara.errored_runs.size > 1
|
165
|
-
"errors"
|
166
|
-
else
|
167
|
-
"error"
|
168
|
-
end
|
169
|
-
|
170
|
-
puts "Run had #{Superbara.errored_runs.size} #{error_or_errors}!".colorize(:red)
|
171
|
-
puts ""
|
172
|
-
puts "Following runs errored:"
|
173
|
-
for errored_run in Superbara.errored_runs
|
174
|
-
puts " #{errored_run}"
|
175
|
-
end
|
176
|
-
|
177
|
-
exit! 1 #TODO: at_exit handler instead?
|
173
|
+
if Superbara.errored_runs.any?
|
174
|
+
puts ""
|
175
|
+
error_or_errors = if Superbara.errored_runs.size > 1
|
176
|
+
"errors"
|
178
177
|
else
|
179
|
-
|
178
|
+
"error"
|
180
179
|
end
|
181
|
-
when "start"
|
182
|
-
Superbara.current_context.__superbara_eval """
|
183
|
-
debug disable_whereami: true, help: false;
|
184
|
-
sleep 0.0001
|
185
|
-
"""
|
186
|
-
end
|
187
|
-
else
|
188
|
-
puts "Unknown command: #{main_command}"
|
189
|
-
exit 1
|
190
|
-
end
|
191
|
-
rescue Exception => ex
|
192
|
-
return if ex.class == SystemExit
|
193
|
-
|
194
|
-
begin
|
195
|
-
offending_file_path_and_line_in_this = ex.backtrace.detect { |line| line.end_with?("`<top (required)>'") }
|
196
|
-
offending_file_path, offending_line, _ = offending_file_path_and_line_in_this.split(":")
|
197
|
-
offending_code = IO.readlines(offending_file_path)[offending_line.to_i-1]
|
198
|
-
rescue Exception => ex_while_parsing
|
199
|
-
raise ex
|
200
|
-
end
|
201
|
-
puts """
|
202
|
-
== Exception ==""".colorize(:red)
|
203
|
-
puts """#{ex.class}
|
204
|
-
#{ex.message}
|
205
|
-
in #{offending_file_path}:#{offending_line}
|
206
|
-
#{offending_line}: #{offending_code}""".colorize(:light_black)
|
207
180
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
""
|
213
|
-
|
214
|
-
|
181
|
+
puts "Run had #{Superbara.errored_runs.size} #{error_or_errors}!".colorize(:red)
|
182
|
+
puts ""
|
183
|
+
puts "Following runs errored:"
|
184
|
+
for errored_run in Superbara.errored_runs
|
185
|
+
puts " #{errored_run}"
|
186
|
+
end
|
187
|
+
|
188
|
+
exit 1
|
189
|
+
else
|
190
|
+
exit 0
|
191
|
+
end
|
215
192
|
end
|
193
|
+
else
|
194
|
+
puts "Unknown command: #{main_command}"
|
195
|
+
exit 1
|
216
196
|
end
|
217
197
|
end
|
218
198
|
end
|
data/lib/superbara/context.rb
CHANGED
@@ -1,89 +1,10 @@
|
|
1
|
-
module Superbara
|
2
|
-
|
3
|
-
include Capybara::DSL
|
4
|
-
include Superbara::DSL
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@__superbara_binding = binding
|
8
|
-
end
|
9
|
-
|
10
|
-
def __superbara_debug
|
11
|
-
__superbara_eval """
|
12
|
-
debug disable_whereami: true, help: false
|
13
|
-
sleep 0.0001
|
14
|
-
"""
|
15
|
-
end
|
16
|
-
|
17
|
-
def __superbara_load(path, params={})
|
18
|
-
params.each_pair do |k,v|
|
19
|
-
eval = "@#{k} = "
|
20
|
-
eval << "'" if v.class == String
|
21
|
-
eval << v
|
22
|
-
eval << "'" if v.class == String
|
23
|
-
Superbara.main.instance_eval "@#{k} = #{eval}"
|
24
|
-
end
|
25
|
-
|
26
|
-
not_desired_tag_error_occurred = false
|
27
|
-
export_stops_error = nil
|
28
|
-
begin
|
29
|
-
load path, true
|
30
|
-
rescue Superbara::Errors::ExportStopsError => ex
|
31
|
-
export_stops_error = ex
|
32
|
-
rescue Superbara::Errors::NotDesiredTagError => ex
|
33
|
-
not_desired_tag_error_occurred = true
|
34
|
-
test_tags = Marshal.load(ex.message).join(",")
|
35
|
-
allowed_tags = Superbara.config.tags.join(",")
|
36
|
-
Superbara.output " ..skipped due to test tags (#{test_tags}) not found in current tags: #{allowed_tags}"
|
37
|
-
ensure
|
38
|
-
params.each_pair do |k,v|
|
39
|
-
Superbara.main.instance_eval "remove_instance_variable '@#{k}'"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
if export_stops_error
|
44
|
-
# sending it forward for run to return what's inside
|
45
|
-
raise export_stops_error
|
46
|
-
end
|
47
|
-
|
48
|
-
if not_desired_tag_error_occurred
|
49
|
-
# FAKENEWS: sending it forward for run to return false
|
50
|
-
raise Superbara::Errors::NotDesiredTagError
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def __superbara_eval(str)
|
55
|
-
@__superbara_binding.eval str
|
56
|
-
end
|
57
|
-
|
58
|
-
def method_missing(m, *args, &block)
|
59
|
-
super unless Superbara.shell?
|
60
|
-
|
61
|
-
selector = m.to_s
|
62
|
-
finder_args = args[0] if args.any?
|
63
|
-
|
64
|
-
would_find_size = evaluate_script "document.querySelectorAll('#{m}').length"
|
65
|
-
if would_find_size > 50
|
66
|
-
puts "tried to find with selector '#{m}', but would return over 50 elements (#{would_find_size}) and hang."
|
67
|
-
return false
|
68
|
-
end
|
69
|
-
|
70
|
-
print "finding all '#{m}'"
|
71
|
-
|
72
|
-
results = if finder_args
|
73
|
-
puts " #{finder_args}"
|
74
|
-
all selector, finder_args
|
75
|
-
else
|
76
|
-
puts ""
|
77
|
-
all selector
|
78
|
-
end
|
79
|
-
|
80
|
-
if results.size == 1
|
81
|
-
results.first.show
|
82
|
-
elsif results.size > 1
|
83
|
-
results.show(styles: [{"border" => "20px dashed Red"}])
|
84
|
-
else
|
85
|
-
[]
|
86
|
-
end
|
1
|
+
module Superbara
|
2
|
+
module Context
|
87
3
|
end
|
4
|
+
end
|
88
5
|
|
89
|
-
|
6
|
+
require_relative "context/base"
|
7
|
+
require_relative "context/shell"
|
8
|
+
require_relative "context/start"
|
9
|
+
require_relative "context/run"
|
10
|
+
require_relative "context/eval"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Superbara
|
2
|
+
module Context
|
3
|
+
class Base
|
4
|
+
require_relative "../dsl"
|
5
|
+
include Capybara::DSL
|
6
|
+
include Superbara::DSL
|
7
|
+
|
8
|
+
def initialize(path_or_contents, params = {})
|
9
|
+
params.each_pair do |k,v|
|
10
|
+
instance_variable_set "@#{k}", v
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Superbara
|
2
|
+
module Context
|
3
|
+
class Eval < Base
|
4
|
+
def initialize(__SUPERBARA_CONTENTS__, __SUPERBARA_PARAMS__={})
|
5
|
+
super __SUPERBARA_CONTENTS__, __SUPERBARA_PARAMS__
|
6
|
+
lambda do
|
7
|
+
instance_eval __SUPERBARA_CONTENTS__
|
8
|
+
end.call
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Superbara
|
2
|
+
module Context
|
3
|
+
class Run < Base
|
4
|
+
def initialize(__SUPERBARA_FILE__, __SUPERBARA_PARAMS__={})
|
5
|
+
super __SUPERBARA_FILE__, __SUPERBARA_PARAMS__
|
6
|
+
|
7
|
+
Superbara.last_context_return_value = lambda do
|
8
|
+
instance_eval """
|
9
|
+
#{File.read(File.realpath(__SUPERBARA_FILE__))}
|
10
|
+
""", File.realpath(__SUPERBARA_FILE__), 1
|
11
|
+
end.call
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Superbara
|
2
|
+
module Context
|
3
|
+
class Shell < Base
|
4
|
+
def initialize(__SUPERBARA_CONTENTS__="", __SUPERBARA_PARAMS__={})
|
5
|
+
super __SUPERBARA_CONTENTS__, __SUPERBARA_PARAMS__
|
6
|
+
lambda do
|
7
|
+
instance_eval """
|
8
|
+
#{__SUPERBARA_CONTENTS__}
|
9
|
+
debug disable_whereami: true, help: false
|
10
|
+
sleep 0.001
|
11
|
+
"""
|
12
|
+
end.call
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Superbara
|
2
|
+
module Context
|
3
|
+
class Start < Base
|
4
|
+
def initialize(__SUPERBARA_FILE__, __SUPERBARA_PARAMS__={})
|
5
|
+
super __SUPERBARA_FILE__, __SUPERBARA_PARAMS__
|
6
|
+
|
7
|
+
lambda do
|
8
|
+
instance_eval """
|
9
|
+
begin
|
10
|
+
#{File.read(File.realpath(__SUPERBARA_FILE__))}
|
11
|
+
rescue Superbara::Errors::NotDesiredTagError
|
12
|
+
Superbara.print_tag_skip $!
|
13
|
+
rescue
|
14
|
+
Superbara.print_error $!
|
15
|
+
else
|
16
|
+
puts '
|
17
|
+
🏁 🏁 🏁 done.'
|
18
|
+
end
|
19
|
+
|
20
|
+
debug disable_whereami: true, help: false
|
21
|
+
sleep 0.001
|
22
|
+
""",
|
23
|
+
File.realpath(__SUPERBARA_FILE__),
|
24
|
+
1
|
25
|
+
end.call
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
data/lib/superbara/dsl.rb
CHANGED
@@ -17,9 +17,9 @@ module Superbara; module DSL
|
|
17
17
|
return unless failed
|
18
18
|
|
19
19
|
if message
|
20
|
-
Superbara.output ("FAIL: ".colorize(:red) + message)
|
20
|
+
Superbara.output ("FAIL: ".colorize(:red) + message.inspect)
|
21
21
|
else
|
22
|
-
Superbara.output "FAIL
|
22
|
+
Superbara.output "FAIL".colorize(:red)
|
23
23
|
end
|
24
24
|
|
25
25
|
exit 1
|
@@ -86,19 +86,18 @@ return Array.from(
|
|
86
86
|
e.click
|
87
87
|
end
|
88
88
|
|
89
|
-
def export(e)
|
90
|
-
raise Superbara::Errors::ExportStopsError, Marshal.dump(e)
|
91
|
-
end
|
92
|
-
|
93
89
|
@@once_runs = []
|
94
|
-
def run(what,
|
95
|
-
|
90
|
+
def run(what, params={}, args={}, &block)
|
91
|
+
Superbara.last_context_return_value = nil
|
92
|
+
|
93
|
+
if args[:once] == true
|
96
94
|
if @@once_runs.include? what
|
97
95
|
if block
|
98
96
|
value = block.call
|
99
97
|
return value
|
100
98
|
else
|
101
|
-
|
99
|
+
Superbara.output "run #{what} skip"
|
100
|
+
return nil
|
102
101
|
end
|
103
102
|
else
|
104
103
|
@@once_runs << what
|
@@ -121,13 +120,10 @@ return Array.from(
|
|
121
120
|
Superbara.project_path = File.dirname(better_what)
|
122
121
|
end
|
123
122
|
|
124
|
-
export_object = nil
|
125
123
|
begin
|
126
|
-
Superbara.
|
124
|
+
Superbara::Context::Run.new better_what, params
|
127
125
|
rescue Superbara::Errors::NotDesiredTagError
|
128
|
-
rescue
|
129
|
-
export_object = Marshal.load ex.message
|
130
|
-
rescue Exception => ex
|
126
|
+
rescue => ex
|
131
127
|
if ENV["SUPERBARA_ON_ERROR"] == "continue"
|
132
128
|
colored_output = " ERROR: ".colorize(:red)
|
133
129
|
colored_output << ex.message
|
@@ -141,8 +137,7 @@ return Array.from(
|
|
141
137
|
end
|
142
138
|
|
143
139
|
Superbara.project_path = old_project_path
|
144
|
-
|
145
|
-
export_object
|
140
|
+
Superbara.last_context_return_value
|
146
141
|
end
|
147
142
|
|
148
143
|
def visit(visit_uri_or_domain_or_path)
|
@@ -242,6 +237,8 @@ return Array.from(
|
|
242
237
|
end
|
243
238
|
|
244
239
|
def wait(seconds=5, &block)
|
240
|
+
raise "block not given" unless block
|
241
|
+
|
245
242
|
def wait_formatted_output(status, took_delta)
|
246
243
|
word, color = if status
|
247
244
|
["ok", :green]
|
@@ -370,6 +367,3 @@ return Array.from(
|
|
370
367
|
Pry.start(binding.of_caller(1))
|
371
368
|
end
|
372
369
|
end; end
|
373
|
-
|
374
|
-
extend Capybara::DSL
|
375
|
-
extend Superbara::DSL # override Capybara methods
|
data/lib/superbara/version.rb
CHANGED
data/superbara.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency 'selenium-webdriver', '~> 3.12', '>= 3.12.0'
|
31
31
|
spec.add_dependency 'faker', '~> 1.8', '>= 1.8.7'
|
32
32
|
spec.add_dependency 'sinatra', '~> 2.0', '>= 2.0.1'
|
33
|
+
spec.add_dependency 'astrolabe', '~> 1.3', '>= 1.3.1'
|
33
34
|
|
34
35
|
spec.add_development_dependency 'bundler', '~> 1.15', '>= 1.15.0'
|
35
36
|
spec.add_development_dependency 'rake', '~> 10.0', '>= 10.0.0'
|
data/tests/all/main.rb
CHANGED
data/tests/common/main.rb
CHANGED
data/tests/envs/on_error/main.rb
CHANGED
@@ -2,14 +2,14 @@ first = run "first_failing"
|
|
2
2
|
second = run "second_ok"
|
3
3
|
third = run "third_failing"
|
4
4
|
|
5
|
-
assert
|
5
|
+
assert first do
|
6
6
|
first == nil
|
7
7
|
end
|
8
8
|
|
9
|
-
assert
|
9
|
+
assert second do
|
10
10
|
second == "second"
|
11
11
|
end
|
12
12
|
|
13
|
-
assert
|
13
|
+
assert third do
|
14
14
|
third == nil
|
15
15
|
end
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
return "second"
|
data/tests/features/find.rb
CHANGED
data/tests/minimal/main.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
hello = "local hello"
|
2
|
+
@hello = "instance hello"
|
3
|
+
|
4
|
+
assert local_variables.inspect do
|
5
|
+
local_variables == [:hello, :__SUPERBARA_FILE__, :__SUPERBARA_PARAMS__]
|
6
|
+
end
|
7
|
+
|
8
|
+
assert "instance" do
|
9
|
+
instance_variables == [:@hello]
|
10
|
+
end
|
11
|
+
|
12
|
+
"hello from minimal.rb"
|
data/tests/run/main.rb
CHANGED
@@ -1,2 +1,27 @@
|
|
1
1
|
run "has_instance_variables", first: "hello", second: "world"
|
2
|
+
|
3
|
+
assert "first" do
|
4
|
+
@first.nil?
|
5
|
+
end
|
6
|
+
|
7
|
+
assert "second" do
|
8
|
+
@first.nil?
|
9
|
+
end
|
10
|
+
|
2
11
|
run "has_no_instance_variables"
|
12
|
+
|
13
|
+
value = run "value"
|
14
|
+
|
15
|
+
assert "value" do
|
16
|
+
value == "hello"
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
values = []
|
21
|
+
3.times do
|
22
|
+
values << (run "once", {}, once: true)
|
23
|
+
end
|
24
|
+
|
25
|
+
assert "once" do
|
26
|
+
values == ["once", nil, nil]
|
27
|
+
end
|
data/tests/run/once.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
return "once"
|
data/tests/run/value.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"hello"
|
data/tests/tags/block.rb
CHANGED
data/tests/tags/notags.rb
CHANGED
data/tests/tags/simple.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: superbara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matti Paksula
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -150,6 +150,26 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 2.0.1
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: astrolabe
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '1.3'
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 1.3.1
|
163
|
+
type: :runtime
|
164
|
+
prerelease: false
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - "~>"
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '1.3'
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 1.3.1
|
153
173
|
- !ruby/object:Gem::Dependency
|
154
174
|
name: bundler
|
155
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -327,8 +347,12 @@ files:
|
|
327
347
|
- lib/superbara/cli.rb
|
328
348
|
- lib/superbara/config.rb
|
329
349
|
- lib/superbara/context.rb
|
350
|
+
- lib/superbara/context/base.rb
|
351
|
+
- lib/superbara/context/eval.rb
|
352
|
+
- lib/superbara/context/run.rb
|
353
|
+
- lib/superbara/context/shell.rb
|
354
|
+
- lib/superbara/context/start.rb
|
330
355
|
- lib/superbara/dsl.rb
|
331
|
-
- lib/superbara/errors/export_stops_error.rb
|
332
356
|
- lib/superbara/errors/not_desired_tag_error.rb
|
333
357
|
- lib/superbara/helpers.rb
|
334
358
|
- lib/superbara/rspec.rb
|
@@ -352,9 +376,12 @@ files:
|
|
352
376
|
- tests/features/type.rb
|
353
377
|
- tests/features/wait.rb
|
354
378
|
- tests/minimal/main.rb
|
379
|
+
- tests/minimal/minimal.rb
|
355
380
|
- tests/run/has_instance_variables.rb
|
356
381
|
- tests/run/has_no_instance_variables.rb
|
357
382
|
- tests/run/main.rb
|
383
|
+
- tests/run/once.rb
|
384
|
+
- tests/run/value.rb
|
358
385
|
- tests/tags/block.rb
|
359
386
|
- tests/tags/fails.rb
|
360
387
|
- tests/tags/main.rb
|