CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-appium

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

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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>;
}
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/appium@2.19.x
Publish Source
CLI
Badge
tessl/npm-appium badge