diff --git a/modules/ensemble/lib/framework/ensemble_widget.dart b/modules/ensemble/lib/framework/ensemble_widget.dart index 0e1b13ad7..332699b0a 100644 --- a/modules/ensemble/lib/framework/ensemble_widget.dart +++ b/modules/ensemble/lib/framework/ensemble_widget.dart @@ -55,6 +55,15 @@ abstract class EnsembleWidgetState extends State { Widget rtn = buildWidget(context); + // Add KeyedSubtree with ValueKey based on testId to make widget findable in tests using find.byKey() + if (widgetController.testId != null && + widgetController.testId!.isNotEmpty) { + rtn = KeyedSubtree( + key: ValueKey(widgetController.testId!), + child: rtn, + ); + } + if (widgetController.textDirection != null) { rtn = Directionality( textDirection: widgetController.textDirection!, child: rtn); diff --git a/modules/ensemble/lib/framework/widget/widget.dart b/modules/ensemble/lib/framework/widget/widget.dart index 1350014bf..6ce37c197 100644 --- a/modules/ensemble/lib/framework/widget/widget.dart +++ b/modules/ensemble/lib/framework/widget/widget.dart @@ -62,6 +62,15 @@ abstract class EWidgetState if (widget.controller is WidgetController) { WidgetController widgetController = widget.controller as WidgetController; + // Add KeyedSubtree with ValueKey based on testId to make widget findable in tests using find.byKey() + if (widgetController.testId != null && + widgetController.testId!.isNotEmpty) { + rtn = KeyedSubtree( + key: ValueKey(widgetController.testId!), + child: rtn, + ); + } + if (widgetController.textDirection != null) { rtn = Directionality( textDirection: widgetController.textDirection!, child: rtn);