import { Browser, JSHandle, Page } from '@playwright/test'; import type { IRenderDimensions } from 'browser/renderer/shared/Types'; import type { ICoreTerminal, IDisposable, IMarker } from 'common/Types'; import * as playwright from '@playwright/test'; import { PageFunction } from 'playwright-core/types/structs'; import { IBuffer, IBufferCell, IBufferLine, IBufferNamespace, IBufferRange, IDecoration, IDecorationOptions, IModes, ITerminalInitOnlyOptions, ITerminalOptions, Terminal } from '@jsnix/xterm'; export interface ITestContext { browser: Browser; page: Page; termHandle: JSHandle; proxy: TerminalProxy; } export declare function createTestContext(browser: Browser): Promise; export interface IEvent { (listener: (arg1: T, arg2: U) => any): IDisposable; } type EnsureAsync = T extends PromiseLike ? T : Promise; type EnsureAsyncProperties = { [Key in keyof T]: EnsureAsync; }; type EnsureAsyncMethods = { [K in keyof T]: T[K] extends (...args: infer Args) => infer Return ? (...args: Args) => Promise : T[K]; }; type PlaywrightApiProxy = (EnsureAsyncProperties> & EnsureAsyncMethods> & Omit); interface ITerminalProxyCustomMethods { evaluate(pageFunction: PageFunction[], T>): Promise; write(data: string | Uint8Array): Promise; } type TerminalProxyAsyncPropOverrides = 'cols' | 'rows' | 'modes'; type TerminalProxyAsyncMethodOverrides = 'hasSelection' | 'getSelection' | 'getSelectionPosition' | 'registerMarker' | 'registerDecoration'; type TerminalProxyCustomOverrides = 'buffer' | ('element' | 'textarea' | 'markers' | 'unicode' | 'parser' | 'options' | 'open' | 'attachCustomKeyEventHandler' | 'attachCustomWheelEventHandler' | 'registerLinkProvider' | 'registerCharacterJoiner' | 'deregisterCharacterJoiner' | 'loadAddon' | 'attachElementToMarker'); export declare class TerminalProxy implements ITerminalProxyCustomMethods, PlaywrightApiProxy { private readonly _page; constructor(_page: Page); initPage(): Promise; initTerm(): Promise; private _onBell; get onBell(): IEvent; private _onBinary; get onBinary(): IEvent; private _onCursorMove; get onCursorMove(): IEvent; private _onData; get onData(): IEvent; private _onKey; get onKey(): IEvent<{ key: string; domEvent: KeyboardEvent; }>; private _onLineFeed; get onLineFeed(): IEvent; private _onRender; get onRender(): IEvent<{ start: number; end: number; }>; private _onResize; get onResize(): IEvent<{ cols: number; rows: number; }>; private _onScroll; get onScroll(): IEvent; private _onSelectionChange; get onSelectionChange(): IEvent; private _onTitleChange; get onTitleChange(): IEvent; private _onWriteParsed; get onWriteParsed(): IEvent; get cols(): Promise; get rows(): Promise; get modes(): Promise; get buffer(): TerminalBufferNamespaceProxy; get core(): TerminalCoreProxy; dispose(): Promise; reset(): Promise; clear(): Promise; focus(): Promise; blur(): Promise; hasSelection(): Promise; getSelection(): Promise; getSelectionPosition(): Promise; selectAll(): Promise; selectLines(start: number, end: number): Promise; clearSelection(): Promise; select(column: number, row: number, length: number): Promise; paste(data: string): Promise; refresh(start: number, end: number): Promise; getOption(key: T): Promise; setOption(key: T, value: ITerminalOptions[T]): Promise; setOptions(value: Partial): Promise; scrollToTop(): Promise; scrollToBottom(): Promise; scrollPages(pageCount: number): Promise; scrollToLine(line: number): Promise; scrollLines(amount: number): Promise; write(data: string | Uint8Array): Promise; writeln(data: string | Uint8Array): Promise; input(data: string, wasUserInput?: boolean): Promise; resize(cols: number, rows: number): Promise; registerMarker(y?: number | undefined): Promise; registerDecoration(decorationOptions: IDecorationOptions): Promise; clearTextureAtlas(): Promise; evaluate(pageFunction: PageFunction[], T>): Promise; evaluateHandle(pageFunction: PageFunction[], T>): Promise>; getHandle(): Promise>; } declare class TerminalBufferNamespaceProxy implements PlaywrightApiProxy { private readonly _page; private readonly _proxy; private _onBufferChange; readonly onBufferChange: IEvent; constructor(_page: Page, _proxy: TerminalProxy); get active(): TerminalBufferProxy; get normal(): TerminalBufferProxy; get alternate(): TerminalBufferProxy; } declare class TerminalBufferProxy { private readonly _page; private readonly _proxy; private readonly _handle; constructor(_page: Page, _proxy: TerminalProxy, _handle: Promise>); get type(): Promise<'normal' | 'alternate'>; get cursorY(): Promise; get cursorX(): Promise; get viewportY(): Promise; get baseY(): Promise; get length(): Promise; getLine(y: number): Promise; evaluate(pageFunction: PageFunction[], T>): Promise; } declare class TerminalBufferLine { private readonly _page; private readonly _handle; constructor(_page: Page, _handle: JSHandle); get length(): Promise; get isWrapped(): Promise; translateToString(trimRight?: boolean, startColumn?: number, endColumn?: number): Promise; getCell(x: number): Promise; evaluate(pageFunction: PageFunction[], T>): Promise; } declare class TerminalBufferCell { private readonly _page; private readonly _handle; constructor(_page: Page, _handle: JSHandle); getWidth(): Promise; getChars(): Promise; evaluate(pageFunction: PageFunction[], T>): Promise; } declare class TerminalCoreProxy { private readonly _page; private readonly _proxy; constructor(_page: Page, _proxy: TerminalProxy); get isDisposed(): Promise; get renderDimensions(): Promise; triggerBinaryEvent(data: string): Promise; private _getCoreHandle; evaluate(pageFunction: PageFunction[], T>): Promise; } export declare function openTerminal(ctx: ITestContext, options?: ITerminalOptions | ITerminalInitOnlyOptions, testOptions?: { loadUnicodeGraphemesAddon: boolean; }): Promise; export type MaybeAsync = Promise | T; interface IPollForOptions { equalityFn?: (a: T, b: T) => boolean; maxDuration?: number; stack?: string; } export declare function pollFor(page: playwright.Page, evalOrFn: string | (() => MaybeAsync), val: T, preFn?: () => Promise, options?: IPollForOptions): Promise; export declare function pollForApproximate(page: playwright.Page, marginOfError: number, evalOrFn: string | (() => MaybeAsync), val: T, preFn?: () => Promise, maxDuration?: number, stack?: string): Promise; export declare function writeSync(page: playwright.Page, data: string): Promise; export declare function timeout(ms: number): Promise; export declare function getBrowserType(): playwright.BrowserType | playwright.BrowserType | playwright.BrowserType; export declare function launchBrowser(opts?: playwright.LaunchOptions): Promise; export {};