57 lines
1.1 KiB
JavaScript
57 lines
1.1 KiB
JavaScript
const browser = require('../browser');
|
|
|
|
module.exports = async ({ url }) => {
|
|
if (!url) {
|
|
throw new Error('URL é obrigatória');
|
|
}
|
|
|
|
await browser.start();
|
|
const p = await browser.ensurePage();
|
|
|
|
const currentUrl = p.url();
|
|
|
|
if (currentUrl && currentUrl !== 'about:blank') {
|
|
if (currentUrl.includes(new URL(url).hostname)) {
|
|
await p.goto(url, {
|
|
waitUntil: 'domcontentloaded',
|
|
timeout: 30000
|
|
});
|
|
await p.waitForTimeout(1500);
|
|
|
|
return {
|
|
success: true,
|
|
url,
|
|
title: await p.title(),
|
|
tab: 'reused'
|
|
};
|
|
}
|
|
|
|
const newPage = await browser.newTab();
|
|
await newPage.goto(url, {
|
|
waitUntil: 'domcontentloaded',
|
|
timeout: 30000
|
|
});
|
|
await newPage.waitForTimeout(1500);
|
|
|
|
return {
|
|
success: true,
|
|
url,
|
|
title: await newPage.title(),
|
|
tab: 'new'
|
|
};
|
|
}
|
|
|
|
await p.goto(url, {
|
|
waitUntil: 'domcontentloaded',
|
|
timeout: 30000
|
|
});
|
|
await p.waitForTimeout(1500);
|
|
|
|
return {
|
|
success: true,
|
|
url,
|
|
title: await p.title(),
|
|
tab: 'existing'
|
|
};
|
|
};
|