even tho this makes sense to me, but the compilers keeps complaining for the type as it cannot have optional params. What could be the better solution? I have it have used either puppeteer option or playwright options depending on the page passed as arg
import {Page as PuppeteerPage, Frame as PuppeteerFrame} from "puppeteer";
import {Page as PlayWrightPage, Frame as PlaywrightFrame, } from "playwright";
type BrowserPage = PuppeteerPage | PlayWrightPage
type PageFrame = PuppeteerFrame | PlaywrightFrame
export abstract class Navigator<PageType extends BrowserPage>
{
page: PageType;
url: string;
constructor(page: PageType, url: string)
{
this.page = page;
this.url = url;
}
async waitRandom(minimum: number, maximum: number): Promise<void>
{
return new Promise(resolve =>
{
const delay = Math.random() * (maximum - maximum) + maximum;
setTimeout(
() =>
{
resolve();
}, delay * 1000
);
});
};
async goto(url: string, options: Parameters<PageType['goto']>[1] = {timeout: 0, waitUntil: "networkidle"}): Promise<void>
{
await this.page.goto(url, options as any);
}
}
error
Argument of type 'GoToOptions | { referer?: string | undefined; timeout?: number | undefined; waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit" | undefined; }' is not assignable to parameter of type '(GoToOptions & { referer?: string | undefined; timeout?: number | undefined;
....
....
Type '"networkidle0"' is not assignable to type '"load" | "domcontentloaded" | "networkidle" | "commit" | undefined'. Did you mean '"networkidle"'?ts(2345)