aboutsummaryrefslogtreecommitdiff
path: root/js/tests
diff options
context:
space:
mode:
Diffstat (limited to 'js/tests')
-rw-r--r--js/tests/index.html2
-rw-r--r--js/tests/karma.conf.js8
-rw-r--r--js/tests/unit/carousel.js25
-rw-r--r--js/tests/unit/dropdown.js67
-rw-r--r--js/tests/unit/modal.js85
-rw-r--r--js/tests/unit/tooltip.js4
-rw-r--r--js/tests/visual/alert.html2
-rw-r--r--js/tests/visual/carousel.html1
-rw-r--r--js/tests/visual/collapse.html2
-rw-r--r--js/tests/visual/dropdown.html2
-rw-r--r--js/tests/visual/modal.html2
-rw-r--r--js/tests/visual/popover.html2
-rw-r--r--js/tests/visual/scrollspy.html3
-rw-r--r--js/tests/visual/tab.html2
-rw-r--r--js/tests/visual/tooltip.html2
15 files changed, 68 insertions, 141 deletions
diff --git a/js/tests/index.html b/js/tests/index.html
index d0ff5b82b..77c29f8f8 100644
--- a/js/tests/index.html
+++ b/js/tests/index.html
@@ -97,12 +97,12 @@
</script>
<!-- Transpiled Plugins -->
+ <script src="../dist/util.js"></script>
<script src="../dist/dom/polyfill.js"></script>
<script src="../dist/dom/manipulator.js"></script>
<script src="../dist/dom/eventHandler.js"></script>
<script src="../dist/dom/selectorEngine.js"></script>
<script src="../dist/dom/data.js"></script>
- <script src="../dist/util.js"></script>
<script src="../dist/alert.js"></script>
<script src="../dist/button.js"></script>
<script src="../dist/carousel.js"></script>
diff --git a/js/tests/karma.conf.js b/js/tests/karma.conf.js
index 469a95561..641ac8894 100644
--- a/js/tests/karma.conf.js
+++ b/js/tests/karma.conf.js
@@ -93,12 +93,12 @@ if (bundle) {
reporters.push('BrowserStack')
files = files.concat([
'node_modules/jquery/dist/jquery.slim.min.js',
+ 'js/coverage/dist/util.js',
+ 'js/coverage/dist/dom/polyfill.js',
'js/coverage/dist/dom/eventHandler.js',
'js/coverage/dist/dom/selectorEngine.js',
'js/coverage/dist/dom/data.js',
'js/coverage/dist/dom/manipulator.js',
- 'js/coverage/dist/util.js',
- 'js/coverage/dist/dom/polyfill.js',
'js/coverage/dist/dom/!(polyfill).js',
'js/coverage/dist/tooltip.js',
'js/coverage/dist/!(util|index|tooltip).js', // include all of our js/dist files except util.js, index.js and tooltip.js
@@ -115,12 +115,12 @@ if (bundle) {
)
files = files.concat([
jqueryFile,
+ 'js/coverage/dist/util.js',
+ 'js/coverage/dist/dom/polyfill.js',
'js/coverage/dist/dom/eventHandler.js',
'js/coverage/dist/dom/selectorEngine.js',
'js/coverage/dist/dom/data.js',
'js/coverage/dist/dom/manipulator.js',
- 'js/coverage/dist/util.js',
- 'js/coverage/dist/dom/polyfill.js',
'js/coverage/dist/dom/!(polyfill).js',
'js/coverage/dist/tooltip.js',
'js/coverage/dist/!(util|index|tooltip).js', // include all of our js/dist files except util.js, index.js and tooltip.js
diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js
index 9016f61ab..3db83eaa3 100644
--- a/js/tests/unit/carousel.js
+++ b/js/tests/unit/carousel.js
@@ -541,16 +541,19 @@ $(function () {
'<a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>' +
'<a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>' +
'</div>'
- var $carousel = $(templateHTML)
- $carousel.appendTo('body')
+ var $carousel = $(templateHTML).appendTo('#qunit-fixture')
$carousel.bootstrapCarousel(1)
- assert.strictEqual($carousel.data('bs.carousel')._config.interval, 3814)
+ var carousel = Carousel._getInstance($carousel[0])
+ assert.strictEqual(carousel._config.interval, 3814)
+ carousel.dispose()
$carousel.remove()
- $carousel.appendTo('body')
+ $carousel = $carousel.appendTo('#qunit-fixture')
$carousel.bootstrapCarousel(2)
- assert.strictEqual($carousel.data('bs.carousel')._config.interval, 1814, 'reverts to default interval if no data-interval is set')
+ carousel = Carousel._getInstance($carousel[0])
+
+ assert.strictEqual(carousel._config.interval, 1814, 'reverts to default interval if no data-interval is set')
$carousel.remove()
})
@@ -1080,7 +1083,7 @@ $(function () {
var $carousel = $(carouselHTML).appendTo('#qunit-fixture')
var $item = $('#item')
$carousel.bootstrapCarousel()
- var carousel = $carousel.data('bs.carousel')
+ var carousel = Carousel._getInstance($carousel[0])
var spy = sinon.spy(carousel, 'prev')
$carousel.one('slid.bs.carousel', function () {
@@ -1122,7 +1125,7 @@ $(function () {
$carousel.appendTo('#qunit-fixture')
var $item = $('#item')
$carousel.bootstrapCarousel()
- var carousel = $carousel.data('bs.carousel')
+ var carousel = Carousel._getInstance($carousel[0])
var spy = sinon.spy(carousel, 'prev')
$carousel.one('slid.bs.carousel', function () {
@@ -1169,7 +1172,7 @@ $(function () {
$carousel.appendTo('#qunit-fixture')
var $item = $('#item')
$carousel.bootstrapCarousel()
- var carousel = $carousel.data('bs.carousel')
+ var carousel = Carousel._getInstance($carousel[0])
var spy = sinon.spy(carousel, 'next')
$carousel.one('slid.bs.carousel', function () {
@@ -1212,7 +1215,7 @@ $(function () {
$carousel.appendTo('#qunit-fixture')
var $item = $('#item')
$carousel.bootstrapCarousel()
- var carousel = $carousel.data('bs.carousel')
+ var carousel = Carousel._getInstance($carousel[0])
var spy = sinon.spy(carousel, 'next')
$carousel.one('slid.bs.carousel', function () {
@@ -1264,7 +1267,7 @@ $(function () {
$carousel.appendTo('#qunit-fixture')
$carousel.bootstrapCarousel()
- var carousel = $carousel.data('bs.carousel')
+ var carousel = Carousel._getInstance($carousel[0])
var spy = sinon.spy(carousel, '_slide')
@@ -1283,7 +1286,7 @@ $(function () {
$carousel.appendTo('#qunit-fixture')
$carousel.bootstrapCarousel()
- var carousel = $carousel.data('bs.carousel')
+ var carousel = Carousel._getInstance($carousel[0])
var spy = sinon.spy(carousel, 'next')
var sandbox = sinon.createSandbox()
diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js
index a9a5773e6..3c1c9d03d 100644
--- a/js/tests/unit/dropdown.js
+++ b/js/tests/unit/dropdown.js
@@ -517,7 +517,7 @@ $(function () {
$(document.body).trigger('click')
})
- $dropdown.trigger('click')
+ $dropdown[0].click()
})
QUnit.test('should fire hide and hidden event without a clickEvent if event type is not click', function (assert) {
@@ -547,12 +547,13 @@ $(function () {
})
.on('shown.bs.dropdown', function () {
assert.ok(true, 'shown was fired')
- $dropdown.trigger($.Event('keydown', {
- which: 27
- }))
+
+ var keyDown = new Event('keydown')
+ keyDown.which = 27
+ $dropdown[0].dispatchEvent(keyDown)
})
- $dropdown.trigger('click')
+ $dropdown[0].click()
})
QUnit.test('should ignore keyboard events within <input>s and <textarea>s', function (assert) {
@@ -1132,7 +1133,7 @@ $(function () {
assert.ok(dropdown._element === null)
})
- QUnit.test('should show dropdown', function (assert) {
+ QUnit.test('should hide dropdown', function (assert) {
assert.expect(2)
var dropdownHTML =
@@ -1148,44 +1149,14 @@ $(function () {
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
- var dropdown = $dropdown.data('bs.dropdown')
+ var dropdown = Dropdown._getInstance($dropdown[0])
var done = assert.async()
$dropdown
.parent('.dropdown')
- .on('show.bs.dropdown', function () {
- assert.ok(true, 'show was fired')
- })
.on('shown.bs.dropdown', function () {
- assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
- done()
+ dropdown.hide()
})
-
- dropdown.show()
- })
-
- QUnit.test('should hide dropdown', function (assert) {
- assert.expect(2)
-
- var dropdownHTML =
- '<div class="dropdown">' +
- ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
- ' <div class="dropdown-menu">' +
- ' <a class="dropdown-item" href="#">Another link</a>' +
- ' </div>' +
- '</div>'
-
- var $dropdown = $(dropdownHTML)
- .appendTo('#qunit-fixture')
- .find('[data-toggle="dropdown"]')
- .bootstrapDropdown()
-
- var dropdown = $dropdown.data('bs.dropdown')
- var done = assert.async()
- $dropdown.trigger('click')
-
- $dropdown
- .parent('.dropdown')
.on('hide.bs.dropdown', function () {
assert.ok(true, 'hide was fired')
})
@@ -1194,7 +1165,7 @@ $(function () {
done()
})
- dropdown.hide()
+ dropdown.show()
})
QUnit.test('should not hide dropdown', function (assert) {
@@ -1213,7 +1184,7 @@ $(function () {
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
- var dropdown = $dropdown.data('bs.dropdown')
+ var dropdown = Dropdown._getInstance($dropdown[0])
$dropdown.trigger('click')
dropdown.show()
@@ -1236,7 +1207,7 @@ $(function () {
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
- var dropdown = $dropdown.data('bs.dropdown')
+ var dropdown = Dropdown._getInstance($dropdown[0])
dropdown.hide()
assert.ok(!$dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is still hidden')
})
@@ -1257,7 +1228,7 @@ $(function () {
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
- var dropdown = $dropdown.data('bs.dropdown')
+ var dropdown = Dropdown._getInstance($dropdown[0])
var done = assert.async()
$dropdown
@@ -1289,7 +1260,7 @@ $(function () {
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
- var dropdown = $dropdown.data('bs.dropdown')
+ var dropdown = Dropdown._getInstance($dropdown[0])
var done = assert.async()
$dropdown
@@ -1319,19 +1290,21 @@ $(function () {
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
- var dropdown = $dropdown.data('bs.dropdown')
+ var dropdown = Dropdown._getInstance($dropdown[0])
var done = assert.async()
- $dropdown.trigger('click')
$dropdown
.parent('.dropdown')
+ .on('shown.bs.dropdown', function () {
+ dropdown.hide()
+ })
.on('hide.bs.dropdown', function (event) {
event.preventDefault()
+ assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
done()
})
- dropdown.hide()
- assert.ok($dropdown.parent('.dropdown').hasClass('show'), 'dropdown menu is shown')
+ dropdown.show()
})
QUnit.test('should not open dropdown via show method if target is disabled via attribute', function (assert) {
diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js
index 0739f0378..dacb1fb8d 100644
--- a/js/tests/unit/modal.js
+++ b/js/tests/unit/modal.js
@@ -2,6 +2,7 @@ $(function () {
'use strict'
window.Util = typeof bootstrap !== 'undefined' ? bootstrap.Util : Util
+ var Modal = typeof window.bootstrap !== 'undefined' ? window.bootstrap.Modal : window.Modal
QUnit.module('modal plugin')
@@ -624,43 +625,6 @@ $(function () {
assert.ok(evt.defaultPrevented, 'model shown instead of navigating to href')
})
- QUnit.test('should not parse target as html', function (assert) {
- assert.expect(1)
- var done = assert.async()
-
- var $toggleBtn = $('<button data-toggle="modal" data-target="&lt;div id=&quot;modal-test&quot;&gt;&lt;div class=&quot;contents&quot;&lt;div&lt;div id=&quot;close&quot; data-dismiss=&quot;modal&quot;/&gt;&lt;/div&gt;&lt;/div&gt;"/>')
- .appendTo('#qunit-fixture')
-
- $toggleBtn.trigger('click')
- setTimeout(function () {
- assert.strictEqual($('#modal-test').length, 0, 'target has not been parsed and added to the document')
- done()
- }, 0)
- })
-
- QUnit.test('should not execute js from target', function (assert) {
- assert.expect(0)
- var done = assert.async()
-
- // This toggle button contains XSS payload in its data-target
- // Note: it uses the onerror handler of an img element to execute the js, because a simple script element does not work here
- // a script element works in manual tests though, so here it is likely blocked by the qunit framework
- var $toggleBtn = $('<button data-toggle="modal" data-target="&lt;div&gt;&lt;image src=&quot;missing.png&quot; onerror=&quot;$(&apos;#qunit-fixture button.control&apos;).trigger(&apos;click&apos;)&quot;&gt;&lt;/div&gt;"/>')
- .appendTo('#qunit-fixture')
- // The XSS payload above does not have a closure over this function and cannot access the assert object directly
- // However, it can send a click event to the following control button, which will then fail the assert
- $('<button>')
- .addClass('control')
- .on('click', function () {
- assert.notOk(true, 'XSS payload is not executed as js')
- })
- .appendTo('#qunit-fixture')
-
- $toggleBtn.trigger('click')
-
- setTimeout(done, 500)
- })
-
QUnit.test('should not try to open a modal which is already visible', function (assert) {
assert.expect(1)
var done = assert.async()
@@ -717,7 +681,7 @@ $(function () {
})
QUnit.test('should dispose modal', function (assert) {
- assert.expect(3)
+ assert.expect(2)
var done = assert.async()
var $modal = $([
@@ -731,31 +695,19 @@ $(function () {
].join('')).appendTo('#qunit-fixture')
$modal.on('shown.bs.modal', function () {
- var spy = sinon.spy($.fn, 'off')
-
- $(this).bootstrapModal('dispose')
+ var modal = Modal._getInstance($modal[0])
+ var spy = sinon.spy($modal[0], 'removeEventListener')
- var modalDataApiEvent = []
- $._data(document, 'events').click
- .forEach(function (e) {
- if (e.namespace === 'bs.data-api.modal') {
- modalDataApiEvent.push(e)
- }
- })
+ modal.dispose()
- assert.ok(typeof $(this).data('bs.modal') === 'undefined', 'modal data object was disposed')
-
- assert.ok(spy.callCount === 4, '`jQuery.off` was called')
-
- assert.ok(modalDataApiEvent.length === 1, '`Event.CLICK_DATA_API` on `document` was not removed')
-
- $.fn.off.restore()
+ assert.ok(!Modal._getInstance($modal[0]), 'modal data object was disposed')
+ assert.ok(spy.called)
done()
}).bootstrapModal('show')
})
QUnit.test('should enforce focus', function (assert) {
- assert.expect(4)
+ assert.expect(2)
var done = assert.async()
var $modal = $([
@@ -770,27 +722,26 @@ $(function () {
.bootstrapModal()
.appendTo('#qunit-fixture')
- var modal = $modal.data('bs.modal')
+ var modal = Modal._getInstance($modal[0])
var spy = sinon.spy(modal, '_enforceFocus')
- var spyDocOff = sinon.spy($(document), 'off')
- var spyDocOn = sinon.spy($(document), 'on')
$modal.one('shown.bs.modal', function () {
assert.ok(spy.called, '_enforceFocus called')
- assert.ok(spyDocOff.withArgs('focusin.bs.modal'))
- assert.ok(spyDocOn.withArgs('focusin.bs.modal'))
-
var spyFocus = sinon.spy(modal._element, 'focus')
- var event = $.Event('focusin', {
- target: $('#qunit-fixture')[0]
- })
- $(document).one('focusin', function () {
+ function focusInListener() {
assert.ok(spyFocus.called)
+ document.removeEventListener('focusin', focusInListener)
done()
+ }
+ document.addEventListener('focusin', focusInListener)
+
+ var focusInEvent = new Event('focusin')
+ Object.defineProperty(focusInEvent, 'target', {
+ value: $('#qunit-fixture')[0]
})
- $(document).trigger(event)
+ document.dispatchEvent(focusInEvent)
})
.bootstrapModal('show')
})
diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js
index 23cd0cafd..47425dd57 100644
--- a/js/tests/unit/tooltip.js
+++ b/js/tests/unit/tooltip.js
@@ -1034,7 +1034,7 @@ $(function () {
var $tipTest = $('<div class="bs-tooltip" />')
.appendTo('#qunit-fixture')
- var tooltip = $tooltip.data('bs.tooltip')
+ var tooltip = Tooltip._getInstance($tooltip[0])
tooltip.tip = null
tooltip._handlePopperPlacementChange({
@@ -1054,7 +1054,7 @@ $(function () {
.appendTo('#qunit-fixture')
.bootstrapTooltip()
- var tooltip = $tooltip.data('bs.tooltip')
+ var tooltip = Tooltip._getInstance($tooltip[0])
assert.strictEqual(tooltip._isEnabled, true)
diff --git a/js/tests/visual/alert.html b/js/tests/visual/alert.html
index 8b073a9fc..2e0733c42 100644
--- a/js/tests/visual/alert.html
+++ b/js/tests/visual/alert.html
@@ -51,11 +51,11 @@
</div>
</div>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
<script src="../../dist/dom/data.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/alert.js"></script>
</body>
</html>
diff --git a/js/tests/visual/carousel.html b/js/tests/visual/carousel.html
index 42e81df6c..fba62866d 100644
--- a/js/tests/visual/carousel.html
+++ b/js/tests/visual/carousel.html
@@ -45,6 +45,7 @@
</div>
</div>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
diff --git a/js/tests/visual/collapse.html b/js/tests/visual/collapse.html
index e905e451a..1d6533a3c 100644
--- a/js/tests/visual/collapse.html
+++ b/js/tests/visual/collapse.html
@@ -71,12 +71,12 @@
</div>
</div>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
<script src="../../dist/dom/data.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/collapse.js"></script>
</body>
</html>
diff --git a/js/tests/visual/dropdown.html b/js/tests/visual/dropdown.html
index 951aefa96..c6f8387a6 100644
--- a/js/tests/visual/dropdown.html
+++ b/js/tests/visual/dropdown.html
@@ -210,12 +210,12 @@
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/data.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/dropdown.js"></script>
<script src="../../dist/collapse.js"></script>
</body>
diff --git a/js/tests/visual/modal.html b/js/tests/visual/modal.html
index 1f0eb0d63..b37beeef3 100644
--- a/js/tests/visual/modal.html
+++ b/js/tests/visual/modal.html
@@ -206,12 +206,12 @@
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/data.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/modal.js"></script>
<script src="../../dist/collapse.js"></script>
<script src="../../dist/tooltip.js"></script>
diff --git a/js/tests/visual/popover.html b/js/tests/visual/popover.html
index 676ca9448..d408dbb90 100644
--- a/js/tests/visual/popover.html
+++ b/js/tests/visual/popover.html
@@ -32,12 +32,12 @@
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/data.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/tooltip.js"></script>
<script src="../../dist/popover.js"></script>
<script>
diff --git a/js/tests/visual/scrollspy.html b/js/tests/visual/scrollspy.html
index 00def6a7c..692d84cf4 100644
--- a/js/tests/visual/scrollspy.html
+++ b/js/tests/visual/scrollspy.html
@@ -86,13 +86,12 @@
<p>Ad leggings keytar, brunch id art party dolor labore.</p>
</div>
- <script src="../../../site/docs/4.2/assets/js/vendor/popper.min.js"></script>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/data.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/scrollspy.js"></script>
<script src="../../dist/dropdown.js"></script>
<script src="../../dist/collapse.js"></script>
diff --git a/js/tests/visual/tab.html b/js/tests/visual/tab.html
index 7c6d95ee4..0b0582add 100644
--- a/js/tests/visual/tab.html
+++ b/js/tests/visual/tab.html
@@ -226,12 +226,12 @@
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/data.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/tab.js"></script>
<script src="../../dist/dropdown.js"></script>
</body>
diff --git a/js/tests/visual/tooltip.html b/js/tests/visual/tooltip.html
index d97f8d57a..1cc5507a7 100644
--- a/js/tests/visual/tooltip.html
+++ b/js/tests/visual/tooltip.html
@@ -72,12 +72,12 @@
</div>
<script src="../../../node_modules/popper.js/dist/umd/popper.min.js"></script>
+ <script src="../../dist/util.js"></script>
<script src="../../dist/dom/polyfill.js"></script>
<script src="../../dist/dom/manipulator.js"></script>
<script src="../../dist/dom/data.js"></script>
<script src="../../dist/dom/eventHandler.js"></script>
<script src="../../dist/dom/selectorEngine.js"></script>
- <script src="../../dist/util.js"></script>
<script src="../../dist/tooltip.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {