executeEvent method

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

Ejecuta el evento eventType sobre el widget identificado por widgetKey.

Retorna true si el evento se ejecutó con éxito. Retorna false si: el widget no está registrado/montado, faltan parámetros, o el widget tree no contiene el elemento esperado.

Los eventos de aserción retornan el resultado de la aserción (true = aserción cumplida, false = aserción fallida).

Implementation

Future<bool> executeEvent({
  required String widgetKey,
  required McpEventType eventType,
  McpEventParams? params,
}) async {
  Log.i('[Executor] ⚡ $eventType → "$widgetKey"');
  return switch (eventType) {
    // ── Gestos básicos ──────────────────────────────────────────────────
    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),
    // ── Texto e input ────────────────────────────────────────────────────
    McpEventType.textInput => _textInput(widgetKey, params),
    McpEventType.clearText => _clearText(widgetKey),
    McpEventType.selectDropdown => _selectDropdown(widgetKey, params),
    McpEventType.toggle => _toggle(widgetKey),
    McpEventType.setSliderValue => _setSliderValue(widgetKey, params),
    // ── Teclado ─────────────────────────────────────────────────────────
    McpEventType.hideKeyboard => _hideKeyboard(),
    McpEventType.showKeyboard => _showKeyboard(widgetKey),
    // ── Navegación ───────────────────────────────────────────────────────
    McpEventType.pressBack => _pressBack(widgetKey),
    // ── Scroll inteligente ───────────────────────────────────────────────
    McpEventType.scrollUntilVisible => _scrollUntilVisible(widgetKey, params),
    McpEventType.tapByLabel => _tapByLabel(params),
    // ── Utilidades ───────────────────────────────────────────────────────
    McpEventType.wait => _wait(params),
    // ── Aserciones ───────────────────────────────────────────────────────
    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),
  };
}