diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 94febff..c2b7c6a 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -32,6 +32,7 @@
         "androidx.core_core",
         "androidx.appcompat_appcompat",
         "androidx.cardview_cardview",
+        "androidx.fragment_fragment-testing",
         "androidx.preference_preference",
         "androidx.recyclerview_recyclerview",
         "androidx.window_window",
@@ -47,7 +48,7 @@
         "jsr305",
         "settings-contextual-card-protos-lite",
         "settings-log-bridge-protos-lite",
-	"settings-telephony-protos-lite",
+        "settings-telephony-protos-lite",
         "contextualcards",
         "settings-logtags",
         "zxing-core-1.7",
diff --git a/tests/robotests/src/com/android/settings/remoteauth/finish/RemoteAuthEnrollFinishTest.kt b/tests/robotests/src/com/android/settings/remoteauth/finish/RemoteAuthEnrollFinishTest.kt
new file mode 100644
index 0000000..7bb5c45
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/remoteauth/finish/RemoteAuthEnrollFinishTest.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.remoteauth.finish
+
+
+import android.content.Context
+import android.os.Bundle
+import androidx.fragment.app.testing.launchFragmentInContainer
+import androidx.test.core.app.ApplicationProvider
+import com.android.settings.R
+import com.google.android.setupdesign.GlifLayout
+import com.google.common.truth.Truth.assertThat
+
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+
+@RunWith(RobolectricTestRunner::class)
+class RemoteAuthEnrollFinishTest {
+    private var mContext: Context = ApplicationProvider.getApplicationContext()
+
+    @Test
+    fun testRemoteAuthenticatorEnrollFinish_hasHeader() {
+        launchFragmentInContainer<RemoteAuthEnrollFinish>(Bundle(), R.style.SudThemeGlif)
+            .onFragment {
+                assertThat((it.view as GlifLayout).headerText)
+                    .isEqualTo(mContext.getString(
+                        R.string.security_settings_remoteauth_enroll_finish_title))
+            }
+    }
+
+    @Test
+    fun testRemoteAuthenticatorEnrollFinish_hasDescription() {
+        launchFragmentInContainer<RemoteAuthEnrollFinish>(Bundle(), R.style.SudThemeGlif)
+            .onFragment {
+                assertThat((it.view as GlifLayout).descriptionText)
+                    .isEqualTo(mContext.getString(
+                        R.string.security_settings_remoteauth_enroll_finish_description))
+            }
+    }
+}
\ No newline at end of file
