import {browser} from '@wdio/globals'; export type PageOptions = { browser?: typeof browser; // MultiRemote usecase } export type PageOpenOptions = { queryParameters?: Record; isNewTabRequest?: boolean; endpoint?: string; requestPath?: string; }; export default class Page { private readonly _baseUrl: string; constructor(baseUrl: string) { this._baseUrl = baseUrl; } public async open(options: PageOpenOptions = {}): Promise { const {queryParameters, isNewTabRequest, endpoint, requestPath} = options; const pageUrl = `${this._baseUrl}/${endpoint}${requestPath}?${Object.entries(queryParameters ?? {}).map(([queryParameterName, queryParamterValue]) => (`${queryParameterName}=${queryParamterValue}&`)).join('')}`; if (isNewTabRequest) { await browser.newWindow(pageUrl); } else { await browser.url(pageUrl); } } }