diff --git a/packages/flutter_test/lib/src/finders.dart b/packages/flutter_test/lib/src/finders.dart
index eaac371..6341190 100644
--- a/packages/flutter_test/lib/src/finders.dart
+++ b/packages/flutter_test/lib/src/finders.dart
@@ -498,22 +498,6 @@
     } else if (candidate.widget is EditableText) {
       final EditableText editable = candidate.widget;
       return editable.controller.text == text;
-    } else if (candidate.widget is RichText) {
-      bool parentIsText = false;
-      // check if the direct parent is a Text widget. if so, do not match it
-      // twice. We make an exception for semantics since those may be placed
-      // between a Text and Rich text.
-      candidate.visitAncestorElements((Element parent) {
-        if (parent.widget is Text) {
-          parentIsText = true;
-          return false;
-        } else if (parent.widget is ExcludeSemantics || parent.widget is Semantics) {
-          return true;
-        }
-        return false;
-      });
-      final RichText richText = candidate.widget;
-      return !parentIsText && richText.text.toPlainText() == text;
     }
     return false;
   }
diff --git a/packages/flutter_test/test/finders_test.dart b/packages/flutter_test/test/finders_test.dart
index dbe966b..bb0d434 100644
--- a/packages/flutter_test/test/finders_test.dart
+++ b/packages/flutter_test/test/finders_test.dart
@@ -27,33 +27,6 @@
 
       expect(find.text('test'), findsOneWidget);
     });
-
-    testWidgets('finds RichText widgets', (WidgetTester tester) async {
-      await tester.pumpWidget(_boilerplate(
-        const RichText(text: TextSpan(text: 't', children: <TextSpan>[
-          TextSpan(text: 'est'),
-        ]))
-      ));
-
-      expect(find.text('test'), findsOneWidget);
-    });
-
-    testWidgets('Does not find Text and RichText widgets', (WidgetTester tester) async {
-      await tester.pumpWidget(_boilerplate(
-        const Text('test'),
-      ));
-
-      expect(find.text('test'), findsOneWidget);
-    });
-
-    testWidgets('Does not find Text and RichText separated by semantics widgets', (WidgetTester tester) async {
-      // If rich: true found both Text and RichText, this would find two widgets.
-      await tester.pumpWidget(_boilerplate(
-        const Text('test', semanticsLabel: 'foo'),
-      ));
-
-      expect(find.text('test'), findsOneWidget);
-    });
   });
 
   group('hitTestable', () {
