Files
KVideo/verification/tests/regression/resolution-probe-utils.test.ts
kuekhaoyang 3771b63332 feat: add self-contained strict verification chain
Keep every post-59948b5 change inside verification/. The verifier owns its npm working directory and sanitized Docker context, so no release metadata or root Docker configuration is modified.
2026-08-02 06:11:13 +08:00

66 lines
2.0 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {
extractResolutionHint,
extractVariantPlaylistUrls,
parseResolutionFromManifest,
} from '../../../lib/player/resolution-probe-utils';
// GH-ISSUE: 106,110,111; GH-PR: 160,161
test('extractResolutionHint recognizes resolution hints from URLs and remarks', () => {
assert.deepEqual(
extractResolutionHint('https://cdn.example.com/show/2160/index.m3u8'),
{ label: '4K', color: 'bg-amber-500', width: 3840, height: 2160 }
);
assert.deepEqual(
extractResolutionHint('片源 1280x720'),
{ label: '720P', color: 'bg-teal-500', width: 1280, height: 720 }
);
assert.equal(extractResolutionHint('蓝光原盘'), null);
});
test('parseResolutionFromManifest prefers the highest explicit resolution', () => {
const manifest = `#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=4800000,RESOLUTION=1280x720,NAME="720P"
mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=9200000,RESOLUTION=1920x1080,NAME="1080P"
high/index.m3u8
`;
assert.deepEqual(
parseResolutionFromManifest(manifest, 'https://media.example.com/master.m3u8'),
{ label: '1080P', color: 'bg-green-500', width: 1920, height: 1080 }
);
});
test('parseResolutionFromManifest falls back to variant URL hints when RESOLUTION is missing', () => {
const manifest = `#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=9200000,NAME="Ultra"
./video_4k/index.m3u8
`;
assert.deepEqual(
parseResolutionFromManifest(manifest, 'https://media.example.com/master.m3u8'),
{ label: '4K', color: 'bg-amber-500', width: 3840, height: 2160 }
);
});
test('extractVariantPlaylistUrls resolves stream and iframe variant URLs', () => {
const manifest = `#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=9200000,NAME="1080P"
./video_1080/index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=200000,URI="./iframes/720p.m3u8"
`;
assert.deepEqual(
extractVariantPlaylistUrls(manifest, 'https://media.example.com/master.m3u8'),
[
'https://media.example.com/video_1080/index.m3u8',
'https://media.example.com/iframes/720p.m3u8',
]
);
});