execute method

  1. @override
Future<void> execute({
  1. required CancelToken cancelToken,
  2. required TestReport report,
  3. required TestController tester,
})

Executes the step. This will first look for the Testable then attempt to set the opacity on the widget.

Implementation

@override
Future<void> execute({
  required CancelToken cancelToken,
  required TestReport report,
  required TestController tester,
}) async {
  final testableId = tester.resolveVariable(this.testableId);
  assert(testableId?.isNotEmpty == true);

  final name = "$id('$testableId', '$hide)";
  log(
    name,
    tester: tester,
  );
  final finder = await waitFor(
    testableId,
    cancelToken: cancelToken,
    tester: tester,
    timeout: timeout,
  );

  await sleep(
    tester.delays.postFoundWidget,
    cancelStream: cancelToken.stream,
    tester: tester,
  );

  final widgetFinder = finder.evaluate();
  var found = false;
  if (widgetFinder.isNotEmpty == true) {
    final element = widgetFinder.first as StatefulElement;

    final state = element.state;
    if (state is TestableState) {
      try {
        await state.opacity(hide == true ? 0.0 : 1.0);
        found = true;
      } catch (e) {
        found = false;
      }
    }
  }
  if (found != true) {
    throw Exception(
      'testableId: [$testableId] -- could not locate Testable with a functional [opacity] method.',
    );
  }
}