5.8 KiB
5.8 KiB
Результати тестування Ultralight (Крок 0 / Go-No-Go)
Тестування виконано згідно з вимогами ULTRALIGHT_AGENT_GUIDE.md на Windows 10 x64, .NET 8, Ultralight v1.3.0 (WebKit 610.4.3.1.4, JavaScriptCore).
1. Конфігурація середовища тестування
- Платформа: Windows 10 (10.0.19045), x64
- Runtime: .NET 8.0 (
net8.0-windows) - Бібліотеки:
UltralightNet1.3.0,UltralightNet.AppCore1.3.0,UltralightNet.Binaries1.3.0 - Нативні ресурси:
AppCore.dll,Ultralight.dll,UltralightCore.dll,WebCore.dll,icudt67l.dat,cacert.pem - Тестові цілі:
about:blank(перевірка наявності Web/Media API)https://www.youtube.com/(головна сторінка YouTube SPA)https://www.youtube.com/watch?v=dQw4w9WgXcQ(пряме відео)
2. Результати тестів
2.1. Перевірка медіа API (canPlayType, HTMLVideoElement, кодеки)
Спроба виклику canPlayType завершилася фатальною помилкою:
TypeError: document.createElement('video').canPlayType is not a function.
(In 'document.createElement('video').canPlayType(...)', 'document.createElement('video').canPlayType' is undefined)
HTMLVideoElement: відсутній у global scope (ReferenceError: Can't find variable: HTMLVideoElement)HTMLAudioElement: відсутнійMediaSource(MSE): відсутнійrequestMediaKeySystemAccess(EME / DRM / Widevine): відсутнійAudioContext/ Web Audio: відсутній
2.2. Завантаження головної сторінки YouTube (https://www.youtube.com/)
- DOM: завантажився частково (1224 елементи), контейнер
<ytd-app>створений. - Помилки JS: падіння скрипта
kevlar_baseна рядку 5444 через відсутністьHTMLVideoElement:ReferenceError: Can't find variable: HTMLVideoElement (kevlar_base_module:5444) - Відеокартки / прев'ю: 0 знайдених рендерерів через збій у JS-ініціалізації YouTube.
- Споживання RAM: ~320 MB (Single Process).
2.3. Завантаження сторінки з відео (watch?v=dQw4w9WgXcQ)
- Заголовок сторінки: розпізнано коректно:
Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) - YouTube - Плеєр YouTube: плеєр відображає системне повідомлення про несумісність:
«Воспроизвести видео в этом браузере нельзя. Подробнее…»
- Відтворення звуку: 0 / відсутнє. Звук не грає, потік не декодується.
- Споживання RAM: 441.8 MB (для одного відкритого таба в одному процесі).
3. Порівняння: Ultralight vs WebView2
| Критерій | WebView2 (Chromium) | Ultralight v1.3.0 |
|---|---|---|
| HTML5 Video / Audio | Повноцінна підтримка | Не працює (canPlayType is undefined) |
| YouTube HTML5 Player | Працює ідеально | «Не можна відтворити відео в цьому браузері» |
| DRM / Widevine | Працює | Не підтримується взагалі |
| Сучасні JS API | Повна підтримка Blink | Падає на HTMLVideoElement, Trusted Types |
| RAM (одна вкладка YouTube) | ~350–450 MB (сумарно з renderer/GPU) | 441.8 MB (один процес, навіть без відео) |
| Виграш по RAM | — | 0 MB (споживання практично однакове) |
4. Висновок за правилом Go/No-Go (Крок 0)
Згідно з інструкцією ULTRALIGHT_AGENT_GUIDE.md:
«Якщо на кроці 3 YouTube взагалі не вантажиться або аудіо не програється — не переходити до Кроку 1. ...це не привід "трохи допрацювати", а сигнал, що для головного use case проєкту Ultralight як основний рушій не підходить.»
Вердикт: NO-GO для заміни WebView2 на YouTube
- Ultralight не здатен відтворювати YouTube усередині HTML: рушій не має реалізації HTML5 Video/Audio кодеків, MSE та EME. YouTube видає плашку «Воспроизвести видео в этом браузере нельзя».
- Немає виграшу по RAM: один процес Ultralight на сторінці YouTube зайняв 441.8 MB, що відповідає або навіть перевищує оптимізований режим WebView2.
- Правильний шлях для проєкту:
- Для веб-браузингу та навігації — залишати WebView2.
- Для ультралегкого звуку без навантаження на рендерер — використовувати вже створений
NativeAudioSession+YtDlpExtractor(direct audio stream через WASAPI/MediaPlayer). - Ultralight можна використовувати виключно для внутрішніх легких UI-віджетів/налаштувань (якщо виникне потреба у чистому локальному HTML-інтерфейсі).