Merge pull request #2467 from mononaut/fix-unfurler-race-condition

Fix unfurler navigation race condition
This commit is contained in:
wiz 2022-08-30 23:29:39 +02:00 committed by GitHub
commit 4d7ae95d4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -97,15 +97,20 @@ class Server {
throw new Error('failed to access open graph service'); throw new Error('failed to access open graph service');
} }
} }
// wait for navigation to complete
await page.waitForFunction(
(path) => window.location.pathname.includes(path),
{},
path
);
// wait for preview component to initialize
await page.waitForSelector('meta[property="og:preview:loading"]', { timeout: config.PUPPETEER.RENDER_TIMEOUT || 3000 })
const waitForReady = await page.$('meta[property="og:preview:loading"]');
let success = true; let success = true;
if (waitForReady != null) {
success = await Promise.race([ success = await Promise.race([
page.waitForSelector('meta[property="og:preview:ready"]', { timeout: config.PUPPETEER.RENDER_TIMEOUT || 3000 }).then(() => true), page.waitForSelector('meta[property="og:preview:ready"]', { timeout: config.PUPPETEER.RENDER_TIMEOUT || 3000 }).then(() => true),
page.waitForSelector('meta[property="og:preview:fail"]', { timeout: config.PUPPETEER.RENDER_TIMEOUT || 3000 }).then(() => false) page.waitForSelector('meta[property="og:preview:fail"]', { timeout: config.PUPPETEER.RENDER_TIMEOUT || 3000 }).then(() => false)
]) ])
}
if (success) { if (success) {
const screenshot = await page.screenshot(); const screenshot = await page.screenshot();
return screenshot; return screenshot;