UNPKG

@redhat-developer/page-objects

Version:

Page Object API implementation for a VS Code editor used by ExTester framework.

46 lines (45 loc) 1.88 kB
/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License", destination); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Locator, WebElement } from 'selenium-webdriver'; import { AbstractElement } from './AbstractElement'; /** * Heavily inspired by https://stackoverflow.com/a/65418734 */ type Constructor<T = object> = new (...args: any[]) => T; /** * The interface that a class is required to have in order to use the Webview mixin. */ interface WebviewMixable extends AbstractElement { getViewToSwitchTo(): Promise<WebElement | undefined>; } /** * The interface that is exposed by applying this mixin. */ export interface WebviewMixinType { findWebElement(locator: Locator): Promise<WebElement>; findWebElements(locator: Locator): Promise<WebElement[]>; switchToFrame(timeout?: number): Promise<void>; switchBack(): Promise<void>; } /** * Returns a class that has the ability to access a webview. * * @param Base the class to mixin * @returns a class that has the ability to access a webview */ export default function <TBase extends Constructor<WebviewMixable>>(Base: TBase): Constructor<InstanceType<TBase> & WebviewMixinType>; export {};