Skip to content

Dioxus embedded driver: implement W3C Actions API (/actions) — click(options)/drag/hover/key actions #427

@goosewobbler

Description

@goosewobbler

Summary

The Dioxus embedded WebDriver driver (@wdio/dioxus-service via dioxus-embedded-driver) does not implement the W3C Actions endpoint. POST /session/{id}/actions (and the DELETE release) are wired to a not_implemented stub, so any WDIO command that routes through the Actions API fails.

Affected commands

Anything WebdriverIO dispatches via performActions rather than a dedicated endpoint, e.g.:

  • element.click(options).click({}), .click({ button: 'right' }), .click({ x, y }) (bare .click() works — it uses the elementClick endpoint, which is implemented as a coordinate-independent JS el.click())
  • element.doubleClick(), element.moveTo(), drag-and-drop
  • browser.action(...) / browser.actions(...) chains (pointer, key, wheel)

Symptom

The call rejects with unsupported_operation:

not implemented for Dioxus embedded driver

i.e. it fails loudly rather than silently misbehaving.

Root cause

packages/dioxus-embedded-driver/src/server/router.rs:138-142:

// Actions
.route(
  "/session/{session_id}/actions",
  post(handlers::stubs::not_implemented).delete(handlers::stubs::not_implemented),
)

There is no actions.rs handler — the route points at handlers/stubs.rs::not_implemented.

Relationship to #423

This is the Dioxus sibling of #423 (Tauri). The Tauri embedded driver does implement /actions, but its PointerMove struct is missing the origin field, so .click(options) silently clicks viewport (0,0) and misses. Dioxus differs in that the entire endpoint is unimplemented, so it fails loudly instead of silently. Same underlying capability gap, different symptom.

Scope of fix

Implement /session/{id}/actions (+ the DELETE release) in dioxus-embedded-driver, mirroring packages/tauri-plugin-webdriver/src/server/handlers/actions.rs:

Severity

Lower urgency than #423 — fails loudly with a clear error, and bare .click() works. Tracked as a feature gap / parity item toward the cross-service API-convergence goal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:lowLow priority issue or PRscope:dioxusDioxus service, bridge, and driverstype:enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions