diff --git a/tests/components/tts/conftest.py b/tests/components/tts/conftest.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f5b06b71ee2015d4f71b58b8126c5854b977f70
--- /dev/null
+++ b/tests/components/tts/conftest.py
@@ -0,0 +1,18 @@
+"""Conftest for TTS tests.
+
+From http://doc.pytest.org/en/latest/example/simple.html#making-test-result-information-available-in-fixtures
+"""
+
+import pytest
+
+
+@pytest.hookimpl(tryfirst=True, hookwrapper=True)
+def pytest_runtest_makereport(item, call):
+    """Add test report to node."""
+    # execute all other hooks to obtain the report object
+    outcome = yield
+    rep = outcome.get_result()
+
+    # set a report attribute for each phase of a call, which can
+    # be "setup", "call", "teardown"
+    setattr(item, "rep_" + rep.when, rep)
diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py
index a52deebbcaafaf9476ed42dd632d767b850c9044..803d3d6f1dbbe68977ac160939ac444dcb38d37f 100644
--- a/tests/components/tts/test_init.py
+++ b/tests/components/tts/test_init.py
@@ -52,7 +52,7 @@ def mock_init_cache_dir():
 
 
 @pytest.fixture
-def empty_cache_dir(tmp_path, mock_init_cache_dir, mock_get_cache_files):
+def empty_cache_dir(tmp_path, mock_init_cache_dir, mock_get_cache_files, request):
     """Mock the TTS cache dir with empty dir."""
     mock_init_cache_dir.side_effect = None
     mock_init_cache_dir.return_value = str(tmp_path)
@@ -60,7 +60,18 @@ def empty_cache_dir(tmp_path, mock_init_cache_dir, mock_get_cache_files):
     # Restore original get cache files behavior, we're working with a real dir.
     mock_get_cache_files.side_effect = _get_cache_files
 
-    return tmp_path
+    yield tmp_path
+
+    if request.node.rep_call.passed:
+        return
+
+    # Print contents of dir if failed
+    print("Content of dir for", request.node.nodeid)
+    for fil in tmp_path.iterdir():
+        print(fil.relative_to(tmp_path))
+
+    # To show the log.
+    assert False
 
 
 @pytest.fixture(autouse=True)