opal-browser 0.3.3 → 0.3.5

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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +28 -17
  3. data/.github/workflows/pages.yml +21 -0
  4. data/.gitignore +1 -0
  5. data/CHANGELOG.md +10 -0
  6. data/Gemfile +15 -5
  7. data/Rakefile +32 -9
  8. data/bin/rake +7 -0
  9. data/bin/setup +8 -0
  10. data/config.ru +19 -12
  11. data/opal/browser/animation_frame.rb +1 -0
  12. data/opal/browser/audio/node.rb +1 -0
  13. data/opal/browser/audio/param_schedule.rb +1 -0
  14. data/opal/browser/audio.rb +2 -1
  15. data/opal/browser/blob.rb +1 -0
  16. data/opal/browser/canvas/data.rb +1 -0
  17. data/opal/browser/canvas/gradient.rb +1 -0
  18. data/opal/browser/canvas/style.rb +1 -0
  19. data/opal/browser/canvas/text.rb +1 -0
  20. data/opal/browser/canvas.rb +1 -0
  21. data/opal/browser/console.rb +1 -0
  22. data/opal/browser/cookies.rb +1 -0
  23. data/opal/browser/crypto.rb +1 -0
  24. data/opal/browser/css/declaration.rb +1 -0
  25. data/opal/browser/css/rule/style.rb +1 -0
  26. data/opal/browser/css/rule.rb +1 -0
  27. data/opal/browser/css/style_sheet.rb +1 -0
  28. data/opal/browser/database/sql.rb +1 -0
  29. data/opal/browser/delay.rb +1 -0
  30. data/opal/browser/dom/builder.rb +1 -0
  31. data/opal/browser/dom/character_data.rb +1 -0
  32. data/opal/browser/dom/document.rb +1 -0
  33. data/opal/browser/dom/document_fragment.rb +1 -0
  34. data/opal/browser/dom/document_or_shadow_root.rb +1 -0
  35. data/opal/browser/dom/element/attributes.rb +2 -0
  36. data/opal/browser/dom/element/button.rb +2 -0
  37. data/opal/browser/dom/element/custom.rb +2 -1
  38. data/opal/browser/dom/element/data.rb +2 -0
  39. data/opal/browser/dom/element/editable.rb +2 -0
  40. data/opal/browser/dom/element/form.rb +25 -1
  41. data/opal/browser/dom/element/iframe.rb +2 -0
  42. data/opal/browser/dom/element/image.rb +6 -15
  43. data/opal/browser/dom/element/input.rb +7 -19
  44. data/opal/browser/dom/element/media.rb +5 -3
  45. data/opal/browser/dom/element/offset.rb +2 -0
  46. data/opal/browser/dom/element/scroll.rb +2 -0
  47. data/opal/browser/dom/element/select.rb +4 -7
  48. data/opal/browser/dom/element/size.rb +6 -12
  49. data/opal/browser/dom/element/template.rb +2 -0
  50. data/opal/browser/dom/element/textarea.rb +3 -3
  51. data/opal/browser/dom/element.rb +4 -0
  52. data/opal/browser/dom/mutation_observer.rb +1 -0
  53. data/opal/browser/dom/node.rb +1 -0
  54. data/opal/browser/dom/node_set.rb +1 -0
  55. data/opal/browser/dom/text.rb +1 -0
  56. data/opal/browser/dom.rb +1 -0
  57. data/opal/browser/effects.rb +1 -0
  58. data/opal/browser/event/animation.rb +5 -7
  59. data/opal/browser/event/audio_processing.rb +5 -11
  60. data/opal/browser/event/base.rb +4 -6
  61. data/opal/browser/event/before_unload.rb +2 -0
  62. data/opal/browser/event/clipboard.rb +4 -7
  63. data/opal/browser/event/close.rb +4 -7
  64. data/opal/browser/event/composition.rb +4 -7
  65. data/opal/browser/event/custom.rb +5 -3
  66. data/opal/browser/event/data_transfer.rb +3 -1
  67. data/opal/browser/event/device_light.rb +3 -3
  68. data/opal/browser/event/device_motion.rb +6 -15
  69. data/opal/browser/event/device_orientation.rb +6 -15
  70. data/opal/browser/event/device_proximity.rb +5 -11
  71. data/opal/browser/event/drag.rb +6 -14
  72. data/opal/browser/event/focus.rb +4 -7
  73. data/opal/browser/event/gamepad.rb +3 -1
  74. data/opal/browser/event/hash_change.rb +4 -7
  75. data/opal/browser/event/keyboard.rb +2 -0
  76. data/opal/browser/event/message.rb +5 -11
  77. data/opal/browser/event/mouse.rb +20 -65
  78. data/opal/browser/event/page_transition.rb +3 -3
  79. data/opal/browser/event/pop_state.rb +3 -1
  80. data/opal/browser/event/progress.rb +5 -11
  81. data/opal/browser/event/sensor.rb +2 -0
  82. data/opal/browser/event/storage.rb +7 -19
  83. data/opal/browser/event/touch.rb +2 -0
  84. data/opal/browser/event/ui.rb +4 -7
  85. data/opal/browser/event/wheel.rb +5 -11
  86. data/opal/browser/event.rb +1 -0
  87. data/opal/browser/event_source.rb +1 -0
  88. data/opal/browser/form_data.rb +1 -0
  89. data/opal/browser/history.rb +1 -0
  90. data/opal/browser/http/binary.rb +1 -0
  91. data/opal/browser/http/request.rb +1 -0
  92. data/opal/browser/http/response.rb +1 -0
  93. data/opal/browser/immediate.rb +1 -0
  94. data/opal/browser/interval.rb +1 -0
  95. data/opal/browser/location.rb +1 -0
  96. data/opal/browser/navigator.rb +1 -0
  97. data/opal/browser/polyfill/visual_viewport.rb +1 -0
  98. data/opal/browser/screen.rb +1 -0
  99. data/opal/browser/socket.rb +1 -0
  100. data/opal/browser/storage.rb +1 -0
  101. data/opal/browser/support.rb +22 -33
  102. data/opal/browser/utils.rb +1 -0
  103. data/opal/browser/version.rb +1 -1
  104. data/opal/browser/visual_viewport.rb +1 -0
  105. data/opal/browser/window/size.rb +1 -0
  106. data/opal/browser/window/view.rb +1 -0
  107. data/opal/browser/window.rb +1 -0
  108. data/opal-browser.gemspec +23 -18
  109. data/spec/browser_runner.rb.erb +14 -0
  110. data/spec/browser_runner_compat.rb +29 -0
  111. data/{index.html.erb → spec/browser_runner_index.html.erb} +1 -5
  112. data/spec/database/sql_spec.rb +1 -1
  113. data/spec/event_spec.rb +43 -0
  114. data/spec/immediate_spec.rb +1 -1
  115. data/spec/runner.rb +3 -3
  116. data/spec/spec_helper_promise.rb.erb +13 -5
  117. metadata +206 -34
data/spec/event_spec.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # backtick_javascript: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'browser/event'
3
5
 
@@ -153,4 +155,45 @@ describe Browser::Event do
153
155
  expect(count).to eq(3)
154
156
  end
155
157
  end
158
+
159
+ describe "#trigger" do
160
+ it "can set properties of custom events" do
161
+ elem = $document["event-spec"]
162
+
163
+ count = 0
164
+ cb = elem.on :abcabc do |e|
165
+ count += e.thing
166
+ end
167
+
168
+ elem.trigger :abcabc do |e|
169
+ e.thing = 6
170
+ end
171
+
172
+ expect(count).to eq(6)
173
+
174
+ cb.off
175
+ end
176
+
177
+ it "works with non-enumerable properties" do
178
+ elem = $document["event-spec"]
179
+
180
+ count = 0
181
+ cb = elem.on :abcabcd do |e|
182
+ count += e.thing
183
+ end
184
+
185
+ elem.trigger :abcabcd do |e|
186
+ %x{
187
+ Object.defineProperty(e.native, "thing", {
188
+ value: 6,
189
+ enumerable: false
190
+ });
191
+ }
192
+ end
193
+
194
+ expect(count).to eq(6)
195
+
196
+ cb.off
197
+ end
198
+ end
156
199
  end
@@ -12,4 +12,4 @@ describe Proc do
12
12
  promise.for_rspec
13
13
  end
14
14
  end
15
- end
15
+ end if Opal::RSpec::VERSION.to_f >= 1.0
data/spec/runner.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  #! /usr/bin/env ruby
2
- require 'webdrivers'
3
2
  require 'selenium/webdriver'
4
3
  require 'rest_client'
5
4
  require 'json'
@@ -23,7 +22,7 @@ else
23
22
  raise "Wrong web browser provided in BROWSER. Acceptable values: chrome, gecko, safari, edge"
24
23
  end
25
24
 
26
- browser = Selenium::WebDriver.for(browser, capabilities: options)
25
+ browser = Selenium::WebDriver.for(browser, options: options)
27
26
  browser.navigate.to('http://localhost:9292')
28
27
 
29
28
  # if we don't quit the browser it will stall
@@ -65,7 +64,8 @@ begin
65
64
  Selenium::WebDriver::Wait.new(timeout: 3000, interval: 30).until {
66
65
  print '.'
67
66
 
68
- not browser['totals'].text.strip.empty?
67
+ ((not browser['totals'].text.strip.empty?) rescue false) &&
68
+ (browser[css: '#duration strong'] rescue false)
69
69
  }
70
70
 
71
71
  totals = browser['totals'].text
@@ -1,4 +1,6 @@
1
- <% if ENV['OPAL_BROWSER_PROMISE'] == 'v2' %>
1
+ require 'opal/rspec/async'
2
+
3
+ <% if ENV['OPAL_BROWSER_PROMISE'] == 'v2' || Opal::VERSION.to_f >= 1.6 %>
2
4
  require 'promise'
3
5
  require 'promise/v2'
4
6
  <% else %>
@@ -16,10 +18,16 @@ require 'browser/utils'
16
18
 
17
19
  module Browser
18
20
  class Promise
19
- # Return a correct promise for opal-rspec, which for now is
20
- # PromiseV1 until opal-rspec is ported.
21
+ # Return a correct promise for opal-rspec, which for RSpec
22
+ # < 1.0 is PromiseV1, and for >= 1.0 is PromiseV2.
21
23
  def for_rspec
22
- to_v1
24
+ <% if Opal::RSpec::VERSION.to_f >= 1.0 %>
25
+ to_v2
26
+ <% else %>
27
+ to_v1
28
+ <% end %>
23
29
  end
24
30
  end
25
- end
31
+ end
32
+
33
+ Opal::RSpec::VERSION = <%= Opal::RSpec::VERSION.inspect %> unless defined? Opal::RSpec::VERSION
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-browser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - meh.
8
8
  - hmdne
9
9
  autorequire:
10
- bindir: bin
10
+ bindir: exe
11
11
  cert_chain: []
12
- date: 2021-12-22 00:00:00.000000000 Z
12
+ date: 2024-02-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opal
@@ -52,6 +52,7 @@ extensions: []
52
52
  extra_rdoc_files: []
53
53
  files:
54
54
  - ".github/workflows/build.yml"
55
+ - ".github/workflows/pages.yml"
55
56
  - ".gitignore"
56
57
  - ".yardopts"
57
58
  - CHANGELOG.md
@@ -59,6 +60,8 @@ files:
59
60
  - LICENSE
60
61
  - README.md
61
62
  - Rakefile
63
+ - bin/rake
64
+ - bin/setup
62
65
  - config.ru
63
66
  - docs/polyfills.md
64
67
  - examples/2048/Gemfile
@@ -127,7 +130,6 @@ files:
127
130
  - examples/svg/app/application.rb
128
131
  - examples/svg/index.html
129
132
  - examples/svg/index.svg
130
- - index.html.erb
131
133
  - lib/opal-browser.rb
132
134
  - lib/opal/browser.rb
133
135
  - opal-browser.gemspec
@@ -245,6 +247,9 @@ files:
245
247
  - opal/browser/window/size.rb
246
248
  - opal/browser/window/view.rb
247
249
  - opal/opal-browser.rb
250
+ - spec/browser_runner.rb.erb
251
+ - spec/browser_runner_compat.rb
252
+ - spec/browser_runner_index.html.erb
248
253
  - spec/database/sql_spec.rb
249
254
  - spec/delay_spec.rb
250
255
  - spec/dom/attribute_spec.rb
@@ -293,37 +298,204 @@ required_rubygems_version: !ruby/object:Gem::Requirement
293
298
  - !ruby/object:Gem::Version
294
299
  version: '0'
295
300
  requirements: []
296
- rubygems_version: 3.2.22
301
+ rubygems_version: 3.5.3
297
302
  signing_key:
298
303
  specification_version: 4
299
304
  summary: Browser support for Opal.
300
305
  test_files:
301
- - spec/database/sql_spec.rb
302
- - spec/delay_spec.rb
303
- - spec/dom/attribute_spec.rb
304
- - spec/dom/builder_spec.rb
305
- - spec/dom/document_spec.rb
306
- - spec/dom/element/attributes_spec.rb
307
- - spec/dom/element/custom_spec.rb
308
- - spec/dom/element/subclass_spec.rb
309
- - spec/dom/element_spec.rb
310
- - spec/dom/mutation_observer_spec.rb
311
- - spec/dom/node_set_spec.rb
312
- - spec/dom/node_spec.rb
313
- - spec/dom_spec.rb
314
- - spec/event_source_spec.rb
315
- - spec/event_spec.rb
316
- - spec/history_spec.rb
317
- - spec/http_spec.rb
318
- - spec/immediate_spec.rb
319
- - spec/interval_spec.rb
320
- - spec/json2.js
321
- - spec/native_cached_wrapper_spec.rb
322
- - spec/runner.rb
323
- - spec/sizzle.js
324
- - spec/socket_spec.rb
325
- - spec/spec_helper.rb
326
- - spec/spec_helper_promise.rb.erb
327
- - spec/storage_spec.rb
328
- - spec/wgxpath.install.js
329
- - spec/window_spec.rb
306
+ - ".github/workflows/build.yml"
307
+ - ".github/workflows/pages.yml"
308
+ - ".gitignore"
309
+ - ".yardopts"
310
+ - CHANGELOG.md
311
+ - Gemfile
312
+ - LICENSE
313
+ - README.md
314
+ - Rakefile
315
+ - bin/rake
316
+ - bin/setup
317
+ - config.ru
318
+ - docs/polyfills.md
319
+ - examples/2048/Gemfile
320
+ - examples/2048/README.md
321
+ - examples/2048/app/application.rb
322
+ - examples/2048/config.ru
323
+ - examples/canvas/Gemfile
324
+ - examples/canvas/README.md
325
+ - examples/canvas/app/application.rb
326
+ - examples/canvas/config.ru
327
+ - examples/component/Gemfile
328
+ - examples/component/README.md
329
+ - examples/component/app/application.rb
330
+ - examples/component/config.ru
331
+ - examples/integrations/README.md
332
+ - examples/integrations/dynamic-rack-opal-sprockets-server/Gemfile
333
+ - examples/integrations/dynamic-rack-opal-sprockets-server/README.md
334
+ - examples/integrations/dynamic-rack-opal-sprockets-server/app/application.rb
335
+ - examples/integrations/dynamic-rack-opal-sprockets-server/config.ru
336
+ - examples/integrations/dynamic-roda-roda-sprockets/.gitignore
337
+ - examples/integrations/dynamic-roda-roda-sprockets/Gemfile
338
+ - examples/integrations/dynamic-roda-roda-sprockets/README.md
339
+ - examples/integrations/dynamic-roda-roda-sprockets/Rakefile
340
+ - examples/integrations/dynamic-roda-roda-sprockets/app.rb
341
+ - examples/integrations/dynamic-roda-roda-sprockets/app/application.rb
342
+ - examples/integrations/dynamic-roda-roda-sprockets/config.ru
343
+ - examples/integrations/dynamic-roda-tilt/.gitignore
344
+ - examples/integrations/dynamic-roda-tilt/Gemfile
345
+ - examples/integrations/dynamic-roda-tilt/README.md
346
+ - examples/integrations/dynamic-roda-tilt/Rakefile
347
+ - examples/integrations/dynamic-roda-tilt/app.rb
348
+ - examples/integrations/dynamic-roda-tilt/app/application.rb
349
+ - examples/integrations/dynamic-roda-tilt/config.ru
350
+ - examples/integrations/dynamic-sinatra-opal-sprockets-server/Gemfile
351
+ - examples/integrations/dynamic-sinatra-opal-sprockets-server/README.md
352
+ - examples/integrations/dynamic-sinatra-opal-sprockets-server/app/application.rb
353
+ - examples/integrations/dynamic-sinatra-opal-sprockets-server/config.ru
354
+ - examples/integrations/static-bash-opal-parser/.gitignore
355
+ - examples/integrations/static-bash-opal-parser/Gemfile
356
+ - examples/integrations/static-bash-opal-parser/README.md
357
+ - examples/integrations/static-bash-opal-parser/build.sh
358
+ - examples/integrations/static-bash-opal-parser/index.html
359
+ - examples/integrations/static-bash/.gitignore
360
+ - examples/integrations/static-bash/Gemfile
361
+ - examples/integrations/static-bash/README.md
362
+ - examples/integrations/static-bash/app/application.rb
363
+ - examples/integrations/static-bash/build.sh
364
+ - examples/integrations/static-bash/index.html
365
+ - examples/integrations/static-rake-guard/.gitignore
366
+ - examples/integrations/static-rake-guard/Gemfile
367
+ - examples/integrations/static-rake-guard/Guardfile
368
+ - examples/integrations/static-rake-guard/README.md
369
+ - examples/integrations/static-rake-guard/Rakefile
370
+ - examples/integrations/static-rake-guard/app/application.rb
371
+ - examples/integrations/static-rake-guard/index.html
372
+ - examples/integrations/static-rake/.gitignore
373
+ - examples/integrations/static-rake/Gemfile
374
+ - examples/integrations/static-rake/README.md
375
+ - examples/integrations/static-rake/Rakefile
376
+ - examples/integrations/static-rake/app/application.rb
377
+ - examples/integrations/static-rake/index.html
378
+ - examples/svg/.gitignore
379
+ - examples/svg/Gemfile
380
+ - examples/svg/README.md
381
+ - examples/svg/Rakefile
382
+ - examples/svg/app/application.rb
383
+ - examples/svg/index.html
384
+ - examples/svg/index.svg
385
+ - lib/opal-browser.rb
386
+ - lib/opal/browser.rb
387
+ - opal-browser.gemspec
388
+ - opal/browser.rb
389
+ - opal/browser/animation_frame.rb
390
+ - opal/browser/audio.rb
391
+ - opal/browser/audio/node.rb
392
+ - opal/browser/audio/param_schedule.rb
393
+ - opal/browser/blob.rb
394
+ - opal/browser/canvas.rb
395
+ - opal/browser/canvas/data.rb
396
+ - opal/browser/canvas/gradient.rb
397
+ - opal/browser/canvas/style.rb
398
+ - opal/browser/canvas/text.rb
399
+ - opal/browser/console.rb
400
+ - opal/browser/cookies.rb
401
+ - opal/browser/crypto.rb
402
+ - opal/browser/css.rb
403
+ - opal/browser/css/declaration.rb
404
+ - opal/browser/css/rule.rb
405
+ - opal/browser/css/rule/style.rb
406
+ - opal/browser/css/style_sheet.rb
407
+ - opal/browser/css/unit.rb
408
+ - opal/browser/database/sql.rb
409
+ - opal/browser/delay.rb
410
+ - opal/browser/dom.rb
411
+ - opal/browser/dom/attribute.rb
412
+ - opal/browser/dom/builder.rb
413
+ - opal/browser/dom/cdata.rb
414
+ - opal/browser/dom/character_data.rb
415
+ - opal/browser/dom/comment.rb
416
+ - opal/browser/dom/document.rb
417
+ - opal/browser/dom/document_fragment.rb
418
+ - opal/browser/dom/document_or_shadow_root.rb
419
+ - opal/browser/dom/element.rb
420
+ - opal/browser/dom/element/attributes.rb
421
+ - opal/browser/dom/element/button.rb
422
+ - opal/browser/dom/element/custom.rb
423
+ - opal/browser/dom/element/data.rb
424
+ - opal/browser/dom/element/editable.rb
425
+ - opal/browser/dom/element/form.rb
426
+ - opal/browser/dom/element/iframe.rb
427
+ - opal/browser/dom/element/image.rb
428
+ - opal/browser/dom/element/input.rb
429
+ - opal/browser/dom/element/media.rb
430
+ - opal/browser/dom/element/offset.rb
431
+ - opal/browser/dom/element/position.rb
432
+ - opal/browser/dom/element/scroll.rb
433
+ - opal/browser/dom/element/select.rb
434
+ - opal/browser/dom/element/size.rb
435
+ - opal/browser/dom/element/template.rb
436
+ - opal/browser/dom/element/textarea.rb
437
+ - opal/browser/dom/mutation_observer.rb
438
+ - opal/browser/dom/node.rb
439
+ - opal/browser/dom/node_set.rb
440
+ - opal/browser/dom/shadow_root.rb
441
+ - opal/browser/dom/text.rb
442
+ - opal/browser/effects.rb
443
+ - opal/browser/event.rb
444
+ - opal/browser/event/all.rb
445
+ - opal/browser/event/animation.rb
446
+ - opal/browser/event/audio_processing.rb
447
+ - opal/browser/event/base.rb
448
+ - opal/browser/event/before_unload.rb
449
+ - opal/browser/event/clipboard.rb
450
+ - opal/browser/event/close.rb
451
+ - opal/browser/event/composition.rb
452
+ - opal/browser/event/custom.rb
453
+ - opal/browser/event/data_transfer.rb
454
+ - opal/browser/event/device_light.rb
455
+ - opal/browser/event/device_motion.rb
456
+ - opal/browser/event/device_orientation.rb
457
+ - opal/browser/event/device_proximity.rb
458
+ - opal/browser/event/drag.rb
459
+ - opal/browser/event/focus.rb
460
+ - opal/browser/event/gamepad.rb
461
+ - opal/browser/event/hash_change.rb
462
+ - opal/browser/event/keyboard.rb
463
+ - opal/browser/event/message.rb
464
+ - opal/browser/event/mouse.rb
465
+ - opal/browser/event/page_transition.rb
466
+ - opal/browser/event/pop_state.rb
467
+ - opal/browser/event/progress.rb
468
+ - opal/browser/event/sensor.rb
469
+ - opal/browser/event/storage.rb
470
+ - opal/browser/event/touch.rb
471
+ - opal/browser/event/ui.rb
472
+ - opal/browser/event/wheel.rb
473
+ - opal/browser/event_source.rb
474
+ - opal/browser/form_data.rb
475
+ - opal/browser/history.rb
476
+ - opal/browser/http.rb
477
+ - opal/browser/http/binary.rb
478
+ - opal/browser/http/headers.rb
479
+ - opal/browser/http/request.rb
480
+ - opal/browser/http/response.rb
481
+ - opal/browser/immediate.rb
482
+ - opal/browser/interval.rb
483
+ - opal/browser/location.rb
484
+ - opal/browser/navigator.rb
485
+ - opal/browser/polyfill/visual_viewport.rb
486
+ - opal/browser/screen.rb
487
+ - opal/browser/setup/base.rb
488
+ - opal/browser/setup/full.rb
489
+ - opal/browser/setup/large.rb
490
+ - opal/browser/setup/mini.rb
491
+ - opal/browser/setup/traditional.rb
492
+ - opal/browser/socket.rb
493
+ - opal/browser/storage.rb
494
+ - opal/browser/support.rb
495
+ - opal/browser/utils.rb
496
+ - opal/browser/version.rb
497
+ - opal/browser/visual_viewport.rb
498
+ - opal/browser/window.rb
499
+ - opal/browser/window/size.rb
500
+ - opal/browser/window/view.rb
501
+ - opal/opal-browser.rb