SiblingContainsTextStep function

StepDefinitionGeneric<World> SiblingContainsTextStep()

Discovers a widget by its text within the same parent. For example, discovering X while only being aware of Y: Row(children: Text('Y'), Text('X') )

Examples:

Then I expect a "Row" that contains the text "X" to also contain the text "Y"

Implementation

StepDefinitionGeneric SiblingContainsTextStep() {
  return given3<String, String, String, FlutterWorld>(
    'I expect a {string} that contains the text {string} to also contain the text {string}',
    (ancestorType, leadingText, valueText, context) async {
      final ancestor = find.ancestor(
        of: find.text(leadingText),
        matching: find.byType(ancestorType),
        firstMatchOnly: true,
      );

      final valueWidget = find.descendant(
        of: ancestor,
        matching: find.text(valueText),
        firstMatchOnly: true,
      );

      final isPresent = await FlutterDriverUtils.isPresent(
        context.world.driver,
        valueWidget,
        timeout: context.configuration.timeout ?? const Duration(seconds: 20),
      );

      context.expect(isPresent, true);
    },
  );
}