mobile

package
v1.0.0-rc.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2026 License: AGPL-3.0, AGPL-3.0-or-later Imports: 9 Imported by: 0

README

Experimental Appium Android runner

appium-uiautomator2-wdio is a fixed WebdriverIO/Mocha client profile for an explicit operator-owned loopback Appium server and Android emulator. It does not start a server, create or select a default emulator, install an app, or acquire device authority. Configuration and test JavaScript remain trusted executable project code. A loopback endpoint is not a network or device permission grant.

The request requires independently pinned executable, configuration and native @wdio/json-reporter module; one exact pinned .js, .cjs or .mjs selector; project equal to http://127.0.0.1:PORT/; and target equal to an explicit emulator-NNNN UDID. A generated configuration fixes the local runner, endpoint, one Mocha worker, one spec and one native report file. It requires exactly one Android/UiAutomator2 capability with that UDID and explicit app package/activity. Only typed app identity, four qualified boolean options and two bounded timeout options are copied from capabilities. Other supplied fields, including nested capabilities and connection overrides, are discarded. The configuration copies only the bounded Mocha timeout; hooks, suites, services, session attachment and retry scheduling are excluded. Native ConfigParser/session-sanitizer regression checks verify the effective schedule and connection against the installed WDIO. The independently pinned reporter supplies appium-wdio.json; caller-provided report paths are refused. No arbitrary argv or automatic package install exists.

Parsing reuses the reviewed WebdriverIO native outcome parser and additionally requires the qualified Android/UiAutomator2 capability tuple, matching native UDID/deviceUDID matching caller-bound target, a native session UUID, and named case identities from that session. Exactly one canonical native JavaScript file URI must match caller-bound sourceRoot plus the one literal selectors entry; its path is retained in every test row. These caller fields are copied by the executor and establish comparison metadata, not immutable source authority. Missing reports/session, empty suites, collection/setup errors, contradictory native counts, unknown states, overflow, timeout or cancellation cannot establish a complete passed observation. Retry details remain NOT_REPORTED; device state, server identity, runtime dependency closure and semantic adequacy remain unproved. Native returned capability fields are observations, not authentication of the declared server/device.

Actual qualification used WebdriverIO 9.32.0, Appium 3.8.0, UiAutomator2 8.7.0, Node 22.23.3 and an isolated Android14/API34 AOSP-ATD arm64 emulator from an already installed image. A task-owned APK exposes a real text view. The native matrix reads that view for pass and deliberate assertion failure, and separately runs skipped, empty, setup-error and collection-error fixtures through the common executor. Raw native reports and hashes are in testdata; executable/config/APK hashes, receipts and cleanup evidence are retained under /private/tmp/cem10-build/mobile. Parser mutation tests do not qualify additional runtimes. Other Appium drivers, devices, versions, retries and lifecycle variants remain open qualification obligations.

UiAutomator2 changes Android hidden-API settings during session startup, even with skipDeviceInitialization and noReset. Qualification therefore used a new disposable task-owned emulator, preserving existing devices and their settings. Ordinary app/server code is outside an OS sandbox. The external qualification harness owns all server/emulator cleanup; client process cleanup alone is not evidence that a remote device/session was retired.

TestLiveAppium runs only with explicitly supplied CORVINT_MOBILE_FIXTURE, CORVINT_APPIUM_ENDPOINT, CORVINT_APPIUM_DEVICE, CORVINT_WDIO_JSON_REPORTER and CORVINT_NODE. It downloads nothing and starts no server/emulator.

Documentation

Overview

Package mobile observes a bounded experimental Appium Android runner tuple. The operator owns the server and emulator; native reports do not prove authority.

Index

Constants

View Source
const Runner = "appium-uiautomator2-wdio"

Variables

This section is empty.

Functions

func Build

func Build(r tr.Request) (tr.Invocation, error)

Build fixes the endpoint, emulator, framework and native report. JavaScript configuration/specs remain trusted executable project code, not a sandbox.

func Parse

func Parse(in tr.Input) (tr.Observation, error)

Parse requires the native Android/UiAutomator2 session tuple in addition to WebdriverIO completion/case checks. The session is observed, not authenticated.

func Runners

func Runners() []string

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL