VulpesOS/tools/test-device-information.py
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

49 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""Check the shared Information panel in a real Gecko test host."""
import importlib.util
import json
from pathlib import Path
import time
from marionette_client import Client
from project import ROOT, release_info
spec = importlib.util.spec_from_file_location('probe', Path(__file__).with_name('probe-desktop.py'))
probe = importlib.util.module_from_spec(spec)
spec.loader.exec_module(probe)
release = release_info()
with Client(2857) as client:
probe.register(client)
def evaluate(app, code):
response = probe.evaluate(client, app, code)
if 'error' in response:
raise AssertionError(response)
return response.get('value')
def wait(app, code):
for _ in range(100):
value = evaluate(app, code)
if value:
return value
time.sleep(.15)
raise TimeoutError(code)
wait('system', 'return !!window.VulpesCompat;')
evaluate('system', 'await VulpesCompat.call("apps.launch",{manifestURL:"http://settings.localhost:8765/manifest.webapp"});return true;')
wait('settings', 'return document.readyState === "complete";')
evaluate('settings', """document.querySelector('#root a[href="#about"]').click();return true;""")
wait('settings', 'return !!document.querySelector("#about.current #vulpes-system-info");')
rows = evaluate('settings', 'return Object.fromEntries(Array.from(document.querySelectorAll("#vulpes-system-info > li"),li=>[li.dataset.component, {label:li.querySelector("span").textContent,value:li.querySelector("small").textContent}]));')
assert rows['vulpes']['value'] == release['version'], rows
assert rows['gaia']['value'] == release['gaia'], rows
assert rows['gecko']['value'] == client.execute('return Services.appinfo.platformVersion;'), rows
assert rows['adapter']['value'] == release['adapters']['desktop']+'-desktop', rows
assert 'tundra' not in rows, rows
assert rows['model']['label'] == 'Modèle', rows
assert evaluate('settings', """return ['deviceinfo.product_model','deviceinfo.software'].every(key=>getComputedStyle(document.querySelector('#about [data-name="'+key+'"]').closest('li')).display==='none');""")
evaluate('settings', 'document.documentElement.lang="en-US";return true;')
wait('settings', 'return document.querySelector("[data-component=model] span").textContent==="Model";')
assert evaluate('settings', 'return document.querySelector("[data-component=adapter] span").textContent;') == 'Vulpes adapter'
evaluate('settings', 'document.documentElement.lang="fr";return true;')
wait('settings', 'return document.querySelector("[data-component=model] span").textContent==="Modèle";')
report = {'passed':True,'rows':rows,'localization':['fr','en-US'],'duplicateLegacyRowsHidden':True}
(ROOT/'logs/device-information-test.json').write_text(json.dumps(report,indent=2,ensure_ascii=False)+'\n')
print(json.dumps(report,indent=2,ensure_ascii=False))