UNPKG

playwright-pom-materials

Version:

Playwright POM materials

91 lines (90 loc) 5.14 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.pwRetryAttempts = exports.pwRetryUi = exports.pwRetry = exports.pwRetryForMaterial = void 0; const config_1 = require("../config"); const retry_1 = require("../retry"); const retryOptions_1 = require("../retryOptions"); const sleepFunc_1 = require("./sleepFunc"); /** * 引数 locator について fn (の返すPromise) がtrueを返すまでリトライします。 * * @param x * @param fn * @param options * @returns */ const pwRetryForMaterial = (x, fn, options) => __awaiter(void 0, void 0, void 0, function* () { options = options || {}; // デフォルトは retry とは異なり maxAttempts: 3 if (!(0, retryOptions_1.isRetryUntilTimeoutOptions)(options)) { options = Object.assign(Object.assign({}, defaultPwRetryOptionsMain), options); } options.intervalFunc = options.intervalFunc || (0, sleepFunc_1.sleepFunc)(x); const impl = () => fn(x); yield (0, retry_1.retry)(impl, options); }); exports.pwRetryForMaterial = pwRetryForMaterial; const defaultPwRetryOptionsMain = { maxAttempts: 20, interval: config_1.config.timeoutUnit * 0.2, // milliseconds }; /** * 引数 fn が true を返すまで処理を繰り返す関数。 * * オプションに maxAttempts を指定する場合の振る舞いは retryAttempts と同じ。 * オプションに maxAttempts を指定されない場合の振る舞いは retryUntilTimeout と同じ。 */ const pwRetry = (x, fn, options) => __awaiter(void 0, void 0, void 0, function* () { options = options || {}; options.intervalFunc = options.intervalFunc || (0, sleepFunc_1.sleepFunc)(x); yield (0, retry_1.retry)(fn, options); }); exports.pwRetry = pwRetry; /** * 引数 fn が true を返すまで処理を繰り返す関数。UI操作用。 * * オプションに maxAttempts を指定する場合の振る舞いは retryAttempts と同じ。 * オプションに maxAttempts を指定されない場合の振る舞いは retryUntilTimeout と同じ。 * * @param [options] * @param {number} [options.timeout] タイムアウトをミリ秒で指定。デフォルトは 2 * 60 * config.timeoutUnit * @param {number} [options.interval] fnを実行するまでの間隔。ミリ秒で指定。デフォルトは uiTimeout(30) */ const pwRetryUi = (x, fn, options) => __awaiter(void 0, void 0, void 0, function* () { if (!(0, retryOptions_1.isRetryAttemptOptions)(options)) { options = Object.assign({ timeout: config_1.config.timeoutUnit * 30, interval: config_1.config.timeoutUnit * 1 }, options); } yield (0, exports.pwRetry)(x, fn, options); }); exports.pwRetryUi = pwRetryUi; /** * 引数 fn が true を返すまで処理を繰り返す関数。 * 繰り返しの上限をオプションの maxAttempts で指定可能。 * * 例外が起きたらすぐに throw する場合は options.throwOn に 'catch' を追加する。 * maxAttemptsを超えた際に例外を throw する場合は options.throwOn に 'exceeded' を追加する。 * 例外が起きてもリトライし、maxAttemptsを超えても例外を throw しない場合は options.throwOn に [] を指定する。 * * @param { {(): Promise<boolean>} } fn 実行に成功したら true を返す(Promiseを返す)関数 * @param [options] * @param {number} [options.timeout] タイムアウトをミリ秒で指定。デフォルトは 2 * 60 * config.timeoutUnit * @param {number} [options.interval] { number }fnを実行するまでの間隔。ミリ秒で指定。デフォルトは 10 * config.timeoutUnit * @param { {(number): Promise<void>} } [options.intervalFunc] fnを実行するまでの間隔を指定する関数。デフォルトは sleep * @param { ('catch'|'exceeded')[] } [options.throwOn] 例外が起きた場合にthrowするタイミング。デフォルトは ['exceeded'] * @param { {(errors: unknown[]): Promise<void>} } [options.errorFunc] 例外が起きた場合に呼び出される関数。デフォルトでは、最後のエラー あるいは 'Retry exceeded maxAttempts' というErrorをthrowする */ const pwRetryAttempts = (x, fn, options) => __awaiter(void 0, void 0, void 0, function* () { options = options || {}; options.intervalFunc = options.intervalFunc || (0, sleepFunc_1.sleepFunc)(x); yield (0, retry_1.retryAttempts)(fn, options); }); exports.pwRetryAttempts = pwRetryAttempts;