summaryrefslogtreecommitdiff
path: root/gui-wm/wayfire/tests/render-regression/dynamic-check.py
blob: d64f4cc9cae686bf1d796e535453e7d6d5a2618e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import time,io,subprocess
from PIL import Image,ImageChops,ImageStat
from ipc import ipc,ENV
subprocess.run(['wlr-randr','--output','HEADLESS-1','--custom-mode','640x480','--pos=-640,0'],env=ENV,check=True)
ipc('test/rectangle',{'show':True});ipc('test/cube',{})
time.sleep(1.1)
for case in [{'show':True,'blue':True}, {'show':True,'blue':True,'moved':True}, {'show':False}, {'show':True}]:
 ipc('test/rectangle',case);time.sleep(.2)
 live=Image.open(io.BytesIO(subprocess.check_output(['grim','-o','HEADLESS-1','-'],env=ENV))).convert('RGB')
 ipc('test/snapshot')
 fresh=Image.open(ENV['XDG_RUNTIME_DIR'] + '/snapshot.ppm').convert('RGB')
 error=ImageStat.Stat(ImageChops.difference(live,fresh)).mean
 assert max(error)<2, (case,error)
 print('Tracked damage vs fresh composition:',case,'mean channel error',error,flush=True)
ipc('test/cube',{'stop':True});ipc('test/rectangle',{'show':False})