Skip to content

Implement unified UI automation framework (Qt Http Server + Playwright) #995

@magnesj

Description

@magnesj

Following the investigation in #993 and the recommended architecture documented in #994, implement a single UI automation framework that serves both:

  1. deterministic UI workflow tests in CI, and
  2. UI event simulation for AI tooling.

Recommended architecture (from #994)

  • Automation transport: localhost-only automation API exposed from ResInsight using Qt Http Server (qthttpserver), targeting Qt 6.6.3. Builds on the prototype in HTML project browser with property editor and WebGL view #992.
  • API contract: describe the automation API with an OpenAPI specification so the surface is versioned, documented, and used to generate clients.
  • Automation client / test runner: Playwright to drive the API and assert outcomes.

Scope / tasks

  • Define a stable, localhost-only automation API surface (endpoints for locating project-tree nodes, reading/editing PDM fields, invoking commands, and querying view state such as visible cells).
  • Author an OpenAPI specification for the automation API; treat the spec as the source of truth and use it to generate/validate clients and document the surface.
  • Build the transport on Qt6::HttpServer (Qt 6.6.3), consolidating with the existing RiaHtmlServer prototype from HTML project browser with property editor and WebGL view #992 rather than duplicating it.
  • Add a Playwright-based test project/runner that calls the API (driven by the OpenAPI-described endpoints).
  • Implement the reference workflow as the first end-to-end test: create a range filter → verify it exists → manipulate it → verify visible cells update → delete it → verify the filter is gone and the view updates.
  • Wire the Playwright suite into CI.
  • Document how AI tooling reuses the same API surface.

Alternatives considered (rejected, see #994)

  • QTest-only — good for in-process widget tests, weak as an external interface for AI tooling.
  • Squish — capable, but adds commercial licensing/maintenance overhead.
  • Playwright-only (no in-app API) — strong runner, but brittle desktop Qt event targeting without a stable in-app automation surface.

Refs #993, #994, #992.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions