|
@@ -75,26 +75,27 @@ class Webshot extends CallableInstance {
|
|
|
const zoomFactor = 2;
|
|
|
logger.info(`shooting ${width}*${height} webshot for ${url}`);
|
|
|
this.performOnNewPage(page => {
|
|
|
- const startTime = new Date().getTime();
|
|
|
+ let startTime;
|
|
|
+ let gotoUrl = () => {
|
|
|
+ startTime = new Date().getTime();
|
|
|
+ return page.goto(url, { waitUntil: 'load', timeout: getTimeout() });
|
|
|
+ };
|
|
|
const getTimerTime = () => new Date().getTime() - startTime;
|
|
|
const getTimeout = () => twitter_1.WebshotHelpers.isWaitingForLogin ? 0 : Math.max(500, webshotDelay - getTimerTime());
|
|
|
page.setViewportSize({
|
|
|
width: width / zoomFactor,
|
|
|
height: height / zoomFactor,
|
|
|
}).then(() => page.context().addCookies(this.getCookies()))
|
|
|
- .then(() => page.goto(url, { waitUntil: 'load', timeout: getTimeout() }))
|
|
|
+ .then(gotoUrl)
|
|
|
.then(() => twitter_1.WebshotHelpers.handleCookieConsent(page))
|
|
|
.then(() => ((next) => Promise.race([
|
|
|
- twitter_1.WebshotHelpers.handleLogin(page)
|
|
|
- .then(() => page.goto(url, { waitUntil: 'load', timeout: getTimeout() }))
|
|
|
- .then(next),
|
|
|
- next(),
|
|
|
- ]))(() => (0, util_1.promisify)(setTimeout)(2000).then(() => page.waitForSelector('article', { timeout: getTimeout() }))))
|
|
|
+ twitter_1.WebshotHelpers.handleLogin(page).then(gotoUrl).then(next),
|
|
|
+ (0, util_1.promisify)(setTimeout)(2000).then(next),
|
|
|
+ ]))(() => page.waitForSelector('article', { timeout: getTimeout() })))
|
|
|
.catch((err) => {
|
|
|
if (err.name !== 'TimeoutError')
|
|
|
throw err;
|
|
|
logger.warn(`navigation timed out at ${getTimerTime()} ms`);
|
|
|
- return null;
|
|
|
})
|
|
|
.then(() => page.addStyleTag({ content: 'nav,footer,main>*>*+*,header div>[class$=" "]>[class]+div,main button,canvas,main section,main section+div>ul>:not(div),' +
|
|
|
'main section+div>ul>div [role="button"],section+div h2,article>*>:first-child+*>*>:first-child+*{display:none!important} ' +
|