Files
carinha-control-panel/tests/test_braco_browser.py
T

38 lines
2.6 KiB
Python

from playwright.sync_api import sync_playwright
import json
with sync_playwright() as p:
b=p.chromium.launch(headless=True); page=b.new_page(viewport={'width':1400,'height':1000})
cfg=dict(disponivel=True,erro='',calibracao=[dict(canal=i,minimo=1400,maximo=1600) for i in range(8)],posturas=[],articulacoes=[dict(nome=n,canal=c) for n,c in zip(['Garra','Punho 1','Punho 2','Braço superior','Braço inferior','Antebraço','Base'],[0,1,2,3,4,5,7])])
calls=[]; errors=[]
def handle(route):
if route.request.method=='POST':
data=route.request.post_data_json; calls.append((route.request.url,data))
if route.request.url.endswith('/config'): cfg.update(data)
route.fulfill(content_type='application/json',body=json.dumps(cfg))
page.route('**/braco/status',handle); page.route('**/braco/config',handle); page.route('**/braco/mover',handle); page.route('**/braco/parar',handle)
page.on('pageerror',lambda e:errors.append(str(e)))
page.goto('http://192.168.1.35:8100/braco');page.wait_for_selector('#joint6')
assert page.locator('#sliders input').count()==7
assert not page.locator('#enable').is_checked()
page.locator('#joint1').evaluate("e=>{e.value=95;e.dispatchEvent(new Event('input'))}");page.wait_for_timeout(200)
assert calls==[]
page.locator('#enable').check();assert calls==[]
page.locator('#joint1').evaluate("e=>{e.value=85;e.dispatchEvent(new Event('input'))}");page.wait_for_timeout(650)
moves=[d for u,d in calls if u.endswith('/mover')]
assert moves and moves[-1]['angulos'][1]==85,moves
assert len(moves[0]['angulos'])==7
page.locator('#stop').click();page.wait_for_timeout(200)
assert calls[-1][0].endswith('/parar');assert not page.locator('#enable').is_checked()
page.on('dialog',lambda d:d.accept('Teste centro'))
page.locator('#savePose').click();page.wait_for_timeout(250)
assert '1 posturas' in page.locator('#count').inner_text()
page.locator('#enable').check();page.locator('#play').click();page.wait_for_timeout(1100)
assert 'Sequência concluída' in page.locator('#console').inner_text()
page.locator('#stop').click();page.wait_for_timeout(200)
page.screenshot(path='C:/Users/JullioPC/Documents/Codex/2026-10-04/o/outputs/carinha-pc/docs/braco-painel.png',full_page=True)
page.set_viewport_size({'width':390,'height':844})
assert page.evaluate('document.documentElement.scrollWidth<=innerWidth')
assert not errors,errors
print('OK: sete sliders, opt-in, velocidade, parar, salvar/reproduzir, mobile; comandos simulados')
b.close()