Skip to content

Discussing a standard for cross-platform UI-based app automation #161

Open
@jlipps

Description

@jlipps

Hi everyone, I'm a maintainer of the Appium project (part of the OpenJS Foundation). For some time I've been thinking about an argument/proposal to do with an open standard for UI-based app automation. Appium emerged almost a decade ago as a sort of parallel to Selenium--Selenium focused on browser automation, and Appium focused on mobile. Nowadays Appium sees itself as a platform for developing automation support for any platform, not just mobile (TV, IoT, gaming consoles, car screens, etc...)

Appium chose to rely on Selenium's protocol, which became the official W3C WebDriver standard, and it still keeps in step with that standard (for example, many of Appium's client libraries are built on top of Selenium clients which implement the WebDriver protocol). As Appium's purview kept expanding, it became necessary to extend the WebDriver protocol with new behaviours (since platforms other than the web have different automation requirements). Given the success of Appium in terms of making the WebDriver protocol one of the more popular ways to automate apps on all kinds of platforms, I think the time has come to discuss standardizing the protocol work Appium has done.

There are a number of motivations for standardization, but the main one is to convince and attract app platform vendors to create and maintain their own implementations of the "Appium" standard, which have a better chance of being high quality and in sync with their own internal code. This is the transition that happened with the advent of the WebDriver protocol, where Safari, Google, Edge, Firefox, etc..., all began to ship with their own WebDriver implementations. The implementation burden shifted from the Selenium project to the browser vendors themselves, where it arguably belongs. I think there are many good reasons the same story can and should happen with app platforms beyond the browser.

I'd welcome some of your time to present a brief version of this argument and get your feedback!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions