Release 2.22.0: normalize playlist schedules and unify player sync
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m21s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 32s

This commit is contained in:
lzstealth committed 2026-10-27 22:54:38 +00:00
1 parent 7748129307
commit b71958cb38
39 files changed
+1174 -314

No files matched your search

+31 -1
View File
@@ -3,7 +3,37 @@ const assert = require('node:assert/strict');
require('../src/common');
const { createWebBootstrap } = require('../src/web/bootstrap');
const { createWebBootstrap, mergePlayerSnapshotConnections } = require('../src/web/bootstrap');
const { createWebConfig } = require('../src/web/lib/config');
test('dashboard combines player and bridge snapshots without duplicating clients', () => {
const localClient = { id: 'connection-1', clientId: 'client-1', deviceId: 'device-1', playerPublicBaseUrl: 'http://player.local' };
const bridgeClient = { id: 'connection-2', clientId: 'client-2', deviceId: 'device-2', playerPublicBaseUrl: 'https://player.example' };
const connections = mergePlayerSnapshotConnections([
[localClient, bridgeClient],
[localClient]
]);
assert.deepEqual(connections, [localClient, bridgeClient]);
});
test('web config uses the player directly when no bridge URL is configured', () => {
const previousBridgeUrl = process.env.BRIDGE_INTERNAL_URL;
delete process.env.BRIDGE_INTERNAL_URL;
try {
assert.equal(createWebConfig().bridgeInternalUrl, 'http://player-bridge:8090');
process.env.BRIDGE_INTERNAL_URL = '';
const config = createWebConfig();
assert.equal(config.bridgeInternalUrl, '');
assert.equal(config.playerInternalUrl, 'http://player:8081');
} finally {
if (previousBridgeUrl === undefined) {
delete process.env.BRIDGE_INTERNAL_URL;
} else {
process.env.BRIDGE_INTERNAL_URL = previousBridgeUrl;
}
}
});
test('dashboard websocket broadcasts keep the last successful snapshot when refreshes fail', async () => {
let adminDataCalls = 0;