executeEvent method

Future<bool> executeEvent({
  1. required String widgetKey,
  2. required McpEventType eventType,
  3. McpEventParams? params,
})

Executes the eventType event on the widget identified by widgetKey.

Returns true if the event was executed successfully. Returns false if: the widget is not registered/mounted, parameters are missing, or the widget tree does not contain the expected element.

Assertion events return the assertion result (true = assertion passed, false = assertion failed).

Implementation

Future<bool> executeEvent({
  required String widgetKey,
  required McpEventType eventType,
  McpEventParams? params,
}) async {
  Log.i('[Executor] ⚡ $eventType → "$widgetKey"');
  return switch (eventType) {
    // ── Basic gestures ──────────────────────────────────────────────────
    McpEventType.tap => _tap(widgetKey),
    McpEventType.doubleTap => _doubleTap(widgetKey),
    McpEventType.longPress => _longPress(widgetKey, params),
    McpEventType.swipe => _swipe(widgetKey, params),
    McpEventType.drag => _drag(widgetKey, params),
    McpEventType.scroll => _scroll(widgetKey, params),
    McpEventType.pinch => _pinch(widgetKey, params),
    // ── Text and input ────────────────────────────────────────────────────
    McpEventType.textInput => _textInput(widgetKey, params),
    McpEventType.clearText => _clearText(widgetKey),
    McpEventType.selectDropdown => _selectDropdown(widgetKey, params),
    McpEventType.toggle => _toggle(widgetKey),
    McpEventType.setSliderValue => _setSliderValue(widgetKey, params),
    // ── Keyboard ─────────────────────────────────────────────────────────
    McpEventType.hideKeyboard => _hideKeyboard(),
    McpEventType.showKeyboard => _showKeyboard(widgetKey),
    // ── Navigation ───────────────────────────────────────────────────────
    McpEventType.pressBack => _pressBack(widgetKey),
    // ── Smart scroll ───────────────────────────────────────────────────
    McpEventType.scrollUntilVisible => _scrollUntilVisible(widgetKey, params),
    McpEventType.tapByLabel => _tapByLabel(params),
    McpEventType.tapAt => _tapAt(params),
    // ── Utilities ───────────────────────────────────────────────────────
    McpEventType.wait => _wait(params),
    // ── Assertions ───────────────────────────────────────────────────────
    McpEventType.assertExists => _assertExists(widgetKey),
    McpEventType.assertText => _assertText(widgetKey, params),
    McpEventType.assertVisible => _assertVisible(widgetKey),
    McpEventType.assertEnabled => _assertEnabled(widgetKey),
    McpEventType.assertSelected => _assertSelected(widgetKey),
    McpEventType.assertValue => _assertValue(widgetKey, params),
    McpEventType.assertCount => _assertCount(widgetKey, params),
  };
}