playstation: better handling for initial page load
This commit is contained in:
parent
6a5cbdb344
commit
f08f334c8d
2 changed files with 35 additions and 6 deletions
|
|
@ -7,6 +7,7 @@ import {
|
|||
jsonDb,
|
||||
notify,
|
||||
prompt,
|
||||
retryOnError,
|
||||
} from "./util.js";
|
||||
import path from "path";
|
||||
import { existsSync, writeFileSync } from "fs";
|
||||
|
|
@ -63,7 +64,8 @@ async function main() {
|
|||
}
|
||||
|
||||
async function performLogin() {
|
||||
await page.goto(URL_CLAIM, { waitUntil: "networkidle" }); // default 'load' takes forever
|
||||
// the page gets stuck sometimes and requires a reload
|
||||
await retryOnError(() => page.goto(URL_CLAIM, { timeout: 20_000, waitUntil: "networkidle" }));
|
||||
|
||||
const signInLocator = page.locator('span:has-text("Sign in")').first();
|
||||
const profileIconLocator = page.locator(".profile-icon").first();
|
||||
|
|
|
|||
27
util.js
27
util.js
|
|
@ -18,6 +18,33 @@ export const jsonDb = async file => {
|
|||
|
||||
|
||||
export const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
||||
|
||||
/**
|
||||
* Retries a Promise a specified number of times on error.
|
||||
*
|
||||
* @param {function(): Promise<any>} promiseFn - A function that returns a Promise.
|
||||
* @param {number} maxRetries - The maximum number of retries to attempt on error.
|
||||
* @returns {Promise<any>} - A Promise that resolves with the result of the successful attempt or rejects with the last error if all retries fail.
|
||||
*/
|
||||
export const retryOnError = (promiseFn, maxRetries = 1) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const executePromise = async (remainingRetries) => {
|
||||
try {
|
||||
const result = await promiseFn();
|
||||
resolve(result);
|
||||
} catch (error) {
|
||||
if (remainingRetries > 0) {
|
||||
console.log(`Retrying... ${remainingRetries} retries left.`);
|
||||
executePromise(remainingRetries - 1); // Retry the Promise with one less retry
|
||||
} else {
|
||||
reject(error); // No more retries left, reject with the last error
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
executePromise(maxRetries);
|
||||
});
|
||||
};
|
||||
// date and time as UTC (no timezone offset) in nicely readable and sortable format, e.g., 2022-10-06 12:05:27.313
|
||||
export const datetimeUTC = (d = new Date()) => d.toISOString().replace('T', ' ').replace('Z', '');
|
||||
// same as datetimeUTC() but for local timezone, e.g., UTC + 2h for the above in DE
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue