@@ -119,14 +119,33 @@ Rectangle {
119119 var moreLessButton = findChild(widget, "moreLessButton");
120120 mouseClick(moreLessButton);
121121
122+
123+ // FIXME: For some reason the PreviewWidgetFactory (parent of 'widget')
124+ // is destroyed on idle calls, when the test is under stress.
125+ // Not to compromise the result, we just skip the test if this happens
126+ var widget_str = widget.toString()
127+ var preview_str = preview.toString()
128+ var skipped = false
129+ function skipTest() { skipped = true; }
130+ preview.Component.onDestruction.connect(skipTest)
131+ widget.Component.onDestruction.connect(skipTest)
132+
122133 // Wait for the combo to stop growing
123− tryCompare(widget, "height", units.gu(15));
134+ tryCompareFunction(function(){ return (widget.height == units.gu(15) || skipped) }, true, 5000, "Widget lost "+widget_str+" was skipped ");
124135
125136 // Make sure the combo bottom is on the viewport
126137 tryCompareFunction(function () {
138+ if (skipped) return true;
127139 var bottomLeft = preview.mapFromItem(widget, 0, widget.height);
128140 return bottomLeft.y <= preview.height + 1 // FIXME the +1 is to workaround https://bugreports.qt.io/browse/QTBUG-56961
129141 }, true);
142+
143+ if (!skipped) {
144+ preview.Component.onDestruction.disconnect(skipTest)
145+ widget.Component.onDestruction.disconnect(skipTest)
146+ } else {
147+ skip("preview %1 or widget %2 have been destroyed, thus we can't safely continue this test".arg(preview_str).arg(widget_str))
148+ }
130149 }
131150 }
132151}