Verify decoder integration E2E and fix live metadata probing and mapping
This commit is contained in:
+4
-3
@@ -3,14 +3,14 @@ const fs = require('node:fs');
|
||||
const vm = require('node:vm');
|
||||
const assert = require('node:assert/strict');
|
||||
const listeners = {}, documentListeners = {}, elements = [];
|
||||
let clock = 0, interval, starts = 0, stops = 0, osd = 0, returned = 0;
|
||||
let clock = 0, interval, starts = 0, stops = 0, osd = 0, returned = 0, readyState = 0;
|
||||
const pending = [];
|
||||
const location = { hash: '#/livetv', pathname: '/web/index.html', search: '', replace(value) { this.hash = value; } };
|
||||
const document = {
|
||||
fullscreenElement: null,
|
||||
body: { append(element) { elements.push(element); } },
|
||||
createElement() { return { style: {}, remove() { elements.splice(elements.indexOf(this), 1); } }; },
|
||||
querySelector() { return { readyState: 0, currentTime: 0 }; },
|
||||
querySelector() { return { readyState, currentTime: 0 }; },
|
||||
addEventListener(name, callback) { documentListeners[name] = callback; }
|
||||
};
|
||||
const window = {
|
||||
@@ -41,7 +41,8 @@ const flush = async () => { for (let i = 0; i < 8; i++) await Promise.resolve();
|
||||
const click = () => documentListeners.click({ button: 0, target: { closest: () => ({ closest: () => ({ dataset: { id: 'channel', serverid: 'server' } }) }) }, preventDefault() {}, stopImmediatePropagation() {} });
|
||||
click(); click(); await flush();
|
||||
assert.equal(starts, 1); assert.equal(elements[0].id, 'decoderPlaybackExit');
|
||||
interval(); await flush(); assert.equal(osd, 1);
|
||||
interval(); await flush(); assert.equal(osd, 0, 'OSD must wait for actual video metadata');
|
||||
readyState=1;interval(); await flush(); assert.equal(osd, 1);
|
||||
listeners.keydown({ key: 'Escape', preventDefault() {}, stopImmediatePropagation() {} });
|
||||
await flush(); assert.equal(stops, 1); assert.equal(returned, 1); assert.equal(elements.length, 0);
|
||||
click(); await flush(); assert.equal(starts, 2);
|
||||
|
||||
Reference in New Issue
Block a user