diff --git a/pkgs/test/CHANGELOG.md b/pkgs/test/CHANGELOG.md
index 64c4065..20d409c 100644
--- a/pkgs/test/CHANGELOG.md
+++ b/pkgs/test/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## 1.21.5-dev
 
+* Fix `printOnFailure` output to be associated with the correct test.
 * Migrate all dom interactions to static interop.
 
 ## 1.21.4
diff --git a/pkgs/test_api/CHANGELOG.md b/pkgs/test_api/CHANGELOG.md
index 22df756..fcfb296 100644
--- a/pkgs/test_api/CHANGELOG.md
+++ b/pkgs/test_api/CHANGELOG.md
@@ -1,6 +1,6 @@
 ## 0.4.13-dev
 
-* Internal cleanup.
+* Fix `printOnFailure` output to be associated with the correct test.
 
 ## 0.4.12
 
diff --git a/pkgs/test_api/lib/src/backend/invoker.dart b/pkgs/test_api/lib/src/backend/invoker.dart
index 826c9da..54a439c 100644
--- a/pkgs/test_api/lib/src/backend/invoker.dart
+++ b/pkgs/test_api/lib/src/backend/invoker.dart
@@ -315,7 +315,7 @@
   void printOnFailure(String message) {
     message = message.trim();
     if (liveTest.state.result.isFailing) {
-      print('\n$message');
+      _print('\n$message');
     } else {
       _printsOnFailure.add(message);
     }
@@ -350,7 +350,7 @@
     zone.run(() => _outstandingCallbacks.complete());
 
     if (_printsOnFailure.isNotEmpty) {
-      print(_printsOnFailure.join('\n\n'));
+      _print(_printsOnFailure.join('\n\n'));
       _printsOnFailure.clear();
     }
 
diff --git a/pkgs/test_api/test/backend/invoker_test.dart b/pkgs/test_api/test/backend/invoker_test.dart
index f430c0b..6aa4774 100644
--- a/pkgs/test_api/test/backend/invoker_test.dart
+++ b/pkgs/test_api/test/backend/invoker_test.dart
@@ -541,27 +541,30 @@
   });
 
   group('printOnFailure:', () {
-    test("doesn't print anything if the test succeeds", () {
-      expect(() async {
-        var liveTest = _localTest(() {
-          Invoker.current!.printOnFailure('only on failure');
-        }).load(suite);
-        liveTest.onError.listen(expectAsync1((_) {}, count: 0));
+    test("doesn't print anything if the test succeeds", () async {
+      var liveTest = _localTest(() {
+        Invoker.current!.printOnFailure('only on failure');
+      }).load(suite);
+      liveTest.onError.listen(expectAsync1((_) {}, count: 0));
 
-        await liveTest.run();
-      }, prints(isEmpty));
+      liveTest.onMessage.listen(expectAsync1((_) {}, count: 0));
+
+      await liveTest.run();
     });
 
-    test('prints if the test fails', () {
-      expect(() async {
-        var liveTest = _localTest(() {
-          Invoker.current!.printOnFailure('only on failure');
-          expect(true, isFalse);
-        }).load(suite);
-        liveTest.onError.listen(expectAsync1((_) {}, count: 1));
+    test('prints if the test fails', () async {
+      var liveTest = _localTest(() {
+        Invoker.current!.printOnFailure('only on failure');
+        expect(true, isFalse);
+      }).load(suite);
+      liveTest.onError.listen(expectAsync1((_) {}, count: 1));
 
-        await liveTest.run();
-      }, prints('only on failure\n'));
+      liveTest.onMessage.listen(expectAsync1((message) {
+        expect(message.type, equals(MessageType.print));
+        expect(message.text, equals('only on failure'));
+      }, count: 1));
+
+      await liveTest.run();
     });
   });
 }
