Files
ChannelTests-TS/test/pages/Page.ts

34 lines
949 B
TypeScript

import {browser} from '@wdio/globals';
export type PageOptions = {
browser?: typeof browser; // MultiRemote usecase
}
export type PageOpenOptions = {
queryParameters?: Record<string, string | number>;
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<void> {
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);
}
}
}