diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c
index 890c3e6..9d0642a 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -18,7 +18,7 @@
 /* Fixed value for ignoring some checks */
 #define MOCK_IGNORE 0xffffu
 
-/* Fuzzy matches for beep time */
+/* Fuzzy matches for check_time() */
 #define FUZZ_MS 200
 
 /* Mock data */
@@ -65,7 +65,6 @@
 static int mock_key_trusted[64];
 static int mock_key_total;
 
-static uint32_t mock_get_timer_last_ms;
 static uint32_t mock_time_ms;
 static const uint32_t mock_time_start_ms = 31ULL * VB2_MSEC_PER_SEC;
 
@@ -247,6 +246,13 @@
 	};
 }
 
+/* Check if the result time falls in range [expected, expected + FUZZ_MS) */
+static void check_time(uint32_t result, uint32_t expected, const char *desc)
+{
+	TEST_TRUE(result >= expected, desc);
+	TEST_TRUE(result - expected < FUZZ_MS, "  within FUZZ_MS");
+}
+
 /* Type of test to reset for */
 enum reset_type {
 	FOR_DEVELOPER,
@@ -301,7 +307,6 @@
 	mock_key_total = 0;
 
 	/* For vb2ex_mtime and vb2ex_msleep  */
-	mock_get_timer_last_ms = 0;
 	mock_time_ms = mock_time_start_ms;
 
 	/* For vb2ex_beep */
@@ -438,7 +443,6 @@
 
 uint32_t vb2ex_mtime(void)
 {
-	mock_get_timer_last_ms = mock_time_ms;
 	return mock_time_ms;
 }
 
@@ -467,10 +471,8 @@
 
 		TEST_EQ(msec, beep->msec, "  beep duration");
 		TEST_EQ(frequency, beep->frequency, "  beep frequency");
-		TEST_TRUE(cur_time >= beep->time_expected,
-			  "  beep started after expected time");
-		TEST_TRUE(cur_time - beep->time_expected < FUZZ_MS,
-			  "  beep started within FUZZ_MS");
+		check_time(cur_time, beep->time_expected,
+			   "  beep started after expected time");
 	}
 
 	mock_time_ms += msec;
@@ -590,8 +592,8 @@
 	expect_beep(250, 400, DEV_DELAY_BEEP2_MS);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"proceed to internal disk after timeout");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
-		  DEV_DELAY_NORMAL_MS, "  finished delay");
+	check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_NORMAL_MS,
+		   "  finished delay");
 	TEST_EQ(mock_beep_count, 2, "  beeped twice");
 	TEST_TRUE(mock_iters >= mock_vbtlk_total, "  used up mock_vbtlk");
 
@@ -601,10 +603,8 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"use short delay");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
-		  DEV_DELAY_SHORT_MS, "  finished delay");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  not a 30s delay");
+	check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_SHORT_MS,
+		   "  finished delay");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
 	/* Stop timer on any user input: normal delay */
@@ -613,6 +613,8 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"stop timer on any user input: normal delay");
+	TEST_TRUE(mock_time_ms - mock_time_start_ms > DEV_DELAY_NORMAL_MS,
+		  "  delay aborted");
 	TEST_EQ(mock_calls_until_shutdown, 0, "  loop forever");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
@@ -623,6 +625,8 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"stop timer on any user input: short delay");
+	TEST_TRUE(mock_time_ms - mock_time_start_ms > DEV_DELAY_SHORT_MS,
+		  "  delay aborted");
 	TEST_EQ(mock_calls_until_shutdown, 0, "  loop forever");
 	TEST_EQ(mock_beep_count, 0, "  never beeped");
 
@@ -638,8 +642,13 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"select boot internal in dev menu");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
+
+	/* Ctrl+U = boot external */
+	reset_common_data(FOR_DEVELOPER);
+	add_mock_keypress(VB_KEY_CTRL('U'));
+	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
+	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
+		"ctrl+u = boot external");
 
 	/* Ctrl+D = boot internal */
 	reset_common_data(FOR_DEVELOPER);
@@ -647,8 +656,6 @@
 	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"ctrl+d = boot internal");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal */
 	if (DETACHABLE) {
@@ -657,8 +664,6 @@
 		add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
 		TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 			"VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal");
-		TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-			  DEV_DELAY_NORMAL_MS, "  delay aborted");
 	}
 
 	/* Proceed to external disk after timeout */
@@ -669,8 +674,8 @@
 	expect_beep(250, 400, DEV_DELAY_BEEP2_MS);
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"proceed to external disk after timeout");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms >=
-		  DEV_DELAY_NORMAL_MS, "  finished delay");
+	check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_NORMAL_MS,
+		   "  finished delay");
 	TEST_EQ(mock_beep_count, 2, "  beeped twice");
 	TEST_TRUE(mock_iters >= mock_vbtlk_total, "  used up mock_vbtlk");
 
@@ -695,17 +700,6 @@
 	mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
 	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 		"select boot external in dev menu");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
-
-	/* Ctrl+U = boot external */
-	reset_common_data(FOR_DEVELOPER);
-	add_mock_keypress(VB_KEY_CTRL('U'));
-	add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
-	TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
-		"ctrl+u = boot external");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* Ctrl+L = boot legacy (allowed) */
 	reset_common_data(FOR_DEVELOPER);
@@ -714,8 +708,6 @@
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"ctrl+l = boot legacy");
 	TEST_EQ(mock_vbexlegacy_called, 1, "  VbExLegacy called");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* Ctrl+L = boot legacy (disallowed) */
 	reset_common_data(FOR_DEVELOPER);
@@ -723,8 +715,6 @@
 	TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
 		"ctrl+l = boot legacy");
 	TEST_EQ(mock_vbexlegacy_called, 0, "  VbExLegacy not called");
-	TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-		  DEV_DELAY_NORMAL_MS, "  delay aborted");
 
 	/* VB_BUTTON_VOL_UP_LONG_PRESS = boot external */
 	if (DETACHABLE) {
@@ -733,8 +723,6 @@
 		add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
 		TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
 			"VB_BUTTON_VOL_UP_LONG_PRESS = boot external");
-		TEST_TRUE(mock_get_timer_last_ms - mock_time_start_ms <
-			  DEV_DELAY_NORMAL_MS, "  delay aborted");
 	}
 
 	/* If dev mode is disabled, goes to to_norm screen repeatedly */
