]> git.openstreetmap.org Git - nominatim-ui.git/blob - test/shared.js
Rebundle latest version
[nominatim-ui.git] / test / shared.js
1 import { test as base } from '@playwright/test';
2
3 const API_DELAY_MS = 1000;
4 let lastApiRequestTime = 0;
5
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));
12     }
13     lastApiRequestTime = Date.now();
14     await route.continue();
15   });
16 }
17
18 /**
19  * Extended test fixture that throttles requests to the Nominatim API
20  * to avoid rate limiting (HTTP 429).
21  */
22 export const test = base.extend({
23   page: async ({ page }, use) => {
24     await throttleApiRequests(page);
25     await use(page);
26   },
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);
32       return page;
33     };
34     await use(browser);
35   },
36 });
37
38 export { expect } from '@playwright/test';