Bug 1675375 Part 6: Break test_group_hittest.html into parts. r=botond

This test fails in automation, but those failures are difficult to reproduce
in local builds. When attempting to reproduce locally, the whole test sometimes
times out. Isolating specific subtests seems to affect the test outcomes as
well. Splitting the test into pieces seems to be the best way to make failures
in this test more actionable.

Differential Revision: https://phabricator.services.mozilla.com/D111167
This commit is contained in:
Brad Werth 2021-04-14 03:17:42 +00:00
Родитель 1c0f783fc7
Коммит 42ff614cbd
4 изменённых файлов: 73 добавлений и 17 удалений

Просмотреть файл

@ -21,7 +21,7 @@
<body>
<script type="application/javascript">
var SPAM_LIMIT = 1000; // bigger numbers make the test run longer
var SPAM_LIMIT = 200; // bigger numbers make the test run longer
// This function adds and removes a scrollable div very rapidly (via
// setTimeout(0) self-scheduling). This causes very frequent layer

Просмотреть файл

@ -86,7 +86,7 @@
toolkit == 'cocoa' # synthesized wheel smooth-scrolling not supported on OS X
xorigin # JavaScript error: http://mochi.test:8888/tests/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js, line 10: Error: Permission denied to access property "getResolution"
[test_wheel_scroll.html]
skip-if =
skip-if =
os == 'android' # wheel events not supported on mobile
xorigin # Hangs
[test_wheel_transactions.html]
@ -97,7 +97,11 @@
skip-if =
toolkit == 'android' # wheel events not supported on mobile
xorigin # Hangs
[test_group_hittest.html]
[test_group_hittest-1.html]
skip-if =
toolkit == 'android' # mouse events not supported on mobile
xorigin # Hangs
[test_group_hittest-2.html]
skip-if =
toolkit == 'android' # mouse events not supported on mobile
xorigin # Hangs

Просмотреть файл

@ -0,0 +1,59 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Various hit-testing tests that spawn in new windows - Part 1</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="apz_test_utils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript">
var prefs = [
// Turn off displayport expiry so that we don't miss failures where the
// displayport is set and then expires before we get around to doing the
// hit-test inside the activated scrollframe.
["apz.displayport_expiry_ms", 0],
// Always layerize the scrollbar track, so as to get consistent results
// across platforms. Eventually we should probably get rid of this and make
// the tests more robust in terms of testing all the different cross-platform
// variations.
["layout.scrollbars.always-layerize-track", true],
// We need this pref to allow the synthetic mouse events to propagate to APZ,
// and to allow the MozMouseHittest event in particular to be dispatched to
// APZ as a MouseInput so the hit result is recorded.
["test.events.async.enabled", true],
// Turns on APZTestData logging which we use to obtain the hit test results.
["apz.test.logging_enabled", true],
];
var overscroll_prefs = [...prefs,
["apz.overscroll.enabled", true],
["apz.overscroll.test_async_scroll_offset.enabled", true],
];
var subtests = [
{"file": "helper_hittest_basic.html", "prefs": prefs},
{"file": "helper_hittest_fixed_in_scrolled_transform.html", "prefs": prefs},
{"file": "helper_hittest_float_bug1434846.html", "prefs": prefs},
{"file": "helper_hittest_float_bug1443518.html", "prefs": prefs},
{"file": "helper_hittest_checkerboard.html", "prefs": prefs},
{"file": "helper_hittest_backface_hidden.html", "prefs": prefs},
{"file": "helper_hittest_touchaction.html", "prefs": prefs},
{"file": "helper_hittest_nested_transforms_bug1459696.html", "prefs": prefs},
{"file": "helper_hittest_sticky_bug1478304.html", "prefs": prefs},
{"file": "helper_hittest_clipped_fixed_modal.html", "prefs": prefs},
];
if (isApzEnabled()) {
SimpleTest.waitForExplicitFinish();
window.onload = function() {
runSubtestsSeriallyInFreshWindows(subtests)
.then(SimpleTest.finish, SimpleTest.finishWithFailure);
};
}
</script>
</head>
<body>
</body>
</html>

Просмотреть файл

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>Various hit-testing tests that spawn in new windows</title>
<title>Various hit-testing tests that spawn in new windows - Part 2</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="apz_test_utils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
@ -32,23 +32,14 @@ var overscroll_prefs = [...prefs,
];
var subtests = [
{"file": "helper_hittest_basic.html", "prefs": prefs},
{"file": "helper_hittest_fixed_in_scrolled_transform.html", "prefs": prefs},
{"file": "helper_hittest_float_bug1434846.html", "prefs": prefs},
{"file": "helper_hittest_float_bug1443518.html", "prefs": prefs},
{"file": "helper_hittest_checkerboard.html", "prefs": prefs},
{"file": "helper_hittest_backface_hidden.html", "prefs": prefs},
{"file": "helper_hittest_touchaction.html", "prefs": prefs},
{"file": "helper_hittest_nested_transforms_bug1459696.html", "prefs": prefs},
{"file": "helper_hittest_sticky_bug1478304.html", "prefs": prefs},
{"file": "helper_hittest_clipped_fixed_modal.html", "prefs": prefs},
{"file": "helper_hittest_pointerevents_svg.html", "prefs": prefs},
{"file": "helper_hittest_clippath.html", "prefs": prefs},
{"file": "helper_hittest_hoisted_scrollinfo.html", "prefs": prefs},
{"file": "helper_hittest_spam.html", "prefs": prefs},
{"file": "helper_hittest_hidden_inactive_scrollframe.html", "prefs": prefs},
{"file": "helper_hittest_overscroll.html", "prefs": overscroll_prefs},
{"file": "helper_hittest_overscroll_subframe.html", "prefs": overscroll_prefs},
// This test should be at the end, because it's prone to timeout.
{"file": "helper_hittest_spam.html", "prefs": prefs},
];
function addConditionalTests(tests) {
@ -58,9 +49,11 @@ function addConditionalTests(tests) {
var utils = SpecialPowers.getDOMWindowUtils(window);
var isWebRender = utils.layerManagerType.startsWith("WebRender");
if (isWebRender) {
tests = tests.concat([
// Add new tests at the beginning, to ensure the final test remains in
// the final position.
tests = [
{"file": "helper_hittest_deep_scene_stack.html", "prefs": prefs},
]);
].concat(tests);
}
return tests;
}