magnitude-core
Version:
Magnitude e2e testing agent
81 lines (80 loc) • 2.21 kB
TypeScript
import { Page, BrowserContext, PageScreenshotOptions } from "playwright";
import { WebAction } from '@/web/types';
import { ActionVisualizer } from "./visualizer";
import { TabState } from "./tabs";
import { Image } from '@/memory/image';
export interface WebHarnessOptions {
virtualScreenDimensions?: {
width: number;
height: number;
};
}
export declare class WebHarness {
/**
* Executes web actions on a page
* Not responsible for browser lifecycle
*/
readonly context: BrowserContext;
private options;
private stability;
readonly visualizer: ActionVisualizer;
private transformer;
private tabs;
constructor(context: BrowserContext, options?: WebHarnessOptions);
retrieveTabState(): Promise<TabState>;
start(): Promise<void>;
get page(): Page;
screenshot(options?: PageScreenshotOptions): Promise<Image>;
_type(content: string): Promise<void>;
transformCoordinates({ x, y }: {
x: number;
y: number;
}): {
x: number;
y: number;
};
click({ x, y }: {
x: number;
y: number;
}): Promise<void>;
rightClick({ x, y }: {
x: number;
y: number;
}): Promise<void>;
doubleClick({ x, y }: {
x: number;
y: number;
}): Promise<void>;
drag({ x1, y1, x2, y2 }: {
x1: number;
y1: number;
x2: number;
y2: number;
}): Promise<void>;
type({ content }: {
content: string;
}): Promise<void>;
clickAndType({ x, y, content }: {
x: number;
y: number;
content: string;
}): Promise<void>;
scroll({ x, y, deltaX, deltaY }: {
x: number;
y: number;
deltaX: number;
deltaY: number;
}): Promise<void>;
switchTab({ index }: {
index: number;
}): Promise<void>;
newTab(): Promise<void>;
navigate(url: string): Promise<void>;
selectAll(): Promise<void>;
enter(): Promise<void>;
backspace(): Promise<void>;
tab(): Promise<void>;
goBack(): Promise<void>;
executeAction(action: WebAction): Promise<void>;
waitForStability(timeout?: number): Promise<void>;
}