@antithesishq/bombadil/browser
Exports
Action
type Action<
Number = number,
String = string
> = "Back" | "Forward" | "Reload" | "Wait" | {
Click: {
fingerprint: Fingerprint;
point: Point<Number>;
};
} | {
DoubleClick: {
fingerprint: Fingerprint;
point: Point<Number>;
delayMillis: Range;
};
} | {
TypeText: {
text: String;
delayMillis: Range;
};
} | {
PressKey: {
code: number;
};
} | {
ScrollUp: {
origin: Point;
distance: Number;
};
} | {
ScrollDown: {
origin: Point;
distance: Number;
};
} | {
SetFileInputFiles: {
selector: string;
files: string[];
};
} | {
MouseDrag: {
from: Point;
to: Point;
steps: Number;
delayMillis: Number;
};
} | {
SetViewport: {
width: Number;
height: Number;
};
}
ActionTemplate
type ActionTemplate = Action<Range, StringGenerator>
ConsoleEntry
type ConsoleEntry = {
timestamp: number;
level: "warning" | "error";
args: JSON[];
}
Fingerprint
type Fingerprint = {
testId: string | null;
id: string | null;
role: string | null;
accessibleName: string | null;
tag: string;
href: string | null;
nameAttr: string | null;
placeholder: string | null;
inputType: string | null;
textContent: string | null;
structuralPath: string | null;
}
NavigationEntry
type NavigationEntry = {
id: number;
title: string;
url: string;
}
Point
type Point<Number = number> = {
x: Number;
y: Number;
}
Resources
interface Resources {
js_heap_used: number;
js_heap_total: number;
dom_nodes: number;
documents: number;
js_event_listeners: number;
layout_objects: number;
timestamp: number;
thread_time: number;
task_duration: number;
script_duration: number;
}
State
interface State {
document: HTMLDocument;
window: Window;
navigationHistory: {
back: NavigationEntry[];
current: NavigationEntry;
forward: NavigationEntry[];
};
errors: {
uncaughtExceptions: {
text: string;
line: number;
column: number;
url: string | null;
remote_object: {
type_name: string;
subtype: string | null;
class_name: string | null;
description: string | null;
value: unknown;
} | null;
stacktrace: {
name: string;
line: number;
column: number;
url: string;
}[] | null;
}[];
};
console: ConsoleEntry[];
lastAction: Action | null;
resources: Resources;
}
actions
function actions(generate: () => Tree<ActionTemplate> | ActionTemplate[]): ActionGenerator<ActionTemplate>;
function extract<T extends JSON>(query: (state: State) => T): Cell<T>;
getFingerprint
function getFingerprint(el: Element): Fingerprint;
weighted
function weighted(value: [number, ActionTemplate | ActionGenerator<ActionTemplate>][]): ActionGenerator<ActionTemplate>;