diff --git a/client/cros/a11y/a11y_test_base.py b/client/cros/a11y/a11y_test_base.py
index 17a3126..97804e0 100644
--- a/client/cros/a11y/a11y_test_base.py
+++ b/client/cros/a11y/a11y_test_base.py
@@ -45,31 +45,6 @@
                 input_type='keyboard', filename='keyboard_ctrl+alt+z')
 
 
-    def _search_shift_move(self, direction):
-        """Playback the keyboard movement shortcut for given direction.
-
-        @param direction: right, left, up, or down.
-
-        """
-        assert direction in ['right', 'left', 'up', 'down']
-        self._player.blocking_playback_of_default_file(
-                input_type='keyboard',
-                filename='keyboard_search+shift+%s' % direction)
-
-
-    def _tab_move(self, direction='forwards'):
-        """Playback a tab or shift+tab for the given direction.
-
-        @param direction: forwards or backwards.
-
-        """
-        assert direction in ['forwards', 'backwards']
-        is_forwards = direction is 'forwards'
-        filename = 'keyboard_tab' if is_forwards else 'keyboard_shift+tab'
-        self._player.blocking_playback_of_default_file(
-                input_type='keyboard', filename=filename)
-
-
     def _set_feature(self, feature, value):
         """Set given feature to given value using a11y API call.
 
@@ -138,36 +113,6 @@
                 timeout=self._CVOX_STATE_TIMEOUT)
 
 
-    def _get_chromevox_indicator(self, tab):
-        """Return whether the orange ChromeVox highlight is present or not.
-
-        Looks for the orange highlight on the given tab.
-
-        @returns: whether 'cvox_indicator_container' is found on the page
-
-        """
-        cmd = ('document.getElementsByClassName('
-               '  "cvox_indicator_container").length > 0;')
-        return tab.EvaluateJavaScript(cmd)
-
-
-    def _confirm_chromevox_indicator(self, value):
-        """Fail test unless indicator state is given value.
-
-        Presupposes self._tab (the tab on which to check).
-
-        @param value: True or False, whether ChromeVox indicator should show.
-
-        @raises: error.TestFail if actual state doesn't match expected.
-
-        """
-        utils.poll_for_condition(
-                lambda: self._get_chromevox_indicator(self._tab) == value,
-                exception=error.TestFail('ChromeVox: "Indicator present" '
-                                         'was not %s.' % value),
-                timeout=self._CVOX_INDICATOR_TIMEOUT)
-
-
     def _get_extension_path(self):
         """Return the path to the default accessibility extension.
 
diff --git a/client/site_tests/accessibility_Sanity/accessibility_Sanity.py b/client/site_tests/accessibility_Sanity/accessibility_Sanity.py
index 0d9b48a..217c4d0 100644
--- a/client/site_tests/accessibility_Sanity/accessibility_Sanity.py
+++ b/client/site_tests/accessibility_Sanity/accessibility_Sanity.py
@@ -2,7 +2,6 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import os
 import logging
 import time
 
@@ -28,8 +27,7 @@
     def _check_chromevox(self):
         """Run ChromeVox specific checks.
 
-        Check the reported state of ChromeVox before/after enable and
-        for the presence of the indicator before/after disable.
+        Check the reported state of ChromeVox before/after enable and disable.
 
         """
         # ChromeVox is initially off.
@@ -38,31 +36,19 @@
         # Turn ChromeVox on and check that all the pieces work.
         self._toggle_chromevox()
         self._confirm_chromevox_state(True)
-        self._tab_move('forwards') # Ensure that indicator is shown.
-        self._confirm_chromevox_indicator(True)
 
         # Turn ChromeVox off.
         self._toggle_chromevox()
-        self._tab.Navigate(self._url) # reload page to remove old indicators
-        self._confirm_chromevox_indicator(False)
+        self._confirm_chromevox_state(False)
 
 
     def run_once(self):
         """Entry point of this test."""
         extension_path = self._get_extension_path()
 
-        with chrome.Chrome(extension_paths=[extension_path],
-                           init_network_controller=True) as cr:
+        with chrome.Chrome(extension_paths=[extension_path]) as cr:
             self._extension = cr.get_extension(extension_path)
 
-            # Open test page.
-            self._tab = cr.browser.tabs[0]
-            cr.browser.platform.SetHTTPServerDirectories(
-                    os.path.join(os.path.dirname(__file__)))
-            page_path = os.path.join(self.bindir, 'page.html')
-            self._url = cr.browser.platform.http_server.UrlOf(page_path)
-            self._tab.Navigate(self._url)
-
             # Check specific features.
             self._check_chromevox()
 
diff --git a/client/site_tests/accessibility_Sanity/page.html b/client/site_tests/accessibility_Sanity/page.html
deleted file mode 100644
index 815b9c0..0000000
--- a/client/site_tests/accessibility_Sanity/page.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-Copyright (c) 2014 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
--->
-
-<html>
-<head><title>A11y Autotest Sample Page</title></head>
-<body>
-<input type="text" id="textbox"/>
-<br>
-SAMPLE TEXT.
-<br>
-<input type="text" id="textbox2"/>
-</body>
-</html>
