diff --git a/TEST_MAPPING b/TEST_MAPPING
index 2112125..8a0711c 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -72,6 +72,9 @@
   "ferrochrome-postsubmit": [
     {
       "name": "ferrochrome-tests"
+    },
+    {
+      "name": "TerminalAppTests"
     }
   ],
   "postsubmit": [
diff --git a/tests/Terminal/Android.bp b/tests/Terminal/Android.bp
new file mode 100644
index 0000000..745a47c
--- /dev/null
+++ b/tests/Terminal/Android.bp
@@ -0,0 +1,22 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_test {
+    name: "TerminalAppTests",
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs.system",
+        "android.test.base.stubs.system",
+        "android.test.mock.stubs.system",
+    ],
+    static_libs: [
+        "androidx.test.rules",
+        "androidx.test.core",
+        "androidx.test.ext.junit",
+        "junit",
+    ],
+    platform_apis: true,
+    test_suites: ["device-tests"],
+    instrumentation_for: "VmTerminalApp",
+}
diff --git a/tests/Terminal/AndroidManifest.xml b/tests/Terminal/AndroidManifest.xml
new file mode 100644
index 0000000..0abcb5c
--- /dev/null
+++ b/tests/Terminal/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+	package="com.android.virtualization.terminal.test">
+
+    <application>
+        <uses-library android:name="android.test.runner"/>
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.google.android.virtualization.terminal"
+	    android:label="Test for Linux Terminal"/>
+</manifest>
diff --git a/tests/Terminal/AndroidTest.xml b/tests/Terminal/AndroidTest.xml
new file mode 100644
index 0000000..e9f549f
--- /dev/null
+++ b/tests/Terminal/AndroidTest.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2024 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.
+-->
+<configuration description="Runs Linux Terminal test">
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
+
+    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+        <option name="test-file-name" value="TerminalAppTests.apk" />
+    </target_preparer>
+
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
+        <option name="force-root" value="true"/>
+    </target_preparer>
+
+    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+        <option name="throw-if-cmd-fail" value="true" />
+        <option name="run-command"
+            value="pm enable com.google.android.virtualization.terminal/com.android.virtualization.terminal.MainActivity" />
+        <option name="teardown-command"
+            value="pm disable com.google.android.virtualization.terminal/com.android.virtualization.terminal.MainActivity" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
+        <option name="package" value="com.android.virtualization.terminal.test"/>
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner"/>
+    </test>
+</configuration>
diff --git a/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java b/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java
new file mode 100644
index 0000000..46fbc35
--- /dev/null
+++ b/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2024 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.virtualization.terminal;
+
+import static org.junit.Assert.assertTrue;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class TerminalAppTest {
+    private Instrumentation mInstr;
+    private Context mTargetContext;
+
+    @Before
+    public void setup() {
+        mInstr = InstrumentationRegistry.getInstrumentation();
+        mTargetContext = mInstr.getTargetContext();
+        installVmImage();
+    }
+
+    private void installVmImage() {
+        final long INSTALL_TIMEOUT_MILLIS = 300_000; // 5 min
+
+        Intent intent = new Intent(mTargetContext, InstallerActivity.class);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(InstallerActivity.EXTRA_AUTO_DOWNLOAD, true);
+
+        if (mInstr.startActivitySync(intent) instanceof InstallerActivity activity) {
+            assertTrue(
+                    "Failed to install VM image",
+                    activity.waitForInstallCompleted(INSTALL_TIMEOUT_MILLIS));
+        }
+    }
+
+    @Test
+    public void boot() throws Exception {
+        final long BOOT_TIMEOUT_MILLIS = 30_000; // 30 sec
+
+        Intent intent = new Intent(mTargetContext, MainActivity.class);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        if (mInstr.startActivitySync(intent) instanceof MainActivity activity) {
+            assertTrue("Failed to boot in 30s", activity.waitForBootCompleted(BOOT_TIMEOUT_MILLIS));
+        }
+    }
+}
