superbara 0.5.1 → 0.6.0
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/Dockerfile +3 -1
- data/Gemfile.lock +3 -1
- data/README.md +1 -1
- data/Rakefile +13 -1
- data/bin/release +0 -1
- data/bin/tests +27 -0
- data/docker-compose.test.yml +1 -1
- data/lib/pry_monkey.rb +2 -2
- data/lib/superbara/cli.rb +63 -14
- data/lib/superbara/dsl.rb +26 -4
- data/lib/superbara/version.rb +1 -1
- data/lib/superbara/web.rb +2 -1
- data/lib/superbara.rb +19 -0
- data/superbara.gemspec +1 -0
- data/tests/all/main.rb +15 -0
- data/tests/common/main.rb +4 -0
- data/{e2e → tests/common}/vars.rb +0 -0
- data/{e2e/init.rb → tests/common/webapp.rb} +0 -0
- data/tests/fail/main.rb +1 -0
- data/tests/features/examplecom.rb +9 -0
- data/tests/features/find.rb +17 -0
- data/tests/features/navigate.rb +37 -0
- data/{e2e → tests/features}/prompt.rb +5 -1
- data/{e2e → tests/features}/type.rb +1 -1
- data/{e2e → tests/features}/wait.rb +5 -1
- data/tests/minimal/main.rb +3 -0
- metadata +35 -9
- data/e2e/example.rb +0 -7
- data/e2e/main.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ffe6293f27192cca303e3024bd37faeeae3467f264f1052cca556823fd5a275d
|
4
|
+
data.tar.gz: 7df3dde796cb590b7b3a65057a9603bf6d5a61d364dec00d1e1f246252e6054c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16f2b79e5c269cccec533ea3df29ef9e0b0468efb6ce52732829e5e36ee69ae9810c0157fb84564d09e33d1ce70771f0a1cd4860144c50ef49fc2c759658686e
|
7
|
+
data.tar.gz: 31fb3c8a6210cdec887145ea4ce64f88825e8d0d8d106c49fd4816c13f3c0a01d3b25c18aa4ee02b5ff51b7863e07335e7e8534c9503e8a9cfea66ee16b0e9d1
|
data/Dockerfile
CHANGED
@@ -3,4 +3,6 @@ ARG version
|
|
3
3
|
COPY superbara-${version}.gem /tmp
|
4
4
|
RUN gem install /tmp/superbara-${version}.gem && rm /tmp/superbara-${version}.gem
|
5
5
|
|
6
|
-
|
6
|
+
WORKDIR /tests
|
7
|
+
CMD ["all"]
|
8
|
+
ENTRYPOINT ["/usr/local/bundle/bin/superbara", "run"]
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
superbara (0.
|
4
|
+
superbara (0.6.0)
|
5
5
|
binding_of_caller (~> 0.8, >= 0.8.0)
|
6
6
|
capybara (~> 3.1, >= 3.1.0)
|
7
7
|
chromedriver-helper (~> 1.2.0, >= 1.2.0)
|
@@ -44,6 +44,7 @@ GEM
|
|
44
44
|
i18n (1.0.1)
|
45
45
|
concurrent-ruby (~> 1.0)
|
46
46
|
io-like (0.3.0)
|
47
|
+
kommando (0.1.2)
|
47
48
|
method_source (0.9.0)
|
48
49
|
mini_mime (1.0.0)
|
49
50
|
mini_portile2 (2.3.0)
|
@@ -94,6 +95,7 @@ PLATFORMS
|
|
94
95
|
|
95
96
|
DEPENDENCIES
|
96
97
|
bundler (~> 1.15, >= 1.15.0)
|
98
|
+
kommando (~> 0.1, >= 0.1.2)
|
97
99
|
rake (~> 10.0, >= 10.0.0)
|
98
100
|
rspec (~> 3.7, >= 3.7.0)
|
99
101
|
superbara!
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -3,4 +3,16 @@ require "rspec/core/rake_task"
|
|
3
3
|
|
4
4
|
RSpec::Core::RakeTask.new(:spec)
|
5
5
|
|
6
|
-
task :default => :spec
|
6
|
+
task :default => [:spec, :superbara]
|
7
|
+
|
8
|
+
task :superbara do
|
9
|
+
require 'kommando'
|
10
|
+
|
11
|
+
k = Kommando.new "bin/tests", {
|
12
|
+
output: true
|
13
|
+
}
|
14
|
+
|
15
|
+
k.run
|
16
|
+
|
17
|
+
raise "not clean" unless k.code == 0
|
18
|
+
end
|
data/bin/release
CHANGED
data/bin/tests
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env sh
|
2
|
+
set -e
|
3
|
+
tests="all minimal"
|
4
|
+
|
5
|
+
for test in $tests; do
|
6
|
+
set +e
|
7
|
+
exe/superbara run tests/$test
|
8
|
+
exit_status=$?
|
9
|
+
set -e
|
10
|
+
|
11
|
+
if [ "$exit_status" != 0 ]; then
|
12
|
+
echo "err!"
|
13
|
+
exit 1
|
14
|
+
fi
|
15
|
+
done
|
16
|
+
|
17
|
+
set +e
|
18
|
+
exe/superbara run tests/fail
|
19
|
+
exit_status=$?
|
20
|
+
set -e
|
21
|
+
|
22
|
+
if [ "$exit_status" != 1 ]; then
|
23
|
+
echo "err!"
|
24
|
+
exit 1
|
25
|
+
fi
|
26
|
+
|
27
|
+
echo "success!"
|
data/docker-compose.test.yml
CHANGED
data/lib/pry_monkey.rb
CHANGED
@@ -71,8 +71,8 @@ Pry.commands.alias_command 'n', 'next'
|
|
71
71
|
Pry.commands.alias_command 'h', 'help'
|
72
72
|
|
73
73
|
Pry::Commands.command /^e$/, "edit" do
|
74
|
-
|
75
|
-
|
74
|
+
output = `superbara edit #{Superbara.project_path}`
|
75
|
+
puts output
|
76
76
|
end
|
77
77
|
|
78
78
|
Pry::Commands.command /^help$/, "help" do
|
data/lib/superbara/cli.rb
CHANGED
@@ -5,6 +5,26 @@ module Superbara; module CLI
|
|
5
5
|
case main_command
|
6
6
|
when "version"
|
7
7
|
puts Superbara::VERSION
|
8
|
+
exit 0
|
9
|
+
when "edit"
|
10
|
+
editor_cmd = if ENV["SUPERBARA_EDITOR"]
|
11
|
+
ENV["SUPERBARA_EDITOR"]
|
12
|
+
elsif ENV["EDITOR"]
|
13
|
+
ENV["EDITOR"]
|
14
|
+
else
|
15
|
+
'open'
|
16
|
+
end
|
17
|
+
|
18
|
+
dir_or_file = ARGV[1]
|
19
|
+
|
20
|
+
puts "Opening #{dir_or_file} with #{editor_cmd} .."
|
21
|
+
|
22
|
+
if editor_cmd == "nano"
|
23
|
+
exec "#{editor_cmd} #{dir_or_file}"
|
24
|
+
else
|
25
|
+
`#{editor_cmd} #{dir_or_file}`
|
26
|
+
end
|
27
|
+
|
8
28
|
exit 0
|
9
29
|
when "web", "shell"
|
10
30
|
#
|
@@ -20,18 +40,24 @@ module Superbara; module CLI
|
|
20
40
|
exit 1
|
21
41
|
end
|
22
42
|
|
23
|
-
contents = """visit
|
43
|
+
contents = """visit 'example.com'
|
24
44
|
|
25
45
|
wait 3 do
|
26
|
-
has_text?
|
46
|
+
has_text? 'Example Domain'
|
27
47
|
end
|
28
|
-
|
48
|
+
|
29
49
|
think 1..3
|
30
|
-
|
50
|
+
|
51
|
+
click 'a'
|
31
52
|
scroll 50
|
32
53
|
"""
|
33
54
|
Dir.mkdir project_name
|
34
55
|
File.write File.join(project_name, "main.rb"), contents
|
56
|
+
|
57
|
+
puts "Created directory #{project_name} with main.rb"
|
58
|
+
puts "Start testing with:"
|
59
|
+
puts ""
|
60
|
+
puts " superbara start #{project_name}"
|
35
61
|
exit 0
|
36
62
|
else
|
37
63
|
unless ARGV[1]
|
@@ -48,13 +74,26 @@ scroll 50
|
|
48
74
|
"""
|
49
75
|
exit 1
|
50
76
|
end
|
77
|
+
end
|
51
78
|
|
52
|
-
|
79
|
+
case main_command
|
80
|
+
when "start", "run"
|
81
|
+
project_path_or_file_expanded = File.expand_path(ARGV[1])
|
53
82
|
|
54
|
-
Superbara.project_path = if Dir.exists?
|
55
|
-
|
83
|
+
Superbara.project_path, project_entrypoint = if Dir.exists? project_path_or_file_expanded
|
84
|
+
unless File.exist? File.join(project_path_or_file_expanded, "main.rb")
|
85
|
+
puts "No main.rb found in #{project_path_or_file_expanded}"
|
86
|
+
puts "Alternatively you can also specify the file name."
|
87
|
+
exit 1
|
88
|
+
end
|
89
|
+
[project_path_or_file_expanded, "main.rb"]
|
90
|
+
elsif File.exists? project_path_or_file_expanded
|
91
|
+
[
|
92
|
+
File.dirname(project_path_or_file_expanded),
|
93
|
+
File.basename(project_path_or_file_expanded)
|
94
|
+
]
|
56
95
|
else
|
57
|
-
puts "#{
|
96
|
+
puts "#{project_path_or_file_expanded} is not a directory or a file"
|
58
97
|
exit 1
|
59
98
|
end
|
60
99
|
end
|
@@ -68,7 +107,7 @@ scroll 50
|
|
68
107
|
begin
|
69
108
|
case main_command
|
70
109
|
when "web"
|
71
|
-
webapp = Superbara::Web.new
|
110
|
+
webapp = Superbara::Web.new port: (ENV['SUPERBARA_WEB_PORT'] || 4567)
|
72
111
|
webapp.run!
|
73
112
|
exit 0
|
74
113
|
when "shell"
|
@@ -90,11 +129,16 @@ scroll 50
|
|
90
129
|
puts ""
|
91
130
|
puts "t action".colorize(:light_black)
|
92
131
|
Superbara.start!
|
93
|
-
Superbara.
|
94
|
-
|
95
|
-
|
132
|
+
Superbara.visual_disabled do
|
133
|
+
Superbara.current_context.__superbara_eval "visit 'about:blank'"
|
134
|
+
end
|
96
135
|
|
97
|
-
|
136
|
+
case main_command
|
137
|
+
when "start"
|
138
|
+
Superbara.visual_enable!
|
139
|
+
end
|
140
|
+
|
141
|
+
Superbara.current_context.__superbara_load(File.join(Superbara.project_path, project_entrypoint))
|
98
142
|
|
99
143
|
puts """
|
100
144
|
🏁 🏁 🏁 done."""
|
@@ -126,7 +170,12 @@ scroll 50
|
|
126
170
|
in #{offending_file_path}:#{offending_line}
|
127
171
|
#{offending_line}: #{offending_code}""".colorize(:light_black)
|
128
172
|
|
129
|
-
|
173
|
+
case main_command
|
174
|
+
when "start"
|
175
|
+
Superbara.current_context.__superbara_debug
|
176
|
+
else
|
177
|
+
exit 1
|
178
|
+
end
|
130
179
|
end
|
131
180
|
end
|
132
181
|
end
|
data/lib/superbara/dsl.rb
CHANGED
@@ -3,7 +3,15 @@ module Superbara; module DSL
|
|
3
3
|
#"Superbara::DSL included in #{includer.inspect}"
|
4
4
|
end
|
5
5
|
|
6
|
-
def
|
6
|
+
def assert(message=nil, &block)
|
7
|
+
failed = if block
|
8
|
+
!block.call
|
9
|
+
else
|
10
|
+
true
|
11
|
+
end
|
12
|
+
|
13
|
+
return unless failed
|
14
|
+
|
7
15
|
if message
|
8
16
|
Superbara.output ("FAIL: ".colorize(:red) + message)
|
9
17
|
else
|
@@ -73,11 +81,25 @@ return Array.from(
|
|
73
81
|
@@once_runs << what
|
74
82
|
end
|
75
83
|
end
|
76
|
-
|
77
84
|
Superbara.output "run #{what}"
|
78
85
|
Superbara.toast "run #{what}" if Superbara.visual?
|
79
86
|
|
80
|
-
|
87
|
+
what_expanded = File.expand_path(File.join(Superbara.project_path, what))
|
88
|
+
better_what = if Dir.exist? what_expanded
|
89
|
+
File.join what_expanded, "main.rb"
|
90
|
+
elsif what_expanded.end_with? ".rb"
|
91
|
+
what_expanded
|
92
|
+
else
|
93
|
+
"#{what_expanded}.rb"
|
94
|
+
end
|
95
|
+
|
96
|
+
old_project_path = Superbara.project_path
|
97
|
+
unless Superbara.project_path == File.dirname(better_what)
|
98
|
+
Superbara.project_path = File.dirname(better_what)
|
99
|
+
end
|
100
|
+
|
101
|
+
Superbara.current_context.__superbara_load(better_what)
|
102
|
+
Superbara.project_path = old_project_path
|
81
103
|
end
|
82
104
|
|
83
105
|
def visit(visit_uri_or_domain_or_path)
|
@@ -255,7 +277,7 @@ return Array.from(
|
|
255
277
|
q - exit to shell"""
|
256
278
|
|
257
279
|
debug_header_prefix = "== DEBUG "
|
258
|
-
debug_header_suffix = "=" * (IO.console.winsize.last - debug_header_prefix.size)
|
280
|
+
debug_header_suffix = "=" * (IO.console.winsize.last - debug_header_prefix.size).abs
|
259
281
|
|
260
282
|
if help
|
261
283
|
puts """
|
data/lib/superbara/version.rb
CHANGED
data/lib/superbara/web.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'sinatra/base'
|
2
2
|
|
3
3
|
module Superbara; class Web
|
4
|
-
def initialize(access_log: true, server_bind: '127.0.0.1')
|
4
|
+
def initialize(access_log: true, server_bind: '127.0.0.1', port: 4567)
|
5
5
|
@webapp = Sinatra.new do
|
6
6
|
root_path = File.join(File.dirname(__FILE__), "..", "..", "web")
|
7
7
|
|
@@ -11,6 +11,7 @@ module Superbara; class Web
|
|
11
11
|
|
12
12
|
set :bind, server_bind
|
13
13
|
set :root, root_path
|
14
|
+
set :port, port
|
14
15
|
|
15
16
|
get '/' do
|
16
17
|
File.read(File.join(root_path,"public", "index.html"))
|
data/lib/superbara.rb
CHANGED
@@ -46,6 +46,25 @@ module Superbara
|
|
46
46
|
return true if ENV["SUPERBARA_VISUAL"]
|
47
47
|
end
|
48
48
|
|
49
|
+
def self.visual_disabled(&block)
|
50
|
+
env_was_set = if ENV["SUPERBARA_VISUAL"]
|
51
|
+
ENV.delete "SUPERBARA_VISUAL"
|
52
|
+
true
|
53
|
+
end
|
54
|
+
|
55
|
+
visual_was_set = if Superbara.visual?
|
56
|
+
self.visual_disable!
|
57
|
+
true
|
58
|
+
end
|
59
|
+
|
60
|
+
value = block.call
|
61
|
+
|
62
|
+
ENV["SUPERBARA_VISUAL"] = "true" if env_was_set
|
63
|
+
Superbara.visual_enable! if visual_was_set
|
64
|
+
|
65
|
+
value
|
66
|
+
end
|
67
|
+
|
49
68
|
def self.visual_enable!
|
50
69
|
@@visual = true
|
51
70
|
end
|
data/superbara.gemspec
CHANGED
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'bundler', '~> 1.15', '>= 1.15.0'
|
33
33
|
spec.add_development_dependency 'rake', '~> 10.0', '>= 10.0.0'
|
34
34
|
spec.add_development_dependency 'rspec', '~> 3.7', '>= 3.7.0'
|
35
|
+
spec.add_development_dependency 'kommando', '~> 0.1', '>= 0.1.2'
|
35
36
|
end
|
data/tests/all/main.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
run "../common", once: true
|
2
|
+
|
3
|
+
wait "3" do
|
4
|
+
has_text? "Superbara"
|
5
|
+
end
|
6
|
+
|
7
|
+
for feature_path in Dir.glob("tests/features/*.rb") do
|
8
|
+
feature_file = "../features/#{File.basename(feature_path)}"
|
9
|
+
|
10
|
+
puts """
|
11
|
+
|
12
|
+
RUNNING: #{feature_file}
|
13
|
+
"""
|
14
|
+
run "../features/#{File.basename(feature_path)}"
|
15
|
+
end
|
File without changes
|
File without changes
|
data/tests/fail/main.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
asdf
|
@@ -0,0 +1,17 @@
|
|
1
|
+
run "../common"
|
2
|
+
|
3
|
+
h1 = find "h1"
|
4
|
+
assert h1.text do
|
5
|
+
h1.text == "Superbara"
|
6
|
+
end
|
7
|
+
|
8
|
+
h1_text = find "h1", text: "Superbara"
|
9
|
+
assert h1_text.text do
|
10
|
+
h1_text.text == "Superbara"
|
11
|
+
end
|
12
|
+
|
13
|
+
another = find "a", text: "Another"
|
14
|
+
assert another.text do
|
15
|
+
another.text == "Another page"
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
run "../common"
|
2
|
+
|
3
|
+
click_link "Another page"
|
4
|
+
|
5
|
+
assert current_url do
|
6
|
+
current_url.end_with? "/another.html"
|
7
|
+
end
|
8
|
+
|
9
|
+
back
|
10
|
+
|
11
|
+
assert current_url do
|
12
|
+
current_url.end_with? "/"
|
13
|
+
end
|
14
|
+
|
15
|
+
forward
|
16
|
+
|
17
|
+
assert current_url do
|
18
|
+
current_url.end_with? "/another.html"
|
19
|
+
end
|
20
|
+
|
21
|
+
back
|
22
|
+
|
23
|
+
visit "/__superbara/wait"
|
24
|
+
|
25
|
+
wait 0.8 do
|
26
|
+
has_text? "500ms"
|
27
|
+
end
|
28
|
+
|
29
|
+
reload
|
30
|
+
|
31
|
+
assert text do
|
32
|
+
! text.match? "500ms"
|
33
|
+
end
|
34
|
+
|
35
|
+
wait 0.8 do
|
36
|
+
has_text? "500ms"
|
37
|
+
end
|
@@ -1,7 +1,11 @@
|
|
1
|
+
run "../common"
|
2
|
+
|
1
3
|
visit "/__superbara/prompt"
|
2
4
|
|
3
5
|
message = accept_prompt with: 'Linda Liukas' do
|
4
6
|
click_link 'Author Quiz!'
|
5
7
|
end
|
6
8
|
|
7
|
-
|
9
|
+
assert message do
|
10
|
+
message == 'Who is the author of Hello Ruby?'
|
11
|
+
end
|
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.6.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-05-
|
11
|
+
date: 2018-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -230,6 +230,26 @@ dependencies:
|
|
230
230
|
- - ">="
|
231
231
|
- !ruby/object:Gem::Version
|
232
232
|
version: 3.7.0
|
233
|
+
- !ruby/object:Gem::Dependency
|
234
|
+
name: kommando
|
235
|
+
requirement: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - "~>"
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: '0.1'
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: 0.1.2
|
243
|
+
type: :development
|
244
|
+
prerelease: false
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - "~>"
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '0.1'
|
250
|
+
- - ">="
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: 0.1.2
|
233
253
|
description: Better way to build Capybara tests
|
234
254
|
email:
|
235
255
|
- matti.paksula@iki.fi
|
@@ -252,16 +272,10 @@ files:
|
|
252
272
|
- bin/autotest
|
253
273
|
- bin/console
|
254
274
|
- bin/release
|
275
|
+
- bin/tests
|
255
276
|
- docker-compose.build.yml
|
256
277
|
- docker-compose.test.yml
|
257
278
|
- docker-compose.yml
|
258
|
-
- e2e/example.rb
|
259
|
-
- e2e/init.rb
|
260
|
-
- e2e/main.rb
|
261
|
-
- e2e/prompt.rb
|
262
|
-
- e2e/type.rb
|
263
|
-
- e2e/vars.rb
|
264
|
-
- e2e/wait.rb
|
265
279
|
- exe/superbara
|
266
280
|
- lib/capybara_monkey.rb
|
267
281
|
- lib/pry_monkey.rb
|
@@ -276,6 +290,18 @@ files:
|
|
276
290
|
- lib/superbara/version.rb
|
277
291
|
- lib/superbara/web.rb
|
278
292
|
- superbara.gemspec
|
293
|
+
- tests/all/main.rb
|
294
|
+
- tests/common/main.rb
|
295
|
+
- tests/common/vars.rb
|
296
|
+
- tests/common/webapp.rb
|
297
|
+
- tests/fail/main.rb
|
298
|
+
- tests/features/examplecom.rb
|
299
|
+
- tests/features/find.rb
|
300
|
+
- tests/features/navigate.rb
|
301
|
+
- tests/features/prompt.rb
|
302
|
+
- tests/features/type.rb
|
303
|
+
- tests/features/wait.rb
|
304
|
+
- tests/minimal/main.rb
|
279
305
|
- web/public/1.html
|
280
306
|
- web/public/2.html
|
281
307
|
- web/public/3.html
|
data/e2e/example.rb
DELETED
data/e2e/main.rb
DELETED