Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
49 lines
2.9 KiB
Python
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))
|