UNPKG

scriptable-testlab

Version:

A lightweight, efficient tool designed to manage and update scripts for Scriptable.

167 lines (164 loc) 4.95 kB
import { ArgsMockState } from '../mocks/system/args.js'; import { ConfigMockState } from '../mocks/system/config.js'; import { LocationMockState } from '../mocks/system/location.js'; import { ScriptMockState } from '../mocks/system/script.js'; import { DeviceMockState } from './device.js'; import { LocationAccuracy } from './location.js'; import { WidgetFamily } from './scriptable.js'; import 'scriptable-abstract'; /** * Global preferences interface for all mocks */ interface GlobalPreferences { device: Partial<DeviceMockState>; config: Partial<ConfigMockState>; script: Partial<ScriptMockState>; args: Partial<ArgsMockState>; location: Partial<LocationMockState>; } /** * Runtime context information */ interface RuntimeContext { readonly script: string; readonly path: string; readonly args: Record<string, unknown>; } /** * Runtime environment state */ interface RuntimeEnvironment { readonly isWidget: boolean; readonly isNotification: boolean; readonly isActionExtension: boolean; readonly isSiri: boolean; readonly isHomeScreen: boolean; } /** * Configuration interface for ScriptableRuntime */ interface RuntimeConfig { device?: Partial<DeviceMockState>; widget?: Partial<ConfigMockState>; script?: { name?: string; path?: string; }; location?: Partial<LocationMockState>; } interface ScriptableRuntimeState { isDarkMode: boolean; widgetFamily: WidgetFamily | null; language: string; runsInWidget: boolean; runsInApp: boolean; scriptName: string; alertResponse?: number | null; device: { model: string; systemVersion: string; screenSize: { width: number; height: number; }; screenScale: number; batteryLevel: number; isCharging: boolean; isFullyCharged: boolean; }; location: { latitude: number; longitude: number; accuracy: LocationAccuracy; altitude?: number; horizontalAccuracy?: number; verticalAccuracy?: number; }; args: { plainTexts: string[]; urls: string[]; fileURLs: string[]; images: Image[]; queryParameters: Record<string, string>; }; environment: { runsWithSiri?: boolean; runsInActionExtension?: boolean; runsInNotification?: boolean; runsFromHomeScreen?: boolean; }; } /** * Preset configurations for common testing scenarios */ declare const RuntimePresets: { readonly darkMode: { readonly device: { readonly appearance: { readonly isUsingDarkAppearance: true; }; }; }; readonly lightMode: { readonly device: { readonly appearance: { readonly isUsingDarkAppearance: false; }; }; }; readonly smallWidget: { readonly widget: { readonly widgetFamily: "small"; readonly runsInWidget: true; readonly runsInApp: false; readonly runsWithSiri: false; readonly runsInActionExtension: false; readonly runsInNotification: false; readonly runsFromHomeScreen: false; readonly runsInAccessoryWidget: false; }; }; readonly mediumWidget: { readonly widget: { readonly widgetFamily: "medium"; readonly runsInWidget: true; readonly runsInApp: false; readonly runsWithSiri: false; readonly runsInActionExtension: false; readonly runsInNotification: false; readonly runsFromHomeScreen: false; readonly runsInAccessoryWidget: false; }; }; readonly largeWidget: { readonly widget: { readonly widgetFamily: "large"; readonly runsInWidget: true; readonly runsInApp: false; readonly runsWithSiri: false; readonly runsInActionExtension: false; readonly runsInNotification: false; readonly runsFromHomeScreen: false; readonly runsInAccessoryWidget: false; }; }; readonly iPhone14Pro: { readonly device: { readonly name: "iPhone 14 Pro"; readonly model: "iPhone"; readonly systemName: "iOS"; readonly systemVersion: "16.0"; readonly screenSize: { readonly width: 393; readonly height: 852; }; readonly screenResolution: { readonly width: 1179; readonly height: 2556; }; readonly screenScale: 3; readonly screenBrightness: 1; }; }; }; export { type GlobalPreferences, type RuntimeConfig, type RuntimeContext, type RuntimeEnvironment, RuntimePresets, type ScriptableRuntimeState };