used doberkofler's solution and then realised I could do the following:
if (page.frames().length > 0) {
await Promise.all(
page.frames().map((frame) => frame.waitForLoadState("networkidle"))
);
}
I know this doesn't explicitly wait for a given URL but the two solutions could be combined