UNPKG

@serenity-js/web

Version:

Serenity/JS Screenplay Pattern library offering a flexible, web driver-agnostic approach for interacting with web-based user interfaces and components, suitable for various testing contexts

74 lines 3.6 kB
import type { CorrelationId } from '@serenity-js/core/lib/model'; import type { BrowserCapabilities } from './BrowserCapabilities'; import type { Page } from './Page'; /** * Represents the pages open in the current browsing context. * * You'll need to use this class directly only if you're planning to integrate Serenity/JS * with a new Web integration tool. * * @group Models */ export declare abstract class BrowsingSession<Page_Type extends Page> { protected currentBrowserPage: Page_Type; protected readonly pages: Map<CorrelationId, Page_Type>; closePagesOtherThan(pageOfInterest: Page_Type): Promise<void>; /** * Opens a new browser page and associates it with a [`Page`](https://serenity-js.org/api/web/class/Page/) object. */ protected abstract registerCurrentPage(): Promise<Page_Type>; /** * Returns [basic meta-data](https://serenity-js.org/api/web/interface/BrowserCapabilities/) about the browser associated with this browsing session. */ abstract browserCapabilities(): Promise<BrowserCapabilities>; /** * Returns a [`Page`](https://serenity-js.org/api/web/class/Page/) representing the currently active top-level browsing context. */ currentPage(): Promise<Page_Type>; /** * Registers specified [pages](https://serenity-js.org/api/web/class/Page/) to be managed by this [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/). * * @param pages */ register(...pages: Page_Type[]): void; /** * Informs this [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/) that it should no longer manage [pages](https://serenity-js.org/api/web/class/Page/) * identified by the given `pageIds`. * * @param pageIds */ deregister(...pageIds: CorrelationId[]): void; /** * Returns a [pages](https://serenity-js.org/api/web/class/Page/) representing all the available * top-level browsing context, e.g. all the open browser tabs. */ allPages(): Promise<Array<Page_Type>>; /** * Returns the ids of any [pages](https://serenity-js.org/api/web/class/Page/) this [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/) is aware of. */ registeredPageIds(): Array<CorrelationId>; /** * Informs the [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/) that the "current page" has changed to `page`. * * Please note that different Web integration tools have a different definition of what a "current page" is. * For example, Selenium or WebdriverIO use a single "focused" window that a developer * needs to explicitly "switch to" in their tests in order to interact with it. * This is similar to how a regular user would interact with Web pages; * switching from one tab to another, but not interacting with more than one * window/tab simultaneously. * * Playwright and Puppeteer, on the other hand, don't have a concept of the "current" page at all, since they * allow the developer to interact with multiple open tabs/windows at the same time. * * Web integration-specific implementations of this class should override this method to define * how the concept of the "current page" should be interpreted by Serenity/JS. * * @param page */ changeCurrentPageTo(page: Page_Type): Promise<void>; /** * Closes all the pages available in this browsing context */ closeAllPages(): Promise<void>; } //# sourceMappingURL=BrowsingSession.d.ts.map