superbara 0.4.1 → 0.5.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/.kung/build/hooks/post-build +2 -9
- data/Dockerfile +1 -2
- data/Gemfile.lock +22 -6
- data/README.md +168 -8
- data/bin/console +1 -2
- data/docker-compose.test.yml +2 -2
- data/e2e/example.rb +7 -0
- data/e2e/init.rb +2 -0
- data/e2e/main.rb +14 -5
- data/e2e/prompt.rb +7 -0
- data/e2e/type.rb +4 -0
- data/e2e/vars.rb +5 -0
- data/e2e/wait.rb +7 -0
- data/exe/superbara +9 -2
- data/lib/capybara_monkey.rb +131 -40
- data/lib/pry_monkey.rb +44 -21
- data/lib/selenium_monkey.rb +42 -0
- data/lib/superbara/chrome.rb +7 -4
- data/lib/superbara/cli.rb +132 -0
- data/lib/superbara/context.rb +57 -0
- data/lib/superbara/dsl.rb +170 -13
- data/lib/superbara/helpers.rb +36 -14
- data/lib/superbara/rspec.rb +3 -2
- data/lib/superbara/version.rb +1 -1
- data/lib/superbara/web.rb +34 -0
- data/lib/superbara.rb +129 -9
- data/superbara.gemspec +4 -3
- data/{www → web/public}/1.html +0 -0
- data/{www → web/public}/2.html +0 -0
- data/{www → web/public}/3.html +0 -0
- data/{www → web/public}/another.html +0 -0
- data/web/public/index.html +16 -0
- data/web/views/layout.erb +3 -0
- data/web/views/long.erb +3 -0
- data/web/views/prompt.erb +10 -0
- data/web/views/wait.erb +8 -0
- metadata +70 -18
- data/lib/supershell +0 -158
- data/support/templates/test.rb +0 -6
- data/www/index.html +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d3ed6c4088db72ad7e50b5add522ca21e0e047da90c19805fd0e644b37ed174
|
4
|
+
data.tar.gz: de565273eae1360e53eeca61cf61821f3dfb353e863a5b6551c3522ccde3b041
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b09ae0bb806790c3090f495fa66502ee80cf9505b68379caaed1d52418a3a5016ac1074cda88b5ac5fa3006c469158e6ecff42c34d465e9b35df88d82b4e1677
|
7
|
+
data.tar.gz: 1597e47aecfab3de8c46deb32bc0bf1800ae8cb0cada1a1ffdc3928cd7bede4743fc80ed395cc6ebccbe51016b823f2f09e8f0b6908e46190929b3401a65c4f3
|
@@ -1,9 +1,2 @@
|
|
1
|
-
|
2
|
-
kung rc
|
3
|
-
kung rc superbara
|
4
|
-
kung stop chrome superbara
|
5
|
-
|
6
|
-
kung rc chrome
|
7
|
-
export CHROME_URL=http://localhost:14444/wd/hub
|
8
|
-
echo q | exe/superbara run e2e
|
9
|
-
kung stop
|
1
|
+
KUNG_ENV=test KUNG_FRONTEND=noninteractive kung rc chrome
|
2
|
+
KUNG_ENV=test kung rc superbara
|
data/Dockerfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
superbara (0.
|
4
|
+
superbara (0.5.0)
|
5
5
|
binding_of_caller (~> 0.8, >= 0.8.0)
|
6
|
-
capybara (~> 3.
|
6
|
+
capybara (~> 3.1, >= 3.1.0)
|
7
7
|
chromedriver-helper (~> 1.2.0, >= 1.2.0)
|
8
8
|
colorize (~> 0.8, >= 0.8.1)
|
9
|
+
faker (~> 1.8, >= 1.8.7)
|
9
10
|
pry-byebug (~> 3.6, >= 3.6.0)
|
10
|
-
selenium-webdriver (~> 3.
|
11
|
+
selenium-webdriver (~> 3.12, >= 3.12.0)
|
12
|
+
sinatra (~> 2.0, >= 2.0.1)
|
11
13
|
|
12
14
|
GEM
|
13
15
|
remote: https://rubygems.org/
|
@@ -19,7 +21,7 @@ GEM
|
|
19
21
|
binding_of_caller (0.8.0)
|
20
22
|
debug_inspector (>= 0.0.1)
|
21
23
|
byebug (10.0.2)
|
22
|
-
capybara (3.
|
24
|
+
capybara (3.1.0)
|
23
25
|
addressable
|
24
26
|
mini_mime (>= 0.1.3)
|
25
27
|
nokogiri (~> 1.8)
|
@@ -33,13 +35,19 @@ GEM
|
|
33
35
|
nokogiri (~> 1.8)
|
34
36
|
coderay (1.1.2)
|
35
37
|
colorize (0.8.1)
|
38
|
+
concurrent-ruby (1.0.5)
|
36
39
|
debug_inspector (0.0.3)
|
37
40
|
diff-lcs (1.3)
|
41
|
+
faker (1.8.7)
|
42
|
+
i18n (>= 0.7)
|
38
43
|
ffi (1.9.23)
|
44
|
+
i18n (1.0.1)
|
45
|
+
concurrent-ruby (~> 1.0)
|
39
46
|
io-like (0.3.0)
|
40
47
|
method_source (0.9.0)
|
41
48
|
mini_mime (1.0.0)
|
42
49
|
mini_portile2 (2.3.0)
|
50
|
+
mustermann (1.0.2)
|
43
51
|
nokogiri (1.8.2)
|
44
52
|
mini_portile2 (~> 2.3.0)
|
45
53
|
pry (0.11.3)
|
@@ -49,7 +57,9 @@ GEM
|
|
49
57
|
byebug (~> 10.0)
|
50
58
|
pry (~> 0.10)
|
51
59
|
public_suffix (3.0.2)
|
52
|
-
rack (2.0.
|
60
|
+
rack (2.0.5)
|
61
|
+
rack-protection (2.0.1)
|
62
|
+
rack
|
53
63
|
rack-test (1.0.0)
|
54
64
|
rack (>= 1.0, < 3)
|
55
65
|
rake (10.5.0)
|
@@ -67,9 +77,15 @@ GEM
|
|
67
77
|
rspec-support (~> 3.7.0)
|
68
78
|
rspec-support (3.7.1)
|
69
79
|
rubyzip (1.2.1)
|
70
|
-
selenium-webdriver (3.
|
80
|
+
selenium-webdriver (3.12.0)
|
71
81
|
childprocess (~> 0.5)
|
72
82
|
rubyzip (~> 1.2)
|
83
|
+
sinatra (2.0.1)
|
84
|
+
mustermann (~> 1.0)
|
85
|
+
rack (~> 2.0)
|
86
|
+
rack-protection (= 2.0.1)
|
87
|
+
tilt (~> 2.0)
|
88
|
+
tilt (2.0.8)
|
73
89
|
xpath (3.0.0)
|
74
90
|
nokogiri (~> 1.8)
|
75
91
|
|
data/README.md
CHANGED
@@ -1,22 +1,182 @@
|
|
1
1
|
# Superbara
|
2
2
|
|
3
|
+
Web app test scripting that does not hurt.
|
4
|
+
|
5
|
+
- Based on Capybara: everything is just better and more natural
|
6
|
+
- All batteries included: just start scripting, nothing extra required
|
7
|
+
- A powerful command line interface with interactive debugger
|
8
|
+
- The most natural test language that is still programming, see:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
visit "mysite.com"
|
12
|
+
wait 3 do
|
13
|
+
has_text? "welcome"
|
14
|
+
end
|
15
|
+
|
16
|
+
scroll 20
|
17
|
+
click_link "enter"
|
18
|
+
|
19
|
+
name_field = find "input#name"
|
20
|
+
name_field.type "Sarah", :enter
|
21
|
+
|
22
|
+
if has_text? "Welcome, Sarah"
|
23
|
+
run "logout"
|
24
|
+
else
|
25
|
+
fail "no greeting visible"
|
26
|
+
end
|
3
27
|
```
|
28
|
+
|
29
|
+
## Install & Usage
|
30
|
+
|
31
|
+
```shell
|
4
32
|
gem install superbara
|
5
|
-
mkdir tests
|
6
|
-
cd tests
|
7
33
|
superbara init example
|
8
34
|
superbara start example
|
35
|
+
superbara usage
|
36
|
+
```
|
37
|
+
|
38
|
+
## Some things that Superbara does that Capybara does not:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
# find+click in one line!
|
42
|
+
click 'h1'
|
43
|
+
|
44
|
+
# wait up to 3 seconds for block to return something else than nil or false
|
45
|
+
wait 3 do
|
46
|
+
has_text? "Welcome"
|
47
|
+
end
|
48
|
+
|
49
|
+
wait 3.1 do
|
50
|
+
find "#username"
|
51
|
+
end
|
52
|
+
|
53
|
+
# simulates real typing
|
54
|
+
textarea = find "textarea"
|
55
|
+
textarea.type "hello", :backspace, :backspace, :backspace, "sinki", :enter
|
56
|
+
|
57
|
+
# scrolling
|
58
|
+
scroll 50
|
59
|
+
scroll -20, duration: 4
|
60
|
+
|
61
|
+
# works also without http://
|
62
|
+
visit 'example.com'
|
63
|
+
|
64
|
+
# highlights when in interactive mode or SUPERBARA_VISUAL env is set
|
65
|
+
find "h1"
|
66
|
+
|
67
|
+
# runs project/file.rb
|
68
|
+
run "vars"
|
69
|
+
|
70
|
+
# possible to run just once per session (superbara start) to speed up
|
71
|
+
run "login", once: true
|
72
|
+
|
73
|
+
# ..and do something when already ran
|
74
|
+
run "login", once: true do
|
75
|
+
# when already logged in
|
76
|
+
visit "http://www.example.com/main"
|
77
|
+
end
|
78
|
+
|
79
|
+
# opens debugger when exception happens or when the test finishes or
|
80
|
+
debug
|
81
|
+
|
82
|
+
# back, forward, reload (and not only go_back, go_forward, refresh)
|
83
|
+
back
|
84
|
+
forward
|
85
|
+
reload
|
86
|
+
|
87
|
+
# natural sleeps, sleep between 2 and 4 seconds
|
88
|
+
think 2..4
|
89
|
+
```
|
90
|
+
|
91
|
+
Everything that works in Capybara, works in Superbara, see https://github.com/teamcapybara/capybara/#the-dsl
|
92
|
+
|
93
|
+
Quick Reference:
|
9
94
|
```
|
95
|
+
click_link 'id-of-link'
|
96
|
+
click_link 'Link Text'
|
97
|
+
click_button 'Save'
|
98
|
+
click_on 'Link Text' || click_on 'Button Value'
|
99
|
+
click_text 'get started'
|
100
|
+
|
101
|
+
find 'h1'
|
102
|
+
find_field('First Name').value
|
103
|
+
find_field(id: 'my_field').value
|
104
|
+
find_link('Hello', :visible => :all).visible?
|
105
|
+
find_link(class: ['some_class', 'some_other_class'], visible: :all).visible?
|
106
|
+
|
107
|
+
find_button('Send').click
|
108
|
+
find_button(value: '1234').click
|
109
|
+
|
110
|
+
find(:xpath, ".//table/tr").click
|
111
|
+
find("#overlay").find("h1").click
|
112
|
+
for a in all('a') do
|
113
|
+
if a[:href].include? "about"
|
114
|
+
a.click
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
img_boxed = find('img') do |el|
|
119
|
+
el['data-box'] == true
|
120
|
+
end
|
121
|
+
|
122
|
+
within '#menu' do
|
123
|
+
click 'a', text: 'Pricing'
|
124
|
+
end
|
125
|
+
|
126
|
+
within_table 'Employee' do
|
127
|
+
fill_in 'Name', with: 'Sarah'
|
128
|
+
end
|
129
|
+
|
130
|
+
within_fieldset 'Employee' do
|
131
|
+
...
|
132
|
+
end
|
133
|
+
|
134
|
+
facebook_window = window_opened_by do
|
135
|
+
click_button 'Like'
|
136
|
+
end
|
137
|
+
|
138
|
+
within_window facebook_window do
|
139
|
+
find('#login_email').type 'a@example.com'
|
140
|
+
find('#login_password').type 'qwerty'
|
141
|
+
click_button 'Submit'
|
142
|
+
end
|
143
|
+
|
144
|
+
execute_script "document.querySelector("#name").style.border = '1px solid red';"
|
145
|
+
|
146
|
+
value = evaluate_script "window.innerHeight"
|
147
|
+
|
148
|
+
accept_alert do
|
149
|
+
click_link 'Show Alert'
|
150
|
+
end
|
151
|
+
|
152
|
+
dismiss_confirm do
|
153
|
+
click_link 'Show Confirm'
|
154
|
+
end
|
10
155
|
|
156
|
+
message = accept_prompt with: 'Linda Liukas' do
|
157
|
+
click_link 'Author Quiz!'
|
158
|
+
end
|
159
|
+
message = 'Who is the author of Hello Ruby?'
|
11
160
|
|
12
|
-
|
161
|
+
has_selector? 'table tr'
|
162
|
+
has_no_selector? 'table tr'
|
13
163
|
|
14
|
-
|
15
|
-
https://github.com/teamcapybara/capybara/blob/master/History.md
|
164
|
+
has_selector? :xpath, './/table/tr'
|
16
165
|
|
166
|
+
has_xpath? './/table/tr'
|
167
|
+
has_no_xpath? './/table/tr'
|
168
|
+
has_css? 'table tr.foo'
|
169
|
+
has_no_css? 'table tr.foo'
|
17
170
|
|
18
|
-
|
171
|
+
has_content? 'foo'
|
172
|
+
has_no_content? 'foo'
|
173
|
+
has_text? 'foo'
|
174
|
+
has_no_text? 'foo'
|
19
175
|
|
176
|
+
fill_in 'First Name', with: 'Johwn'
|
177
|
+
choose 'A Radio Button'
|
178
|
+
check 'A Checkbox'
|
179
|
+
uncheck 'A Checkbox'
|
180
|
+
attach_file 'Image', File.join(Dir.pwd,'image.jpg')
|
181
|
+
select 'Option', from: 'Select Box'
|
20
182
|
```
|
21
|
-
$ rake release
|
22
|
-
```
|
data/bin/console
CHANGED
data/docker-compose.test.yml
CHANGED
@@ -3,11 +3,11 @@ version: '3.6'
|
|
3
3
|
services:
|
4
4
|
superbara:
|
5
5
|
image: mattipaksula/superbara
|
6
|
-
command: e2e
|
7
6
|
environment:
|
8
7
|
- SUPERBARA_FRONTEND=noninteractive
|
8
|
+
- CHROME_URL=http://chrome:4444/wd/hub
|
9
9
|
volumes:
|
10
|
-
- ./e2e:/
|
10
|
+
- ./e2e:/e2e
|
11
11
|
depends_on:
|
12
12
|
- chrome
|
13
13
|
chrome:
|
data/e2e/example.rb
ADDED
data/e2e/init.rb
ADDED
data/e2e/main.rb
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
run "init", once: true
|
2
|
+
run "vars"
|
3
|
+
|
4
|
+
visit "#{$test_host}:4567"
|
5
|
+
wait "3" do
|
6
|
+
has_text? "Superbara"
|
3
7
|
end
|
4
8
|
|
5
|
-
|
9
|
+
run "wait"
|
10
|
+
run "prompt"
|
11
|
+
run "type"
|
12
|
+
|
13
|
+
run "example", once: true do
|
14
|
+
visit "example.com"
|
15
|
+
end
|
6
16
|
|
7
|
-
|
8
|
-
h1.highlight
|
17
|
+
find "h1"
|
data/e2e/prompt.rb
ADDED
data/e2e/type.rb
ADDED
data/e2e/vars.rb
ADDED
data/e2e/wait.rb
ADDED
data/exe/superbara
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
|
4
|
+
# add lib to libpath (only needed when running from the sources)
|
5
|
+
require 'pathname'
|
6
|
+
lib_path = File.expand_path('../../lib', Pathname.new(__FILE__).realpath)
|
7
|
+
$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
4
8
|
|
5
|
-
|
9
|
+
STDOUT.sync = true
|
10
|
+
|
11
|
+
require 'superbara'
|
12
|
+
Superbara::CLI.run!
|
data/lib/capybara_monkey.rb
CHANGED
@@ -1,49 +1,140 @@
|
|
1
|
+
module Superbara
|
2
|
+
module CapybaraMonkey
|
3
|
+
module Node
|
4
|
+
class Element
|
5
|
+
module Includes
|
6
|
+
def type(*text)
|
7
|
+
self.native.type(*text)
|
8
|
+
end
|
9
|
+
|
10
|
+
def show(styles: nil, remove_highlight: 0.1)
|
11
|
+
execute_script "scrollTo(#{self.native.location.x}, #{self.native.location.y-200})"
|
12
|
+
styles = [
|
13
|
+
{
|
14
|
+
"border" => "20px dashed Aqua"
|
15
|
+
}
|
16
|
+
] unless styles
|
17
|
+
|
18
|
+
for style in styles
|
19
|
+
Superbara::Helpers.highlight_element(self, style, remove_highlight)
|
20
|
+
if styles.size > 1
|
21
|
+
sleep 0.05
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
self
|
26
|
+
end
|
27
|
+
end #Includes
|
28
|
+
|
29
|
+
module Prepends
|
30
|
+
def click(*keys, **offset)
|
31
|
+
if Superbara.visual?
|
32
|
+
sleep 0.1
|
33
|
+
self.show(styles: [{"border" => "10px dashed GreenYellow"}], remove_highlight: 0.1)
|
34
|
+
end
|
35
|
+
Superbara.output "click #{self.tag_name} '#{self.text}'"
|
36
|
+
super *keys, **offset
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end #Element
|
40
|
+
end #Node
|
41
|
+
|
42
|
+
class Result
|
43
|
+
module Includes
|
44
|
+
def second
|
45
|
+
self[1]
|
46
|
+
end
|
47
|
+
def third
|
48
|
+
self[2]
|
49
|
+
end
|
50
|
+
def fourth
|
51
|
+
self[3]
|
52
|
+
end
|
53
|
+
def fifth
|
54
|
+
self[4]
|
55
|
+
end
|
56
|
+
# active support stops herew
|
57
|
+
def sixth
|
58
|
+
self[5]
|
59
|
+
end
|
60
|
+
def seventh
|
61
|
+
self[6]
|
62
|
+
end
|
63
|
+
def eight
|
64
|
+
self[7]
|
65
|
+
end
|
66
|
+
def ninth
|
67
|
+
self[8]
|
68
|
+
end
|
69
|
+
def tenth
|
70
|
+
self[9]
|
71
|
+
end
|
72
|
+
# also
|
73
|
+
def random
|
74
|
+
self[rand(self.size)]
|
75
|
+
end
|
76
|
+
def middle
|
77
|
+
self[self.size/2]
|
78
|
+
end
|
79
|
+
|
80
|
+
def show(styles=nil)
|
81
|
+
for e in self
|
82
|
+
e.show styles
|
83
|
+
end
|
84
|
+
self
|
85
|
+
end
|
86
|
+
|
87
|
+
def click_random(show: false, once: true)
|
88
|
+
unless self.any?
|
89
|
+
return false
|
90
|
+
end
|
91
|
+
|
92
|
+
index = if once
|
93
|
+
@__superbara_clicked ||= []
|
94
|
+
if @__superbara_clicked.size == self.size
|
95
|
+
return false
|
96
|
+
end
|
97
|
+
|
98
|
+
selected_index = nil
|
99
|
+
possible_index = nil
|
100
|
+
loop do
|
101
|
+
possible_index = rand(self.size)
|
102
|
+
next if @__superbara_clicked.include? possible_index
|
103
|
+
selected_index = possible_index
|
104
|
+
@__superbara_clicked << selected_index
|
105
|
+
break
|
106
|
+
end
|
107
|
+
|
108
|
+
selected_index
|
109
|
+
else
|
110
|
+
rand(self.size)
|
111
|
+
end
|
112
|
+
|
113
|
+
element = self[index]
|
114
|
+
element.show if show
|
115
|
+
element.click
|
116
|
+
end
|
117
|
+
end #Includes
|
118
|
+
end #Result
|
119
|
+
end #Capybara
|
120
|
+
end #Superbara
|
121
|
+
|
1
122
|
module Capybara
|
123
|
+
module DSL
|
124
|
+
def self.included(base)
|
125
|
+
#warn "including Capybara::DSL in the global scope is not recommended!" if base == Object
|
126
|
+
#super
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
2
130
|
module Node
|
3
131
|
class Element
|
4
|
-
|
5
|
-
|
6
|
-
Superbara::Helpers.highlight_element(self, {color: color})
|
7
|
-
sleep 0.1
|
8
|
-
end
|
9
|
-
"did you see it?"
|
10
|
-
end
|
132
|
+
include Superbara::CapybaraMonkey::Node::Element::Includes
|
133
|
+
prepend Superbara::CapybaraMonkey::Node::Element::Prepends
|
11
134
|
end
|
12
135
|
end
|
13
136
|
|
14
137
|
class Result
|
15
|
-
|
16
|
-
unless self.any?
|
17
|
-
Superbara.puts "no elements in collection"
|
18
|
-
return false
|
19
|
-
end
|
20
|
-
|
21
|
-
index = if once
|
22
|
-
@__superbara_clicked ||= []
|
23
|
-
if @__superbara_clicked.size == self.size
|
24
|
-
Superbara.puts "no unclicked elements left, not clicking anything"
|
25
|
-
return false
|
26
|
-
end
|
27
|
-
|
28
|
-
selected_index = nil
|
29
|
-
possible_index = nil
|
30
|
-
loop do
|
31
|
-
possible_index = rand(self.size)
|
32
|
-
next if @__superbara_clicked.include? possible_index
|
33
|
-
selected_index = possible_index
|
34
|
-
@__superbara_clicked << selected_index
|
35
|
-
break
|
36
|
-
end
|
37
|
-
|
38
|
-
selected_index
|
39
|
-
else
|
40
|
-
rand(self.size)
|
41
|
-
end
|
42
|
-
|
43
|
-
element = self[index]
|
44
|
-
element.highlight if highlight
|
45
|
-
Superbara.puts "clicking index: #{index} out of #{self.size}"
|
46
|
-
element.click
|
47
|
-
end
|
138
|
+
include Superbara::CapybaraMonkey::Result::Includes
|
48
139
|
end
|
49
140
|
end
|
data/lib/pry_monkey.rb
CHANGED
@@ -1,21 +1,45 @@
|
|
1
1
|
require "pry-byebug"
|
2
2
|
require "binding_of_caller"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
module Superbara
|
5
|
+
module PryMonkey
|
6
|
+
class Command
|
7
|
+
class Exit < Pry::ClassCommand
|
8
|
+
module Prepends
|
9
|
+
def process
|
10
|
+
Superbara.shell_disable!
|
11
|
+
Superbara.visual_disable!
|
12
|
+
super
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Whereami < Pry::ClassCommand
|
18
|
+
module Prepends
|
19
|
+
def process
|
20
|
+
if $__superbara_supress_pry_whereami
|
21
|
+
$__superbara_supress_pry_whereami = false
|
22
|
+
puts ""
|
23
|
+
nil
|
24
|
+
else
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
14
29
|
end
|
15
30
|
end
|
16
31
|
end
|
17
32
|
end
|
18
33
|
|
34
|
+
class Pry
|
35
|
+
class Command::Exit < Pry::ClassCommand
|
36
|
+
prepend ::Superbara::PryMonkey::Command::Exit::Prepends
|
37
|
+
end
|
38
|
+
class Command::Whereami < Pry::ClassCommand
|
39
|
+
prepend ::Superbara::PryMonkey::Command::Whereami::Prepends
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
19
43
|
Pry.config.prompt = proc {
|
20
44
|
prefix = "\n==[ console ]== (".colorize(:black).on_white
|
21
45
|
|
@@ -47,27 +71,26 @@ Pry.commands.alias_command 'n', 'next'
|
|
47
71
|
Pry.commands.alias_command 'h', 'help'
|
48
72
|
|
49
73
|
Pry::Commands.command /^e$/, "edit" do
|
50
|
-
puts "Opening #{
|
51
|
-
|
52
|
-
`superbara edit #{$superbara_current_file}`
|
53
|
-
rescue Exception => ex
|
54
|
-
puts "[development mode edit]"
|
55
|
-
`exe/superbara edit #{$superbara_current_file}`
|
56
|
-
end
|
74
|
+
puts "Opening #{Superbara.project_path} ..."
|
75
|
+
`superbara edit #{Superbara.project_path}`
|
57
76
|
end
|
58
77
|
|
59
78
|
Pry::Commands.command /^help$/, "help" do
|
60
|
-
|
61
79
|
capybara_help_help = '''
|
62
|
-
e = find "h1"
|
80
|
+
e = find "h1"
|
63
81
|
e = find "h1", text: /xample Dom/
|
64
82
|
e.click
|
65
83
|
|
66
84
|
e = wait 2 do
|
67
|
-
find "
|
85
|
+
find "span", text: "Added to the cart"
|
68
86
|
end
|
69
87
|
e.click
|
70
88
|
|
89
|
+
think 2..4
|
90
|
+
scroll 50
|
91
|
+
scroll -10, duration: 4
|
92
|
+
focus
|
93
|
+
|
71
94
|
more: https://github.com/teamcapybara/capybara#the-dsl'''
|
72
95
|
|
73
96
|
capybara_help_header_prefix = "== HELP "
|
@@ -84,7 +107,7 @@ Pry::Commands.command /^q$/, "abort" do
|
|
84
107
|
end
|
85
108
|
|
86
109
|
Pry::Commands.command /^r$/, "retry" do
|
87
|
-
exit
|
110
|
+
_pry_.run_command "exit"
|
88
111
|
end
|
89
112
|
|
90
113
|
Pry::Commands.command /^$/, "repeat last command if stepping" do
|