1 import { test as base } from '@playwright/test';
3 const API_DELAY_MS = 1000;
4 let lastApiRequestTime = 0;
6 async function throttleApiRequests(page) {
7 await page.route(/\/(search|reverse|lookup|details|status)\?/, async (route) => {
8 const now = Date.now();
9 const elapsed = now - lastApiRequestTime;
10 if (elapsed < API_DELAY_MS) {
11 await new Promise(r => setTimeout(r, API_DELAY_MS - elapsed));
13 lastApiRequestTime = Date.now();
14 await route.continue();
19 * Extended test fixture that throttles requests to the Nominatim API
20 * to avoid rate limiting (HTTP 429).
22 export const test = base.extend({
23 page: async ({ page }, use) => {
24 await throttleApiRequests(page);
27 browser: async ({ browser }, use) => {
28 const originalNewPage = browser.newPage.bind(browser);
29 browser.newPage = async (options) => {
30 const page = await originalNewPage(options);
31 await throttleApiRequests(page);
38 export { expect } from '@playwright/test';