Tests: Enhance robustness of stdout driven waiting state in Sikuli based tests.
Some tests were randomly passing, because from time to time waiting for idle was skiped. It was combination of multiple problems :
- buffering on stdout (now use readline + flush for each write to log)
- it is sometime required to wait for activity before waiting for timeout added "WaitForChangeAndIdle" to "stdoutIdleObserver"
// widget_animate.ysl2
widget_class("Animate") {
||
frequency = 5;
speed = 0;
start = false;
widget_center = undefined;
dispatch(value) {
this.speed = value / 5;
//reconfigure animation
this.request_animate();
}
animate(){
// change animation properties
for(let child of this.element.children){
if(child.nodeName.startsWith("animate")){
if(this.speed != 0 && !this.start){
this.start = true;
this.element.beginElement();
}
if(this.speed > 0){
child.setAttribute("dur", this.speed+"s");
}
else if(this.speed < 0){
child.setAttribute("dur", (-1)*this.speed+"s");
}
else{
this.start = false;
this.element.endElement();
}
}
}
}
init() {
let widget_pos = this.element.getBBox();
this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
}
||
}