cy-mobile-commands
Version:
Mobile testing helper for Cypress
66 lines (65 loc) • 2.69 kB
TypeScript
/// <reference types="cypress" />
declare const SVG_NS = "http://www.w3.org/2000/svg";
declare const COLORS: string[];
declare class InputDeviceCapabilities {
firesTouchEvents: boolean;
constructor(opts: {
firesTouchEvents: boolean;
});
}
declare namespace Cypress {
interface Chainable<Subject> {
visitMobile(url: string, options?: Partial<VisitOptions>): Chainable<Window>;
visitMobile(options: Partial<VisitOptions> & {
url: string;
}): Chainable<Window>;
swipe(...path: SwipeConfAndPath): Chainable<void>;
}
}
declare type NumPos = [number, number];
declare type FingerPositionName = 'left' | 'right' | 'top' | 'bottom' | 'center' | 'top-left' | 'topLeft' | 'top-right' | 'topRight' | 'bottom-left' | 'bottomLeft' | 'bottom-right' | 'bottomRight';
declare type FingerPosition = NumPos | FingerPositionName;
declare type Fingers = FingerPosition | FingerPosition[];
declare type SwipeConfig = {
steps?: number;
delay: number;
draw: boolean;
};
declare type SwipeConfAndPath = [SwipeConfig, ...FingerPosition[]] | FingerPosition[];
declare type TouchEventConfig = {
fingers: NumPos[];
checkpoint?: boolean;
};
declare type EventName = "touchstart" | "touchmove" | "touchend";
declare class SVGCanvas {
doc: HTMLDocument;
svg: SVGElement;
lines: SVGPathElement[];
constructor(doc: HTMLDocument);
startLine(finger: number, x: number, y: number): void;
extendLine(finger: number, x: number, y: number): void;
mkDot(className: string, x: number, y: number, radius: number, color: string, stroke?: number): SVGCircleElement;
touchstart(finger: number, x: number, y: number): void;
touchmove(finger: number, x: number, y: number, checkpoint: boolean): void;
touchend(finger: number, x: number, y: number): void;
}
declare function getOffset(element: HTMLElement, offset?: {
top: number;
left: number;
}): any;
declare function normalizeCheckpointFingers(target: JQuery<HTMLElement>, fingers: Fingers): NumPos[];
declare function notationToPoint(target: JQuery<HTMLElement>, position: FingerPosition): NumPos;
declare class Swipe {
target: JQuery<HTMLElement>;
touchCanvas: SVGCanvas | null;
delay: number;
stepDelay: number;
steps: number;
win: Window;
path: FingerPosition[];
promiseChain: Promise<void> | undefined;
constructor(target: JQuery<HTMLElement>, { steps, delay, draw }: SwipeConfig, path: FingerPosition[]);
doIt(): void;
updateFingerMove(from: FingerPosition, to: FingerPosition, checkpoint: number): void;
dispatchTouchEvent(evName: EventName, { fingers, checkpoint }: TouchEventConfig): void;
}