webkit_remote 0.3.2 → 0.4.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.
- data/.travis.yml +0 -2
- data/Gemfile +1 -0
- data/Gemfile.lock +10 -1
- data/README.md +36 -1
- data/VERSION +1 -1
- data/lib/webkit_remote.rb +2 -0
- data/lib/webkit_remote/client/console.rb +131 -0
- data/lib/webkit_remote/client/console_events.rb +24 -95
- data/lib/webkit_remote/client/dom.rb +297 -0
- data/lib/webkit_remote/client/dom_events.rb +18 -0
- data/lib/webkit_remote/client/network_events.rb +2 -2
- data/lib/webkit_remote/client/runtime.rb +66 -47
- data/lib/webkit_remote/process.rb +124 -6
- data/lib/webkit_remote/top_level.rb +5 -0
- data/test/fixtures/html/console.html +4 -0
- data/test/fixtures/html/dom.html +23 -0
- data/test/helper.rb +1 -0
- data/test/webkit_remote/browser_test.rb +1 -1
- data/test/webkit_remote/client/console_test.rb +63 -6
- data/test/webkit_remote/client/dom_test.rb +149 -0
- data/test/webkit_remote/client/{remote_object_group_test.rb → js_object_group_test.rb} +1 -1
- data/test/webkit_remote/client/{remote_object_test.rb → js_object_test.rb} +28 -21
- data/test/webkit_remote/client/runtime_test.rb +6 -6
- data/test/webkit_remote/client_test.rb +1 -1
- data/test/webkit_remote/process_test.rb +82 -30
- data/test/webkit_remote/rpc_test.rb +1 -1
- data/test/webkit_remote_test.rb +2 -2
- data/webkit_remote.gemspec +11 -4
- metadata +25 -5
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('../../helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
describe WebkitRemote::Client::
|
3
|
+
describe WebkitRemote::Client::JsObject do
|
4
4
|
before :each do
|
5
5
|
@client = WebkitRemote.local port: 9669
|
6
6
|
@client.page_events = true
|
@@ -18,50 +18,57 @@ describe WebkitRemote::Client::RemoteObject do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'enumerates the properties correctly' do
|
21
|
-
@object.properties[
|
22
|
-
@object.properties[
|
23
|
-
@object.properties[
|
21
|
+
@object.properties['answer'].name.must_equal 'answer'
|
22
|
+
@object.properties['test'].name.must_equal 'test'
|
23
|
+
@object.properties['other'].must_equal nil
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'gets the correct values' do
|
27
|
-
@object.properties[
|
28
|
-
@object.properties[
|
27
|
+
@object.properties['answer'].value.must_equal 42
|
28
|
+
@object.properties['test'].value.must_equal true
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'sets owner correctly' do
|
32
|
-
@object.properties[
|
32
|
+
@object.properties['answer'].owner.must_equal @object
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'does not have extra properties' do
|
36
36
|
@object.properties.select { |name, property| property.enumerable? }.
|
37
|
-
keys.sort.must_equal [
|
37
|
+
keys.sort.must_equal ['answer', 'test']
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'recognizes writable properties' do
|
41
|
-
@object.properties[
|
42
|
-
@object.properties[
|
41
|
+
@object.properties['answer'].writable?.must_equal true
|
42
|
+
@object.properties['constructor'].writable?.must_equal false
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'recognizes configurable properties' do
|
46
|
-
@object.properties[
|
47
|
-
@object.properties[
|
46
|
+
@object.properties['answer'].configurable?.must_equal true
|
47
|
+
@object.properties['constructor'].configurable?.must_equal false
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'recognizes enumerable properties' do
|
51
|
-
@object.properties[
|
52
|
-
@object.properties[
|
51
|
+
@object.properties['answer'].enumerable?.must_equal true
|
52
|
+
@object.properties['constructor'].enumerable?.must_equal false
|
53
53
|
end
|
54
54
|
|
55
55
|
describe 'after property update' do
|
56
56
|
before do
|
57
|
-
@object.properties[
|
57
|
+
@object.properties['DONE']
|
58
58
|
@client.remote_eval 'window.t.test = "updated"'
|
59
59
|
end
|
60
60
|
it 'does not automatically refresh' do
|
61
|
-
@object.properties[
|
61
|
+
@object.properties['test'].value.must_equal true
|
62
62
|
end
|
63
63
|
it 'refreshes when properties! is called' do
|
64
|
-
@object.properties![
|
64
|
+
@object.properties!['test'].value.must_equal 'updated'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'inspect' do
|
69
|
+
it 'contains the property name and its enumerable status' do
|
70
|
+
@object.properties['test'].inspect.must_match(
|
71
|
+
/<WebkitRemote::Client::JsProperty:.*\s+name="test"\s+configurable=.+\s+enumerable=.+>/)
|
65
72
|
end
|
66
73
|
end
|
67
74
|
end
|
@@ -72,9 +79,9 @@ describe WebkitRemote::Client::RemoteObject do
|
|
72
79
|
end
|
73
80
|
|
74
81
|
it 'recognizes configurable, non-writable, enumerable properties' do
|
75
|
-
@object.properties[
|
76
|
-
@object.properties[
|
77
|
-
@object.properties[
|
82
|
+
@object.properties['DONE'].configurable?.must_equal true
|
83
|
+
@object.properties['DONE'].writable?.must_equal false
|
84
|
+
@object.properties['DONE'].enumerable?.must_equal true
|
78
85
|
end
|
79
86
|
end
|
80
87
|
end
|
@@ -120,7 +127,7 @@ describe WebkitRemote::Client::RemoteObject do
|
|
120
127
|
@arg1, @arg2
|
121
128
|
end
|
122
129
|
it 'passes the objects and returns an object correctly' do
|
123
|
-
@result.must_be_kind_of WebkitRemote::Client::
|
130
|
+
@result.must_be_kind_of WebkitRemote::Client::JsObject
|
124
131
|
@result.js_class_name.must_equal 'TestClass'
|
125
132
|
@result.bound_call('TestClass.prototype.toString').
|
126
133
|
must_equal 'hello ruby, rbx and jruby'
|
@@ -94,8 +94,8 @@ describe WebkitRemote::Client::Runtime do
|
|
94
94
|
group = @client.object_group('yes')
|
95
95
|
group.release_all if group
|
96
96
|
end
|
97
|
-
it 'returns an
|
98
|
-
@object.must_be_kind_of WebkitRemote::Client::
|
97
|
+
it 'returns an JsObject instance' do
|
98
|
+
@object.must_be_kind_of WebkitRemote::Client::JsObject
|
99
99
|
end
|
100
100
|
it 'sets the object properties correctly' do
|
101
101
|
@object.js_class_name.must_equal 'TestClass'
|
@@ -116,8 +116,8 @@ describe WebkitRemote::Client::Runtime do
|
|
116
116
|
group = @client.object_group('yes')
|
117
117
|
group.release_all if group
|
118
118
|
end
|
119
|
-
it 'returns an
|
120
|
-
@object.must_be_kind_of WebkitRemote::Client::
|
119
|
+
it 'returns an JsObject instance' do
|
120
|
+
@object.must_be_kind_of WebkitRemote::Client::JsObject
|
121
121
|
end
|
122
122
|
it 'sets the object properties correctly' do
|
123
123
|
@object.js_class_name.must_equal 'Object'
|
@@ -139,8 +139,8 @@ describe WebkitRemote::Client::Runtime do
|
|
139
139
|
group.release_all if group
|
140
140
|
end
|
141
141
|
|
142
|
-
it 'returns a
|
143
|
-
@function.must_be_kind_of WebkitRemote::Client::
|
142
|
+
it 'returns a JsObject instance' do
|
143
|
+
@function.must_be_kind_of WebkitRemote::Client::JsObject
|
144
144
|
end
|
145
145
|
|
146
146
|
it 'sets the object properties correctly' do
|
@@ -2,7 +2,7 @@ require File.expand_path('../helper.rb', File.dirname(__FILE__))
|
|
2
2
|
|
3
3
|
describe WebkitRemote::Client do
|
4
4
|
before :each do
|
5
|
-
@process = WebkitRemote::Process.new port: 9669
|
5
|
+
@process = WebkitRemote::Process.new port: 9669, xvfb: true
|
6
6
|
@process.start
|
7
7
|
@browser = WebkitRemote::Browser.new process: @process, stop_process: true
|
8
8
|
tab = @browser.tabs.first
|
@@ -1,51 +1,103 @@
|
|
1
1
|
require File.expand_path('../helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
3
|
describe WebkitRemote::Process do
|
4
|
-
|
5
|
-
@process = WebkitRemote::Process.new port: 9669
|
6
|
-
end
|
7
|
-
after :each do
|
8
|
-
@process.stop if @process
|
9
|
-
end
|
10
|
-
|
11
|
-
describe '#running' do
|
12
|
-
it 'returns false before #start is called' do
|
13
|
-
@process.running?.must_equal false
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe '#start' do
|
4
|
+
describe 'on Xvfb' do
|
18
5
|
before :each do
|
19
|
-
@
|
6
|
+
@process = WebkitRemote::Process.new port: 9669, xvfb: true
|
20
7
|
end
|
21
8
|
after :each do
|
22
|
-
@browser.close if @browser
|
23
9
|
@process.stop if @process
|
24
10
|
end
|
25
11
|
|
26
|
-
|
27
|
-
|
12
|
+
describe '#running' do
|
13
|
+
it 'returns false before #start is called' do
|
14
|
+
@process.running?.must_equal false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#start' do
|
19
|
+
before :each do
|
20
|
+
@browser = @process.start
|
21
|
+
end
|
22
|
+
after :each do
|
23
|
+
@browser.close if @browser
|
24
|
+
@process.stop if @process
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'makes running? return true' do
|
28
|
+
@process.running?.must_equal true
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'returns a Browser instance that does not auto-stop the process' do
|
32
|
+
@browser.must_be_kind_of WebkitRemote::Browser
|
33
|
+
@browser.closed?.must_equal false
|
34
|
+
@browser.stop_process?.must_equal false
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#stop' do
|
38
|
+
before :each do
|
39
|
+
@process.stop
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'makes running? return false' do
|
43
|
+
@process.running?.must_equal false
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'kills the http server that responds to /json' do
|
47
|
+
begin
|
48
|
+
@browser.tabs
|
49
|
+
fail 'browser process not killed'
|
50
|
+
rescue EOFError
|
51
|
+
pass
|
52
|
+
rescue Errno::ECONNRESET
|
53
|
+
pass
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
28
57
|
end
|
58
|
+
end
|
29
59
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
60
|
+
describe 'on real X desktop' do
|
61
|
+
before :each do
|
62
|
+
unless ENV['DISPLAY'] and /\:\d+/ =~ ENV['DISPLAY']
|
63
|
+
skip 'No real X desktop configured'
|
64
|
+
end
|
65
|
+
@process = WebkitRemote::Process.new port: 9669
|
66
|
+
end
|
67
|
+
after :each do
|
68
|
+
@process.stop if @process
|
34
69
|
end
|
35
70
|
|
36
|
-
describe '#
|
71
|
+
describe '#start' do
|
37
72
|
before :each do
|
38
|
-
@process.
|
73
|
+
@browser = @process.start
|
74
|
+
end
|
75
|
+
after :each do
|
76
|
+
@browser.close if @browser
|
77
|
+
@process.stop if @process
|
39
78
|
end
|
40
79
|
|
41
|
-
it '
|
42
|
-
@
|
80
|
+
it 'returns a Browser instance that does not auto-stop the process' do
|
81
|
+
@browser.must_be_kind_of WebkitRemote::Browser
|
82
|
+
@browser.closed?.must_equal false
|
83
|
+
@browser.stop_process?.must_equal false
|
43
84
|
end
|
44
85
|
|
45
|
-
|
46
|
-
|
47
|
-
@
|
48
|
-
|
86
|
+
describe '#stop' do
|
87
|
+
before :each do
|
88
|
+
@process.stop
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'kills the http server that responds to /json' do
|
92
|
+
begin
|
93
|
+
@browser.tabs
|
94
|
+
fail 'browser process not killed'
|
95
|
+
rescue EOFError
|
96
|
+
pass
|
97
|
+
rescue Errno::ECONNRESET
|
98
|
+
pass
|
99
|
+
end
|
100
|
+
end
|
49
101
|
end
|
50
102
|
end
|
51
103
|
end
|
@@ -2,7 +2,7 @@ require File.expand_path('../helper.rb', File.dirname(__FILE__))
|
|
2
2
|
|
3
3
|
describe WebkitRemote::Rpc do
|
4
4
|
before :each do
|
5
|
-
@process = WebkitRemote::Process.new port: 9669
|
5
|
+
@process = WebkitRemote::Process.new port: 9669, xvfb: true
|
6
6
|
@process.start
|
7
7
|
@browser = WebkitRemote::Browser.new process: @process, stop_process: true
|
8
8
|
tab = @browser.tabs.first
|
data/test/webkit_remote_test.rb
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path('helper.rb', File.dirname(__FILE__))
|
|
3
3
|
describe WebkitRemote do
|
4
4
|
describe 'local' do
|
5
5
|
before do
|
6
|
-
@client = WebkitRemote.local port: 9669
|
6
|
+
@client = WebkitRemote.local port: 9669, xvfb: true
|
7
7
|
end
|
8
8
|
after do
|
9
9
|
@client.close
|
@@ -29,7 +29,7 @@ describe WebkitRemote do
|
|
29
29
|
|
30
30
|
describe 'remote' do
|
31
31
|
before do
|
32
|
-
@process = WebkitRemote::Process.new port: 9669
|
32
|
+
@process = WebkitRemote::Process.new port: 9669, xvfb: true
|
33
33
|
browser = @process.start
|
34
34
|
browser.close
|
35
35
|
@client = WebkitRemote.remote host: 'localhost', port: 9669
|
data/webkit_remote.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "webkit_remote"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Victor Costan"]
|
12
|
-
s.date = "2012-11-
|
12
|
+
s.date = "2012-11-16"
|
13
13
|
s.description = "Launches Google Chrome instances and controls them via the Remote Debugging server"
|
14
14
|
s.email = "victor@costan.us"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -30,6 +30,8 @@ Gem::Specification.new do |s|
|
|
30
30
|
"lib/webkit_remote/client.rb",
|
31
31
|
"lib/webkit_remote/client/console.rb",
|
32
32
|
"lib/webkit_remote/client/console_events.rb",
|
33
|
+
"lib/webkit_remote/client/dom.rb",
|
34
|
+
"lib/webkit_remote/client/dom_events.rb",
|
33
35
|
"lib/webkit_remote/client/network.rb",
|
34
36
|
"lib/webkit_remote/client/network_events.rb",
|
35
37
|
"lib/webkit_remote/client/page.rb",
|
@@ -41,6 +43,7 @@ Gem::Specification.new do |s|
|
|
41
43
|
"lib/webkit_remote/top_level.rb",
|
42
44
|
"test/fixtures/config.ru",
|
43
45
|
"test/fixtures/html/console.html",
|
46
|
+
"test/fixtures/html/dom.html",
|
44
47
|
"test/fixtures/html/load.html",
|
45
48
|
"test/fixtures/html/network.html",
|
46
49
|
"test/fixtures/html/runtime.html",
|
@@ -49,10 +52,11 @@ Gem::Specification.new do |s|
|
|
49
52
|
"test/helper.rb",
|
50
53
|
"test/webkit_remote/browser_test.rb",
|
51
54
|
"test/webkit_remote/client/console_test.rb",
|
55
|
+
"test/webkit_remote/client/dom_test.rb",
|
56
|
+
"test/webkit_remote/client/js_object_group_test.rb",
|
57
|
+
"test/webkit_remote/client/js_object_test.rb",
|
52
58
|
"test/webkit_remote/client/network_test.rb",
|
53
59
|
"test/webkit_remote/client/page_test.rb",
|
54
|
-
"test/webkit_remote/client/remote_object_group_test.rb",
|
55
|
-
"test/webkit_remote/client/remote_object_test.rb",
|
56
60
|
"test/webkit_remote/client/runtime_test.rb",
|
57
61
|
"test/webkit_remote/client_test.rb",
|
58
62
|
"test/webkit_remote/event_test.rb",
|
@@ -75,6 +79,7 @@ Gem::Specification.new do |s|
|
|
75
79
|
s.add_runtime_dependency(%q<faye-websocket>, [">= 0.4.6"])
|
76
80
|
s.add_runtime_dependency(%q<posix-spawn>, [">= 0.3.6"])
|
77
81
|
s.add_development_dependency(%q<bundler>, [">= 1.2.1"])
|
82
|
+
s.add_development_dependency(%q<debugger>, [">= 1.2.1"])
|
78
83
|
s.add_development_dependency(%q<jeweler>, [">= 1.8.4"])
|
79
84
|
s.add_development_dependency(%q<minitest>, [">= 4.1.0"])
|
80
85
|
s.add_development_dependency(%q<puma>, [">= 1.6.3"])
|
@@ -89,6 +94,7 @@ Gem::Specification.new do |s|
|
|
89
94
|
s.add_dependency(%q<faye-websocket>, [">= 0.4.6"])
|
90
95
|
s.add_dependency(%q<posix-spawn>, [">= 0.3.6"])
|
91
96
|
s.add_dependency(%q<bundler>, [">= 1.2.1"])
|
97
|
+
s.add_dependency(%q<debugger>, [">= 1.2.1"])
|
92
98
|
s.add_dependency(%q<jeweler>, [">= 1.8.4"])
|
93
99
|
s.add_dependency(%q<minitest>, [">= 4.1.0"])
|
94
100
|
s.add_dependency(%q<puma>, [">= 1.6.3"])
|
@@ -104,6 +110,7 @@ Gem::Specification.new do |s|
|
|
104
110
|
s.add_dependency(%q<faye-websocket>, [">= 0.4.6"])
|
105
111
|
s.add_dependency(%q<posix-spawn>, [">= 0.3.6"])
|
106
112
|
s.add_dependency(%q<bundler>, [">= 1.2.1"])
|
113
|
+
s.add_dependency(%q<debugger>, [">= 1.2.1"])
|
107
114
|
s.add_dependency(%q<jeweler>, [">= 1.8.4"])
|
108
115
|
s.add_dependency(%q<minitest>, [">= 4.1.0"])
|
109
116
|
s.add_dependency(%q<puma>, [">= 1.6.3"])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webkit_remote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 1.2.1
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: debugger
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.2.1
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.2.1
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
name: jeweler
|
80
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,6 +257,8 @@ files:
|
|
241
257
|
- lib/webkit_remote/client.rb
|
242
258
|
- lib/webkit_remote/client/console.rb
|
243
259
|
- lib/webkit_remote/client/console_events.rb
|
260
|
+
- lib/webkit_remote/client/dom.rb
|
261
|
+
- lib/webkit_remote/client/dom_events.rb
|
244
262
|
- lib/webkit_remote/client/network.rb
|
245
263
|
- lib/webkit_remote/client/network_events.rb
|
246
264
|
- lib/webkit_remote/client/page.rb
|
@@ -252,6 +270,7 @@ files:
|
|
252
270
|
- lib/webkit_remote/top_level.rb
|
253
271
|
- test/fixtures/config.ru
|
254
272
|
- test/fixtures/html/console.html
|
273
|
+
- test/fixtures/html/dom.html
|
255
274
|
- test/fixtures/html/load.html
|
256
275
|
- test/fixtures/html/network.html
|
257
276
|
- test/fixtures/html/runtime.html
|
@@ -260,10 +279,11 @@ files:
|
|
260
279
|
- test/helper.rb
|
261
280
|
- test/webkit_remote/browser_test.rb
|
262
281
|
- test/webkit_remote/client/console_test.rb
|
282
|
+
- test/webkit_remote/client/dom_test.rb
|
283
|
+
- test/webkit_remote/client/js_object_group_test.rb
|
284
|
+
- test/webkit_remote/client/js_object_test.rb
|
263
285
|
- test/webkit_remote/client/network_test.rb
|
264
286
|
- test/webkit_remote/client/page_test.rb
|
265
|
-
- test/webkit_remote/client/remote_object_group_test.rb
|
266
|
-
- test/webkit_remote/client/remote_object_test.rb
|
267
287
|
- test/webkit_remote/client/runtime_test.rb
|
268
288
|
- test/webkit_remote/client_test.rb
|
269
289
|
- test/webkit_remote/event_test.rb
|
@@ -286,7 +306,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
286
306
|
version: '0'
|
287
307
|
segments:
|
288
308
|
- 0
|
289
|
-
hash:
|
309
|
+
hash: 4292049841560848513
|
290
310
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
291
311
|
none: false
|
292
312
|
requirements:
|