Automation framework for cross-platform web, mobile, and desktop application testing
npx @tessl/cli install tessl/npm-appium@2.19.0Appium 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.
npm install appiumimport { 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
appiumimport { 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"
});# 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 listAppium is built around several key components:
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>>;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;
}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>;Command-line interface for server management, extension administration, and environment setup.
interface ArgParser {
parseArgs(): ParsedArgs;
rawArgs: ServerArgs;
}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>;
}