UNPKG

console-tourist

Version:

This script provides to analyze console error on your website.

83 lines (66 loc) 2.5 kB
"use strict"; const puppeteer = require('puppeteer'); const logger=require('./logger'); const {crawled,queue,queueManager,scope}=require('./queue'); module.exports=async function analyze(uri,cookies=null) { if(!crawled.includes(uri)) { crawled.push(uri); try { //open a instance const browser = await puppeteer.launch({ headless: true, devtools: true }); //open a page const page = await browser.newPage(); if(cookies !=null) { await page.setCookie(cookies); } //This scriptes provides to listen console. If any errors occured and appear on console it catch up them. page.on('console', message => { //get msg type let type = message.type().substr(0, 3).toUpperCase() //write message logger(uri,type,message.text()); }) page.on('pageerror', message=> { //get msg type //write message logger(uri,'ERR',message.text()); }); page.on('requestfailed', request => { let msg=`${request.failure().errorText} ${request.url()}`; //write message logger(uri,'ERR',msg); }); ///go to target await page.goto(uri); let links = await page.evaluate(() => { var result = []; var links = document.links; for (var i = 0; i < links.length; i++) { result.push(links[i].href); } return result; }); //add new links to queue for (var i = 0; i < links.length; i++) { queueManager(links[i]); } //analyze queue for (var i = 0; i < queue.length; i++) { await analyze(queue[i],cookies); } //close page await page.close(); //close instance await browser.close(); //return result //if any error } catch (e) { console.log(e); } } }