or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-interface.mdconfiguration-system.mdextension-management.mdindex.mdserver-management.md
tile.json

tessl/npm-appium

Automation framework for cross-platform web, mobile, and desktop application testing

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/appium@2.19.x

To install, run

npx @tessl/cli install tessl/npm-appium@2.19.0

index.mddocs/

Appium

Appium is an open-source cross-platform test automation framework that provides WebDriver-based automation capabilities for native, hybrid, mobile web and desktop applications across multiple platforms including iOS, Android, macOS, Windows, and IoT devices. The framework follows a modular and extensible architecture built around three core concepts: Drivers for platform-specific automation, Clients for multi-language test development, and Plugins for extending functionality.

Package Information

  • Package Name: appium
  • Package Type: npm
  • Language: JavaScript/TypeScript
  • Installation: npm install appium

Core Imports

import { main, init, readConfigFile, finalizeSchema, getSchema, validate, resolveAppiumHome } from "appium";

For CommonJS:

const { main, init, readConfigFile, finalizeSchema, getSchema, validate, resolveAppiumHome } = require("appium");

CLI usage:

npm install -g appium
appium

Basic Usage

Programmatic Server Usage

import { init, main } from "appium";

// Initialize Appium configuration
const config = await init({
  port: 4723,
  address: "127.0.0.1"
});

// Start the Appium server
const server = await main({
  port: 4723,
  address: "127.0.0.1"
});

CLI Usage

# Start Appium server
appium server --port 4723 --address 127.0.0.1

# Install a driver
appium driver install uiautomator2

# List installed drivers
appium driver list

# Install a plugin
appium plugin install images

# List available plugins
appium plugin list

Architecture

Appium is built around several key components:

  • Server Core: HTTP server implementing WebDriver protocol for session management and command routing
  • Driver System: Extensible driver architecture for platform-specific automation (iOS, Android, desktop, etc.)
  • Plugin System: Middleware system for extending functionality with cross-cutting concerns
  • Extension Management: CLI and programmatic APIs for installing, configuring, and managing drivers and plugins
  • Configuration System: Schema-based configuration with file, CLI, and programmatic options
  • CLI Interface: Command-line tools for server management and extension administration

Capabilities

Server Management

Core server initialization, configuration, and lifecycle management for running Appium as a WebDriver-compatible automation server.

function main<Cmd>(args?: Args<Cmd>): Promise<Cmd extends ServerCommand ? AppiumServer : void>;
function init<Cmd>(args?: Args<Cmd>): Promise<InitResult<Cmd>>;

Server Management

Extension Management

Driver and plugin installation, configuration, and lifecycle management for extending Appium's automation capabilities.

interface DriverConfig {
  installedExtensions: string[];
  validate(): Promise<void>;
  print(): void;
}

interface PluginConfig {
  installedExtensions: string[];
  validate(): Promise<void>;
  print(pluginClasses: PluginClass[]): void;
}

Extension Management

Configuration System

Schema-based configuration management with validation, defaults, and file-based configuration support.

function getSchema(extensions?: boolean): ConfigSchema;
function finalizeSchema(extensions?: boolean): ConfigSchema;
function validate(args: ParsedArgs, schema?: ConfigSchema): void;
function readConfigFile(configFile?: string): Promise<ConfigResult>;

Configuration System

CLI Interface

Command-line interface for server management, extension administration, and environment setup.

interface ArgParser {
  parseArgs(): ParsedArgs;
  rawArgs: ServerArgs;
}

CLI Interface

Core Types

interface AppiumServer {
  isSecure(): boolean;
  close(): Promise<void>;
  addWebSocketHandler(path: string, handler: WebSocketServer): void;
}

interface InitResult<Cmd> {
  appiumDriver?: AppiumDriver;
  parsedArgs?: ParsedArgs;
  driverConfig?: DriverConfig;
  pluginConfig?: PluginConfig;
  appiumHome?: string;
}

interface ParsedArgs {
  port?: number;
  address?: string;
  basePath?: string;
  allowCors?: boolean;
  logLevel?: string;
  useDrivers?: string[];
  usePlugins?: string[];
  subcommand?: string;
  [key: string]: any;
}

interface AppiumDriver {
  sessions: Record<string, ExternalDriver>;
  pluginClasses: Map<PluginClass, string>;
  driverConfig: DriverConfig;
  server: AppiumServer;
  shutdown(reason?: string): Promise<void>;
}