mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-23 05:04:42 +00:00
Migrate some tests to the new htmlRunner
Fix events.get_timeStamp (was events.get_timestamp, wrong casing). Rename `newRunner` to `htmlRunner`. move tests to src/tests (from src/browser/tests). src/runtime and possibly other parts might want to have html tests too.
This commit is contained in:
16
src/tests/events/custom.html
Normal file
16
src/tests/events/custom.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<script src="../testing.js"></script>
|
||||
<script id=custom>
|
||||
let capture = null;
|
||||
const el = document.createElement('div');
|
||||
el.addEventListener('c1', (e) => { capture = 'c1-' + new String(e.detail)});
|
||||
el.addEventListener('c2', (e) => { capture = 'c2-' + new String(e.detail.over)});
|
||||
|
||||
el.dispatchEvent(new CustomEvent('c1'));
|
||||
testing.expectEqual("c1-null", capture);
|
||||
|
||||
el.dispatchEvent(new CustomEvent('c1', {detail: '123'}));
|
||||
testing.expectEqual("c1-123", capture);
|
||||
|
||||
el.dispatchEvent(new CustomEvent('c2', {detail: {over: 9000}}));
|
||||
testing.expectEqual("c2-9000", capture);
|
||||
</script>
|
||||
138
src/tests/events/event.html
Normal file
138
src/tests/events/event.html
Normal file
@@ -0,0 +1,138 @@
|
||||
<script src="../testing.js"></script>
|
||||
|
||||
<div id=content>
|
||||
<p id="para"></p>
|
||||
</div>
|
||||
|
||||
<script id=dispatch>
|
||||
const startTime = new Date().getTime();
|
||||
|
||||
let content = $('#content');
|
||||
// let para = document.getElementById('para');
|
||||
var nb = 0;
|
||||
var evt = null;
|
||||
|
||||
const incrementCallback = function(e) {
|
||||
evt = e;
|
||||
nb += 1;
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
content.addEventListener('dispatch', incrementCallback);
|
||||
|
||||
content.dispatchEvent(new Event('dispatch', {bubbles: true, cancelable: true}));
|
||||
testing.expectEqual(1, nb);
|
||||
testing.expectEqual(content, evt.target);
|
||||
testing.expectEqual(true, evt.bubbles);
|
||||
testing.expectEqual(true, evt.cancelable);
|
||||
testing.expectEqual(true, evt.defaultPrevented);
|
||||
testing.expectEqual(true, evt.isTrusted);
|
||||
testing.expectEqual(true, evt.timeStamp >= Math.floor(startTime/1000));
|
||||
</script>
|
||||
|
||||
<script id=propogate>
|
||||
nb = 0;
|
||||
let para = $('#para');
|
||||
// the stop listener is capturing, so it propogates down
|
||||
content.addEventListener('stop',function(e) {
|
||||
e.stopPropagation();
|
||||
nb += 1;
|
||||
}, true)
|
||||
|
||||
para.addEventListener('stop',function(e) {
|
||||
nb += 10;
|
||||
});
|
||||
|
||||
para.dispatchEvent(new Event('stop'));
|
||||
// didn't propogate down (because of capturing) to para handler
|
||||
testing.expectEqual(1, nb);
|
||||
</script>
|
||||
|
||||
<script id=immediate>
|
||||
nb = 0;
|
||||
|
||||
content.addEventListener('immediate', function(e) {
|
||||
e.stopImmediatePropagation();
|
||||
nb += 1;
|
||||
});
|
||||
|
||||
// the following event listener will not be invoked
|
||||
content.addEventListener('immediate', function(e) {
|
||||
nb += 10;
|
||||
});
|
||||
|
||||
content.dispatchEvent(new Event('immediate'));
|
||||
testing.expectEqual(1, nb);
|
||||
</script>
|
||||
|
||||
<script id=legacy>
|
||||
nb = 0;
|
||||
content.addEventListener('legacy', incrementCallback);
|
||||
let evtLegacy = document.createEvent('Event');
|
||||
evtLegacy.initEvent('legacy');
|
||||
content.dispatchEvent(evtLegacy);
|
||||
testing.expectEqual(1, nb);
|
||||
</script>
|
||||
|
||||
<script id=removeListener>
|
||||
nb = 0;
|
||||
document.addEventListener('count', incrementCallback);
|
||||
document.removeEventListener('count', incrementCallback);
|
||||
document.dispatchEvent(new Event('count'));
|
||||
testing.expectEqual(0, nb);
|
||||
</script>
|
||||
|
||||
<script id=once>
|
||||
document.addEventListener('count', incrementCallback, {once: true});
|
||||
document.dispatchEvent(new Event('count'));
|
||||
document.dispatchEvent(new Event('count'));
|
||||
document.dispatchEvent(new Event('count'));
|
||||
testing.expectEqual(1, nb);
|
||||
</script>
|
||||
|
||||
<script id=abortController>
|
||||
nb = 0;
|
||||
|
||||
let ac = new AbortController()
|
||||
document.addEventListener('count', incrementCallback, {signal: ac.signal})
|
||||
document.dispatchEvent(new Event('count'));
|
||||
document.dispatchEvent(new Event('count'));
|
||||
ac.abort();
|
||||
document.dispatchEvent(new Event('count'));
|
||||
testing.expectEqual(2, nb);
|
||||
document.removeEventListener('count', incrementCallback);
|
||||
</script>
|
||||
|
||||
<script id=composedPath>
|
||||
testing.expectEqual([], new Event('').composedPath());
|
||||
|
||||
let div1 = document.createElement('div');
|
||||
let sr1 = div1.attachShadow({mode: 'open'});
|
||||
sr1.innerHTML = "<p id=srp1></p>";
|
||||
document.getElementsByTagName('body')[0].appendChild(div1);
|
||||
|
||||
let cp = null;
|
||||
const shadowCallback = function(e) {
|
||||
cp = e.composedPath().map((n) => n.id || n.nodeName || n.toString());
|
||||
}
|
||||
|
||||
div1.addEventListener('click', shadowCallback);
|
||||
sr1.getElementById('srp1').click();
|
||||
testing.expectEqual(
|
||||
['srp1', '#document-fragment', 'DIV', 'BODY', 'HTML', '#document', '[object Window]'],
|
||||
cp
|
||||
);
|
||||
|
||||
let div2 = document.createElement('div');
|
||||
let sr2 = div2.attachShadow({mode: 'closed'});
|
||||
sr2.innerHTML = "<p id=srp2></p>";
|
||||
document.getElementsByTagName('body')[0].appendChild(div2);
|
||||
|
||||
cp = null;
|
||||
div2.addEventListener('click', shadowCallback);
|
||||
sr2.getElementById('srp2').click();
|
||||
testing.expectEqual(
|
||||
['DIV', 'BODY', 'HTML', '#document', '[object Window]'],
|
||||
cp
|
||||
);
|
||||
</script>
|
||||
33
src/tests/events/mouse.html
Normal file
33
src/tests/events/mouse.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<script src="../testing.js"></script>
|
||||
<script id=default>
|
||||
let event = new MouseEvent('click');
|
||||
testing.expectEqual('click', event.type);
|
||||
testing.expectEqual(true, event instanceof MouseEvent);
|
||||
testing.expectEqual(true, event instanceof Event);
|
||||
testing.expectEqual(0, event.clientX);
|
||||
testing.expectEqual(0, event.clientY);
|
||||
testing.expectEqual(0, event.screenX);
|
||||
testing.expectEqual(0, event.screenY);
|
||||
</script>
|
||||
|
||||
<script id=parameters>
|
||||
let new_event = new MouseEvent('click', { 'button': 0, 'clientX': 10, 'clientY': 20 });
|
||||
testing.expectEqual(0, new_event.button);
|
||||
testing.expectEqual(10, new_event.x);
|
||||
testing.expectEqual(20, new_event.y);
|
||||
testing.expectEqual(10, new_event.screenX);
|
||||
testing.expectEqual(20, new_event.screenY);
|
||||
</script>
|
||||
|
||||
<script id=listener>
|
||||
let me = new MouseEvent('click');
|
||||
testing.expectEqual(true, me instanceof Event);
|
||||
|
||||
var evt = null;
|
||||
document.addEventListener('click', function (e) {
|
||||
evt = e;
|
||||
});
|
||||
document.dispatchEvent(me);
|
||||
testing.expectEqual('click', evt.type);
|
||||
testing.expectEqual(true, evt instanceof MouseEvent);
|
||||
</script>
|
||||
Reference in New Issue
Block a user