diff --git a/django_expanded_test_cases/test_cases/channels_live_server_test_case.py b/django_expanded_test_cases/test_cases/channels_live_server_test_case.py
index 9a5f540457b9cdb2a726b351732be9e2b1cce141..ac365e6f99eb0432603688a01f7470b52022430e 100644
--- a/django_expanded_test_cases/test_cases/channels_live_server_test_case.py
+++ b/django_expanded_test_cases/test_cases/channels_live_server_test_case.py
@@ -12,9 +12,14 @@ from selenium import webdriver
 from selenium.webdriver.chrome.service import Service as ChromeService
 from selenium.webdriver.firefox.service import Service as FireFoxService
 from channels.testing import ChannelsLiveServerTestCase as DjangoChannelsLiveServerTestCase
-from django.conf import settings
 
 # Internal Imports.
+from django_expanded_test_cases.constants import (
+    ETC_SELENIUM_BROWSER,
+    ETC_SELENIUM_HEADLESS,
+    ETC_SELENIUM_DISABLE_CACHE,
+    ETC_SELENIUM_EXTRA_BROWSER_OPTIONS,
+)
 from django_expanded_test_cases.mixins.live_server_mixin import LiveServerMixin
 
 
@@ -34,7 +39,7 @@ class ChannelsLiveServerTestCase(DjangoChannelsLiveServerTestCase, LiveServerMix
         cls._options = None
 
         # Import/Initialize some values based on chosen testing browser. Default to chrome.
-        cls._browser = str(getattr(settings, 'SELENIUM_TEST_BROWSER', 'chrome')).lower()
+        cls._browser = str(ETC_SELENIUM_BROWSER).lower()
 
         if cls._browser in ['chrome', 'chromium']:
             # Setup for Chrome/Chromium browser.
@@ -44,20 +49,6 @@ class ChannelsLiveServerTestCase(DjangoChannelsLiveServerTestCase, LiveServerMix
                 # Attempt driver auto-install, if webdriver_manager package is present.
                 cls._service = ChromeService()
 
-                # Set required options to prevent crashing.
-                chromeOptions = webdriver.ChromeOptions()
-                chromeOptions.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
-                chromeOptions.add_argument("--no-sandbox")
-                chromeOptions.add_argument("--disable-setuid-sandbox")
-                chromeOptions.add_argument("--remote-debugging-port=9222")
-                chromeOptions.add_argument("--disable-dev-shm-using")
-                chromeOptions.add_argument("--disable-extensions")
-                chromeOptions.add_argument("--disable-gpu")
-                chromeOptions.add_argument("disable-infobars")
-
-                # Save options.
-                cls._options = chromeOptions
-
             except ModuleNotFoundError:
                 # Fall back to manual installation handling.
 
@@ -69,6 +60,28 @@ class ChannelsLiveServerTestCase(DjangoChannelsLiveServerTestCase, LiveServerMix
                     # For Chromium.
                     cls._service = ChromeService(executable_path='/usr/local/share/chromedriver')
 
+            # Set required chrome options.
+            chromeOptions = webdriver.ChromeOptions()
+            # Disable any existing extensions on local chrome setup, for consistent test runs across machines.
+            chromeOptions.add_argument('--disable-extensions')
+
+            # Add any user-provided options.
+            if ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                for browser_option in ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                    chromeOptions.add_argument(browser_option)
+
+            # TODO: Document these? Seemed to come up a lot in googling errors and whatnot.
+            # # Avoid possible error in certain development environments about resource limits.
+            # # Error is along the lines of "DevToolsActivePort file doesn't exist".
+            # # See https://stackoverflow.com/a/69175552
+            # chromeOptions.add_argument('--disable-dev-shm-using')
+            # # Avoid possible error when many drivers are opened.
+            # # See https://stackoverflow.com/a/56638103
+            # chromeOptions.add_argument("--remote-debugging-port=9222")
+
+            # Save options.
+            cls._options = chromeOptions
+
             # Everything else should handle the same for both.
             cls._browser = 'chrome'
 
@@ -78,17 +91,34 @@ class ChannelsLiveServerTestCase(DjangoChannelsLiveServerTestCase, LiveServerMix
             # Setup browser driver to launch browser with.
             try:
                 # Attempt driver auto-install, if webdriver_manager package is present.
-                from webdriver_manager.firefox import GeckoDriverManager
-                cls._service = FireFoxService(executable_path=GeckoDriverManager().install())
+                cls._service = FireFoxService()
+
             except ModuleNotFoundError:
                 # Fall back to manual installation handling.
                 cls._service = FireFoxService(executable_path='/usr/bin/geckodriver')
 
+            # Set required chrome options.
+            firefoxOptions = webdriver.FirefoxOptions()
+
+            # Add any user-provided options.
+            if ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                for browser_option in ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                    firefoxOptions.add_argument(browser_option)
+
+            # Save options.
+            cls._options = firefoxOptions
+
         else:
             raise ValueError('Unknown browser "{0}".'.format(cls._browser))
 
-        # Create initial testing driver.
-        cls.create_driver(cls)
+        # Add universal options based on project settings.
+        if ETC_SELENIUM_HEADLESS:
+            cls._options.add_argument('headless')
+        if ETC_SELENIUM_DISABLE_CACHE:
+            cls._options.add_argument('disable-application-cache')
+
+        # Create initial testing driver, one for each test.
+        cls.driver = cls.create_driver(cls)
 
     def setUp(self):
         # Run parent setup logic.
@@ -103,9 +133,20 @@ class ChannelsLiveServerTestCase(DjangoChannelsLiveServerTestCase, LiveServerMix
         # Run parent logic.
         return super().subTest(*args, **kwargs)
 
+    @classmethod
+    def tearDownClass(cls):
+        # Close all remaining driver instances for class.
+        while len(cls._driver_set) > 0:
+            cls.close_driver(cls, cls._driver_set[0])
+
+        # Call parent teardown logic.
+        super().tearDownClass()
+
     def tearDown(self):
-        # Close all remaining browser instances for test.
-        self.close_all_drivers()
+        # TODO: Below seems probably unnecessary? Research more.
+        # # Close all remaining window instances for test.
+        # # (Or at least attempt to for default driver for test).
+        # self.close_all_windows(self.driver)
 
         # Call parent teardown logic.
         super().tearDown()
diff --git a/django_expanded_test_cases/test_cases/live_server_test_case.py b/django_expanded_test_cases/test_cases/live_server_test_case.py
index cd92c17707a44726778e160946e86e21a3eb1375..7dfdd2b626c4bc6113a042dde35582d17a696d03 100644
--- a/django_expanded_test_cases/test_cases/live_server_test_case.py
+++ b/django_expanded_test_cases/test_cases/live_server_test_case.py
@@ -49,28 +49,6 @@ class LiveServerTestCase(DjangoLiveServerTestCase, LiveServerMixin):
                 # Attempt driver auto-install, if webdriver_manager package is present.
                 cls._service = ChromeService()
 
-                # Set required options to prevent crashing.
-                chromeOptions = webdriver.ChromeOptions()
-                # Disable any existing extensions on local chrome setup, for consistent test runs across machines.
-                chromeOptions.add_argument('--disable-extensions')
-
-                # Add any user-provided options.
-                if ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
-                    for browser_option in ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
-                        chromeOptions.add_argument(browser_option)
-
-                # TODO: Document these? Seemed to come up a lot in googling errors and whatnot.
-                # # Avoid possible error in certain development environments about resource limits.
-                # # Error is along the lines of "DevToolsActivePort file doesn't exist".
-                # # See https://stackoverflow.com/a/69175552
-                # chromeOptions.add_argument('--disable-dev-shm-using')
-                # # Avoid possible error when many drivers are opened.
-                # # See https://stackoverflow.com/a/56638103
-                # chromeOptions.add_argument("--remote-debugging-port=9222")
-
-                # Save options.
-                cls._options = chromeOptions
-
             except ModuleNotFoundError:
                 # Fall back to manual installation handling.
 
@@ -82,6 +60,28 @@ class LiveServerTestCase(DjangoLiveServerTestCase, LiveServerMixin):
                     # For Chromium.
                     cls._service = ChromeService(executable_path='/usr/local/share/chromedriver')
 
+            # Set required chrome options.
+            chromeOptions = webdriver.ChromeOptions()
+            # Disable any existing extensions on local chrome setup, for consistent test runs across machines.
+            chromeOptions.add_argument('--disable-extensions')
+
+            # Add any user-provided options.
+            if ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                for browser_option in ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                    chromeOptions.add_argument(browser_option)
+
+            # TODO: Document these? Seemed to come up a lot in googling errors and whatnot.
+            # # Avoid possible error in certain development environments about resource limits.
+            # # Error is along the lines of "DevToolsActivePort file doesn't exist".
+            # # See https://stackoverflow.com/a/69175552
+            # chromeOptions.add_argument('--disable-dev-shm-using')
+            # # Avoid possible error when many drivers are opened.
+            # # See https://stackoverflow.com/a/56638103
+            # chromeOptions.add_argument("--remote-debugging-port=9222")
+
+            # Save options.
+            cls._options = chromeOptions
+
             # Everything else should handle the same for both.
             cls._browser = 'chrome'
 
@@ -91,12 +91,23 @@ class LiveServerTestCase(DjangoLiveServerTestCase, LiveServerMixin):
             # Setup browser driver to launch browser with.
             try:
                 # Attempt driver auto-install, if webdriver_manager package is present.
-                from webdriver_manager.firefox import GeckoDriverManager
-                cls._service = FireFoxService(executable_path=GeckoDriverManager().install())
+                cls._service = FireFoxService()
+
             except ModuleNotFoundError:
                 # Fall back to manual installation handling.
                 cls._service = FireFoxService(executable_path='/usr/bin/geckodriver')
 
+            # Set required chrome options.
+            firefoxOptions = webdriver.FirefoxOptions()
+
+            # Add any user-provided options.
+            if ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                for browser_option in ETC_SELENIUM_EXTRA_BROWSER_OPTIONS:
+                    firefoxOptions.add_argument(browser_option)
+
+            # Save options.
+            cls._options = firefoxOptions
+
         else:
             raise ValueError('Unknown browser "{0}".'.format(cls._browser))
 
@@ -132,7 +143,7 @@ class LiveServerTestCase(DjangoLiveServerTestCase, LiveServerMixin):
         super().tearDownClass()
 
     def tearDown(self):
-        # TODO: Below seems probably unecessary? Research more.
+        # TODO: Below seems probably unnecessary? Research more.
         # # Close all remaining window instances for test.
         # # (Or at least attempt to for default driver for test).
         # self.close_all_windows(self.driver)
diff --git a/runpytests.py b/runpytests.py
index 90a6c5fd32c43f93fe14d430e2734335f4ef65e6..16dbe55e26955aad6dadbb23dd065bb69cebc545 100755
--- a/runpytests.py
+++ b/runpytests.py
@@ -14,6 +14,8 @@ def runtests():
     """Run Tests"""
     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tests.settings')
     os.environ.setdefault('PYTHONPATH', ROOT_DIR)
+
+    # os.environ.setdefault('EXPANDED_TEST_CASES_SELENIUM_BROWSER', 'firefox')
     argv = ['pytest'] + sys.argv[1:] + ['--asyncio-mode=auto']
     subprocess.run(argv, check=False)