diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
index 2bd193a..3cbc58a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
@@ -68,7 +68,7 @@
     private static final long REMAINING_TIME = 2;
     // Strings are defined in frameworks/base/packages/SettingsLib/res/values/strings.xml
     private static final String ENHANCED_STRING_SUFFIX = "based on your usage";
-    private static final String EXTEND_PREFIX = "Extend battery life past";
+    private static final String BATTERY_RUN_OUT_PREFIX = "Battery may run out by";
     private static final long TEST_CHARGE_TIME_REMAINING = TimeUnit.MINUTES.toMicros(1);
     private static final String TEST_CHARGE_TIME_REMAINING_STRINGIFIED =
             "1 min left until charged";
@@ -151,10 +151,10 @@
 
         // We only add special mention for the long string
         assertThat(info.remainingLabel.toString()).contains(ENHANCED_STRING_SUFFIX);
-        assertThat(info.suggestionLabel).contains(EXTEND_PREFIX);
+        assertThat(info.suggestionLabel).contains(BATTERY_RUN_OUT_PREFIX);
         // shortened string should not have extra text
         assertThat(info2.remainingLabel.toString()).doesNotContain(ENHANCED_STRING_SUFFIX);
-        assertThat(info2.suggestionLabel).contains(EXTEND_PREFIX);
+        assertThat(info2.suggestionLabel).contains(BATTERY_RUN_OUT_PREFIX);
     }
 
     @Test
@@ -174,7 +174,7 @@
                 mContext.getString(R.string.power_remaining_duration_only_shutdown_imminent));
         assertThat(info2.remainingLabel.toString()).isEqualTo(
                 mContext.getString(R.string.power_remaining_duration_only_shutdown_imminent));
-        assertThat(info2.suggestionLabel).contains(EXTEND_PREFIX);
+        assertThat(info2.suggestionLabel).contains(BATTERY_RUN_OUT_PREFIX);
     }
 
     @Test
@@ -186,7 +186,7 @@
                 mBatteryStats, estimate, SystemClock.elapsedRealtime() * 1000,
                 false /* shortString */);
 
-        assertThat(info.suggestionLabel).doesNotContain(EXTEND_PREFIX);
+        assertThat(info.suggestionLabel).doesNotContain(BATTERY_RUN_OUT_PREFIX);
     }
 
     @Test
