mirror of
https://github.com/jetkvm/kvm.git
synced 2026-05-21 05:20:35 +00:00
cb7746fb78
* feat(video): add H.265 codec support with auto-negotiation Add H.265 (HEVC) encoding support to the RV1106 hardware encoder alongside existing H.264. The codec is negotiated per-WebRTC session based on browser capabilities. - Add codec preference setting (Auto/H.265/H.264) to config, RPC, and UI - Auto mode inspects the browser's SDP offer and prefers H.265 when supported, with graceful fallback to H.264 for browsers without H.265 (e.g. Firefox) - Move WebRTC video track creation from newSession() to ExchangeOffer() so the codec can be resolved after seeing the browser's offer - Set encoder codec type in onFirstSessionConnected() before VideoStart() - Show active codec in the status bar when troubleshooting mode is enabled - Remove quality factor >1.0 ceiling from ctrl.c to allow bitrate testing - Fix Go wrapper to check return value from C quality factor setter - Add e2e tests: video quality bitrate measurement, codec negotiation, codec preference persistence, and a quality factor sweep benchmark - Add visual noise helpers (remote host terminal) to e2e test infrastructure * chore(e2e): remove video quality benchmark tests and helpers Remove video-quality-sweep and video-quality spec files — these are benchmarking tools, not regression tests. Also removes the visual noise helpers and hardcoded developer SSH address from helpers.ts. * feat(video): bump bitrate cap to 4000 kbps and tighten VBR ceiling - Increase base_bitrate_high from 2000 to 4000 kbps, giving users better image quality at every quality factor setting. - Tighten VBR max_bitrate from 2x to 1.5x target, reducing encoder overshoot while still allowing headroom for dynamic content. - Add frames dropped, decode time, freeze count to WebRTC test hooks for pipeline health monitoring. - Move bitrate sweep benchmark to ui/benchmarks/ with its own playwright config, separate from the e2e test suite. Sweep results (visual noise, H.264, 1080p): factor=0.1: 3082 kbps, 60fps, 0 dropped, 2.9ms decode factor=0.5: 6357 kbps, 60fps, 0 dropped, 3.6ms decode factor=1.0: 9445 kbps, 59fps, 0 dropped, 4.3ms decode
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { defineConfig } from "@playwright/test";
|
|
|
|
if (!process.env.JETKVM_URL) {
|
|
throw new Error("JETKVM_URL environment variable is required");
|
|
}
|
|
|
|
export default defineConfig({
|
|
testDir: "./e2e",
|
|
globalSetup: "./e2e/global-setup.ts",
|
|
globalTeardown: "./e2e/global-teardown.ts",
|
|
timeout: 60000,
|
|
workers: 1,
|
|
reporter: [["list", { printSteps: true }]],
|
|
use: {
|
|
baseURL: process.env.JETKVM_URL,
|
|
trace: "retain-on-failure",
|
|
video: "retain-on-failure",
|
|
screenshot: "only-on-failure",
|
|
},
|
|
projects: [
|
|
{
|
|
name: "ui",
|
|
testIgnore: [/ota-.*/, /remote-agent\/.*/, /video-codec.*/],
|
|
},
|
|
{
|
|
name: "video-codec",
|
|
testMatch: /video-codec\.spec\.ts/,
|
|
},
|
|
{
|
|
name: "remote-agent",
|
|
testDir: "./e2e/remote-agent",
|
|
testMatch: "ra-all.spec.ts",
|
|
},
|
|
{ name: "ota-signed", testMatch: /ota-signature\.spec\.ts/, dependencies: ["remote-agent"] },
|
|
{
|
|
name: "ota-prerelease-unsigned",
|
|
testMatch: /ota-prerelease-unsigned\.spec\.ts/,
|
|
dependencies: ["remote-agent"],
|
|
},
|
|
{
|
|
name: "ota-prerelease-rejected",
|
|
testMatch: /ota-prerelease-rejected\.spec\.ts/,
|
|
dependencies: ["remote-agent"],
|
|
},
|
|
{
|
|
name: "ota-specific-version",
|
|
testMatch: /ota-specific-version-unsigned\.spec\.ts/,
|
|
dependencies: ["remote-agent"],
|
|
},
|
|
{
|
|
name: "ota-upgrade-from-stable",
|
|
testMatch: /ota-upgrade-from-stable\.spec\.ts/,
|
|
dependencies: ["remote-agent"],
|
|
},
|
|
{
|
|
name: "ota-upgrade-to-signed",
|
|
testMatch: /ota-upgrade-to-signed\.spec\.ts/,
|
|
dependencies: ["remote-agent"],
|
|
},
|
|
],
|
|
});
|