Best JavaScript code snippet using puppeteer
network.spec.js
Source:network.spec.js  
...319      const requests = new Map();320      page.on('request', request => requests.set(request.url().split('/').pop(), request));321      server.setRedirect('/rrredirect', '/frames/one-frame.html');322      await page.goto(server.PREFIX + '/rrredirect');323      expect(requests.get('rrredirect').isNavigationRequest()).toBe(true);324      expect(requests.get('one-frame.html').isNavigationRequest()).toBe(true);325      expect(requests.get('frame.html').isNavigationRequest()).toBe(true);326      expect(requests.get('script.js').isNavigationRequest()).toBe(false);327      expect(requests.get('style.css').isNavigationRequest()).toBe(false);328    });329    it('should work with request interception', async({page, server}) => {330      const requests = new Map();331      page.on('request', request => {332        requests.set(request.url().split('/').pop(), request);333        request.continue();334      });335      await page.setRequestInterception(true);336      server.setRedirect('/rrredirect', '/frames/one-frame.html');337      await page.goto(server.PREFIX + '/rrredirect');338      expect(requests.get('rrredirect').isNavigationRequest()).toBe(true);339      expect(requests.get('one-frame.html').isNavigationRequest()).toBe(true);340      expect(requests.get('frame.html').isNavigationRequest()).toBe(true);341      expect(requests.get('script.js').isNavigationRequest()).toBe(false);342      expect(requests.get('style.css').isNavigationRequest()).toBe(false);343    });344    it('should work when navigating to image', async({page, server}) => {345      const requests = [];346      page.on('request', request => requests.push(request));347      await page.goto(server.PREFIX + '/pptr.png');348      expect(requests[0].isNavigationRequest()).toBe(true);349    });350  });351  describe('Page.setExtraHTTPHeaders', function() {352    it('should work', async({page, server}) => {353      await page.setExtraHTTPHeaders({354        foo: 'bar'355      });356      const [request] = await Promise.all([357        server.waitForRequest('/empty.html'),358        page.goto(server.EMPTY_PAGE),359      ]);360      expect(request.headers['foo']).toBe('bar');361    });362    it('should throw for non-string header values', async({page, server}) => {...record.js
Source:record.js  
...203            true, {},204            baseReport, {205                url: request.url(),206                httpStatusCode: response.status(),207                isNavigationRequest: request.isNavigationRequest(),208                redirectChain,209                resourceType: request.resourceType(),210                trials: 'TODO',211            },212            request.userData,213            meta214        );215216        if ('content-type' in response.headers()) {217            record.contentType = response.headers()['content-type'].split(';')[0].trim();218        }219220        record.httpStatusCode = getFinalStatus(record);221222        const {223            finalUrl224        } = getFinalUrl({225            record,226            httpStatusCode: response.status(),227            headers: response.headers()228        });229230        record.finalUrl = finalUrl;231232        delete record.userData;233234        // record.body = null;235        return record;236    }237238    if (response && '_client' in response) {239        // apify request class && puppeteer Response class240        // This is a navigation response241        const record = extend(242            true,243            baseReport, {244                /** @member {string} [urlData] - Url as found when crawling */245                url: request.url,246                httpStatusCode: response.status(),247                isNavigationRequest: response.request().isNavigationRequest(),248                redirectChain: getRedirectionChain(249                    response.request().redirectChain(),250                    request.url251                ),252                resourceType: response.request().resourceType(),253                trials: request.retryCount254            },255            request.userData,256            meta257        );258259        if ('content-type' in response.headers()) {260            record.contentType = response.headers()['content-type'].split(';')[0].trim();261        }262263        record.httpStatusCode = getFinalStatus(record);264265        const {266            finalUrl267        } = getFinalUrl({268            record,269            httpStatusCode: response.status(),270            headers: response.headers(),271            body: meta.body272        });273274        record.finalUrl = finalUrl;275276        delete record.userData;277        delete record.uniqueKey;278279        return record;280    }281282    if (response && response.constructor.name === 'IncomingMessage') {283        // apify request class && (request-promise-native) IncomingMessage class response284        // This is a basicCrawler response285286        const redirectChain = getRedirectionChain(287            response.request._redirect.redirects,288            request.url289        );290291        const record = extend(292            true,293            baseReport, {294                /** @member {string} [urlData] - Url as found when crawling */295                url: request.url,296                httpStatusCode: response.statusCode,297                isNavigationRequest: 'TODO',298                redirectChain,299                resourceType_: ResourceType.fromMimeType(300                    response.headers['content-type']301                ).name(),302                trials: request.retryCount303            },304            request.userData,305            meta306        );307308        if ('content-type' in response.headers) {309            record.contentType = response.headers['content-type'].split(';')[0].trim();310        }311312        if ('content-length' in response.headers) {313            record.contentLength = response.headers['content-length'];314        }315316        record.httpStatusCode = getFinalStatus(record);317318        const {319            finalUrl320        } = getFinalUrl({321            record,322            httpStatusCode: response.statusCode,323            headers: response.headers,324            body: meta.body325        });326327        record.finalUrl = finalUrl;328329        delete record.userData;330331        return record;332    }333334    // This is a mailto: link335    // args: link, request, meta336    // The request argument only has a .userData property.337338    const record = extend(339        true, {},340        baseReport, {341            /** @member {string} [urlData] - Url as found when crawling */342            url: request.url,343            finalUrl: normalizeUrl(request.url),344            isNavigationRequest: 'TODO',345            redirectChain: [],346            resourceType: 'TODO',347            trials: 0348        },349        request.userData,350        meta351    );352353    delete record.userData;354355    return record;356}357358export function handleFailedRequest(request, error, meta) {359    // apify request class360    console.me(inspect(request))361    const reports = captureErrors(request.userData.reports);362    //const _reports = request.userData.reports;363    delete request.userData.reports;364365    const baseReport = extend(true, {}, defaultOpts, {366        reports,367        //_reports,368        trials: request.retryCount,369        created: new Date().toISOString(),370        status: null371    });372373    if (meta._from === 'onNavigationRequestFailed') {374        // console.me(captureErrors(request.errorMessages))375        const record = extend(376            true, {},377            baseReport, {378                url: request.url,379                isNavigationRequest: true,380                redirectChain: [],381                requestErrorMessages: request.errorMessages382            },383            request.userData,384            meta385        );386387        delete record.userData;388        // console.z(record)389        return record;390    }391392    if (meta._from === 'onAssetRequestFailed') {393        const pupRequest = error;394395        const record = extend(396            true, {},397            baseReport, {398                url: request.url,399                isNavigationRequest: pupRequest.isNavigationRequest(),400                redirectChain: pupRequest.redirectChain(),401                resourceType: pupRequest.resourceType(),402                status: pupRequest.failure().errorText,403                reports_: captureErrors(pupRequest.failure().errorText)404            },405            request.userData,406            meta407        );408409        delete record.userData;410411        return record;412    }413}
...intercept.test.js
Source:intercept.test.js  
1const expect = require('chai').expect;2const rewire = require('rewire');3let fetchHandler = rewire('../../lib/handlers/fetchHandler');4const test_name = 'Intercept';5describe(test_name, () => {6  let actualOption;7  beforeEach(() => {8    fetchHandler.__set__('fetch', {9      enable: () => {},10      requestPaused: () => {},11      continueRequest: (options) => {12        actualOption = options;13        return Promise.resolve();14      },15      failRequest: (options) => {16        actualOption = options;17        return Promise.resolve();18      },19      fulfillRequest: (options) => {20        actualOption = options;21        return Promise.resolve();22      },23    });24  });25  afterEach(() => {26    actualOption = null;27    fetchHandler.resetInterceptors();28    const createdSessionListener = fetchHandler.__get__('createdSessionListener');29    fetchHandler.__get__('eventHandler').removeListener('createdSession', createdSessionListener);30    fetchHandler = rewire('../../lib/handlers/fetchHandler');31    fetchHandler.__get__('eventHandler').removeListener('createdSession', createdSessionListener);32  });33  it('Check redirection using interception', async () => {34    fetchHandler.addInterceptor({35      requestUrl: 'www.google.com',36      action: 'www.ibibo.com',37    });38    fetchHandler.handleInterceptor({39      requestId: 'requestId',40      request: {41        url: 'http://www.google.com',42        method: 'GET',43      },44      resourceType: 'Document',45      isNavigationRequest: true,46    });47    expect(actualOption.url).to.equal('http://www.ibibo.com');48  });49  it('Block url', async () => {50    fetchHandler.addInterceptor({ requestUrl: 'www.google.com' });51    fetchHandler.handleInterceptor({52      requestId: 'requestId',53      request: {54        url: 'http://www.google.com',55        method: 'GET',56      },57      resourceType: 'Document',58      isNavigationRequest: true,59    });60    expect(actualOption.errorReason).to.equal('Failed');61  });62  it('Mock Response', async () => {63    fetchHandler.addInterceptor({64      requestUrl: 'http://localhost:3000/api/customers/11',65      action: {66        body: {67          id: 11,68          firstName: 'ward',69          lastName: 'bell',70          gender: 'male',71          address: '12345 Central St.',72          city: 'Los Angeles',73          state: { abbreviation: 'CA', name: 'California' },74          latitude: 34.042552,75          longitude: -118.266429,76        },77      },78    });79    fetchHandler.handleInterceptor({80      requestId: 'requestId',81      request: {82        url: 'http://localhost:3000/api/customers/11',83        method: 'GET',84      },85      resourceType: 'Document',86      isNavigationRequest: true,87    });88    let res = Buffer.from(actualOption.body, 'base64').toString('binary');89    expect(res).to.include('12345 Central St.');90  });91  it('Mock Response with empty body', async () => {92    fetchHandler.addInterceptor({93      requestUrl: 'http://localhost:3000/api/customers/11',94      action: {},95    });96    let req = {97      requestId: 'requestId',98      request: {99        url: 'http://localhost:3000/api/customers/11',100        method: 'GET',101      },102      resourceType: 'Document',103      isNavigationRequest: true,104    };105    expect(() => {106      fetchHandler.handleInterceptor(req);107    }).to.not.throw();108  });109  it('More than one intercept added for the same requestUrl', async () => {110    let actualConsoleWarn;111    console.warn = (log) => {112      actualConsoleWarn = log;113    };114    fetchHandler.addInterceptor({115      requestUrl: 'www.google.com',116      action: 'www.ibibo.com',117    });118    fetchHandler.addInterceptor({119      requestUrl: 'www.google.com',120      action: 'www.gauge.org',121    });122    fetchHandler.handleInterceptor({123      requestId: 'requestId',124      request: {125        url: 'http://www.google.com',126        method: 'GET',127      },128      resourceType: 'Document',129      isNavigationRequest: true,130    });131    let warningMessage =132      'WARNING: More than one intercept ["www.google.com","www.google.com"] found for request "http://www.google.com".\n Applying: intercept("www.google.com", "www.gauge.org")';133    expect(actualConsoleWarn).to.equal(warningMessage);134    expect(actualOption.url).to.equal('http://www.gauge.org');135  });136  describe('Intercept with count added', async () => {137    let count = 3;138    beforeEach(() => {139      fetchHandler.addInterceptor({140        requestUrl: 'www.google.com',141        action: 'www.gauge.org',142        count,143      });144    });145    it('intercepts requestUrl', async () => {146      for (var i = 0; i < count + 1; i++) {147        fetchHandler.handleInterceptor({148          requestId: 'requestId',149          request: {150            url: 'http://www.google.com',151            method: 'GET',152          },153          resourceType: 'Document',154          isNavigationRequest: true,155        });156        var result = count === i ? undefined : 'http://www.gauge.org';157        expect(actualOption.url).to.equal(result);158      }159    });160    it('maintains count amidst interleaving matched requests', async () => {161      for (var i = 0; i < count + 1; i++) {162        fetchHandler.handleInterceptor({163          requestId: 'otherRequestId',164          request: {165            url: 'http://www.otherrequest.com',166            method: 'GET',167          },168          resourceType: 'Document',169          isNavigationRequest: true,170        });171        fetchHandler.handleInterceptor({172          requestId: 'requestId',173          request: {174            url: 'http://www.google.com',175            method: 'GET',176          },177          resourceType: 'Document',178          isNavigationRequest: true,179        });180        var result = count === i ? undefined : 'http://www.gauge.org';181        expect(actualOption.url).to.equal(result);182      }183    });184  });185  it('reset intercept for the requestUrl if interceptor is present for the url', async () => {186    fetchHandler.addInterceptor({187      requestUrl: 'www.google.com',188      action: 'www.gauge.org',189    });190    var result = fetchHandler.resetInterceptor('www.google.com');191    fetchHandler.handleInterceptor({192      requestId: 'requestId',193      request: {194        url: 'http://www.google.com',195        method: 'GET',196      },197      resourceType: 'Document',198      isNavigationRequest: true,199    });200    expect(actualOption.url).to.equal(undefined);201    expect(result).to.equal(true);202  });203  it('reset intercept returns false if intercept does not exist for the requestUrl', async () => {204    var result = fetchHandler.resetInterceptor('www.google.com');205    expect(result).to.equal(false);206  });207  it('reset interceptors should set interceptors empty array and userEnabledIntercept false', async () => {208    fetchHandler.__set__('interceptors', ['intercept1', 'intercept2']);209    fetchHandler.__set__('userEnabledIntercept', true);210    fetchHandler.resetInterceptors();211    expect(fetchHandler.__get__('interceptors')).to.be.empty;212    expect(fetchHandler.__get__('userEnabledIntercept')).to.be.false;213  });214  it('add interceptor should put a entry in interceptors', async () => {215    const intercept = { request: 'action' };216    fetchHandler.addInterceptor(intercept);217    expect(fetchHandler.__get__('interceptors')[0]).to.deep.equal(intercept);218  });219  it('add interceptor should call enableFetchIntercept for the first time and set userEnabledIntercept to true', async () => {220    let called = false;221    fetchHandler.__set__('enableFetchIntercept', () => {222      called = true;223    });224    fetchHandler.addInterceptor('intercept');225    expect(fetchHandler.__get__('userEnabledIntercept')).to.be.true;226    expect(called).to.be.true;227  });228  it('add interceptor should not call enableFetchIntercept if userEnabledIntercept is set to true', async () => {229    let called = false;230    fetchHandler.__set__('enableFetchIntercept', () => {231      called = true;232    });233    fetchHandler.__set__('userEnabledIntercept', true);234    fetchHandler.addInterceptor('intercept');235    expect(fetchHandler.__get__('userEnabledIntercept')).to.be.true;236    expect(called).to.be.false;237  });238  it('createdSessionListener should call enableFetchIntercept if userEnabledIntercept is set to true', async () => {239    let called = false;240    fetchHandler.__set__('enableFetchIntercept', () => {241      called = true;242    });243    fetchHandler.__set__('userEnabledIntercept', true);244    fetchHandler.__get__('createdSessionListener')({ Fetch: 'domain' });245    expect(fetchHandler.__get__('userEnabledIntercept')).to.be.true;246    expect(called).to.be.true;247  });248  it('createdSessionListener should not call enableFetchIntercept if userEnabledIntercept is set to false', async () => {249    let called = false;250    fetchHandler.__set__('enableFetchIntercept', () => {251      called = true;252    });253    fetchHandler.__set__('userEnabledIntercept', false);254    fetchHandler.__get__('createdSessionListener')({ Fetch: 'domain' });255    expect(fetchHandler.__get__('userEnabledIntercept')).to.be.false;256    expect(called).to.be.false;257  });...browser_resources_network_events.js
Source:browser_resources_network_events.js  
1/* Any copyright is dedicated to the Public Domain.2   http://creativecommons.org/publicdomain/zero/1.0/ */3"use strict";4// Test the ResourceCommand API around NETWORK_EVENT5const ResourceCommand = require("devtools/shared/commands/resource/resource-command");6// We are borrowing tests from the netmonitor frontend7const NETMONITOR_TEST_FOLDER =8  "https://example.com/browser/devtools/client/netmonitor/test/";9const CSP_URL = `${NETMONITOR_TEST_FOLDER}html_csp-test-page.html`;10const JS_CSP_URL = `${NETMONITOR_TEST_FOLDER}js_websocket-worker-test.js`;11const CSS_CSP_URL = `${NETMONITOR_TEST_FOLDER}internal-loaded.css`;12const CSP_BLOCKED_REASON_CODE = 4000;13add_task(async function testContentProcessRequests() {14  info(`Tests for NETWORK_EVENT resources fired from the content process`);15  const expectedAvailable = [16    {17      url: CSP_URL,18      method: "GET",19      isNavigationRequest: true,20    },21    {22      url: JS_CSP_URL,23      method: "GET",24      blockedReason: CSP_BLOCKED_REASON_CODE,25      isNavigationRequest: false,26    },27    {28      url: CSS_CSP_URL,29      method: "GET",30      blockedReason: CSP_BLOCKED_REASON_CODE,31      isNavigationRequest: false,32    },33  ];34  const expectedUpdated = [35    {36      url: CSP_URL,37      method: "GET",38      isNavigationRequest: true,39    },40    {41      url: JS_CSP_URL,42      method: "GET",43      blockedReason: CSP_BLOCKED_REASON_CODE,44      isNavigationRequest: false,45    },46    {47      url: CSS_CSP_URL,48      method: "GET",49      blockedReason: CSP_BLOCKED_REASON_CODE,50      isNavigationRequest: false,51    },52  ];53  await assertNetworkResourcesOnPage(54    CSP_URL,55    expectedAvailable,56    expectedUpdated57  );58});59add_task(async function testCanceledRequest() {60  info(`Tests for NETWORK_EVENT resources with a canceled request`);61  // Do a XHR request that we cancel against a slow loading page62  const requestUrl =63    "https://example.org/document-builder.sjs?delay=1000&html=foo";64  const html =65    "<!DOCTYPE html><script>(" +66    function(xhrUrl) {67      const xhr = new XMLHttpRequest();68      xhr.open("GET", xhrUrl);69      xhr.send(null);70    } +71    ")(" +72    JSON.stringify(requestUrl) +73    ")</script>";74  const pageUrl =75    "https://example.org/document-builder.sjs?html=" + encodeURIComponent(html);76  const expectedAvailable = [77    {78      url: pageUrl,79      method: "GET",80      isNavigationRequest: true,81    },82    {83      url: requestUrl,84      method: "GET",85      isNavigationRequest: false,86      blockedReason: "NS_BINDING_ABORTED",87    },88  ];89  const expectedUpdated = [90    {91      url: pageUrl,92      method: "GET",93      isNavigationRequest: true,94    },95    {96      url: requestUrl,97      method: "GET",98      isNavigationRequest: false,99      blockedReason: "NS_BINDING_ABORTED",100    },101  ];102  // Register a one-off listener to cancel the XHR request103  // Using XMLHttpRequest's abort() method from the content process104  // isn't reliable and would introduce many race condition in the test.105  // Canceling the request via nsIRequest.cancel privileged method,106  // from the parent process is much more reliable.107  const observer = {108    QueryInterface: ChromeUtils.generateQI(["nsIObserver"]),109    observe(subject, topic, data) {110      subject = subject.QueryInterface(Ci.nsIHttpChannel);111      if (subject.URI.spec == requestUrl) {112        subject.cancel(Cr.NS_BINDING_ABORTED);113        Services.obs.removeObserver(observer, "http-on-modify-request");114      }115    },116  };117  Services.obs.addObserver(observer, "http-on-modify-request");118  await assertNetworkResourcesOnPage(119    pageUrl,120    expectedAvailable,121    expectedUpdated122  );123});124async function assertNetworkResourcesOnPage(125  url,126  expectedAvailable,127  expectedUpdated128) {129  // First open a blank document to avoid spawning any request130  const tab = await addTab("about:blank");131  const commands = await CommandsFactory.forTab(tab);132  await commands.targetCommand.startListening();133  const { resourceCommand } = commands;134  const onAvailable = resources => {135    for (const resource of resources) {136      // Immediately assert the resource, as the same resource object137      // will be notified to onUpdated and so if we assert it later138      // we will not highlight attributes that aren't set yet from onAvailable.139      const idx = expectedAvailable.findIndex(e => e.url === resource.url);140      ok(141        idx != -1,142        "Found a matching available notification for: " + resource.url143      );144      // Remove the match from the list in case there is many requests with the same url145      const [expected] = expectedAvailable.splice(idx, 1);146      assertResources(resource, expected);147    }148  };149  const onUpdated = updates => {150    for (const { resource } of updates) {151      const idx = expectedUpdated.findIndex(e => e.url === resource.url);152      ok(153        idx != -1,154        "Found a matching updated notification for: " + resource.url155      );156      // Remove the match from the list in case there is many requests with the same url157      const [expected] = expectedUpdated.splice(idx, 1);158      assertResources(resource, expected);159    }160  };161  // Start observing for network events before loading the test page162  await resourceCommand.watchResources([resourceCommand.TYPES.NETWORK_EVENT], {163    onAvailable,164    onUpdated,165  });166  // Load the test page that fires network requests167  const onLoaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);168  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, url);169  await onLoaded;170  // Make sure we processed all the expected request updates171  await waitFor(172    () => expectedAvailable.length == 0,173    "Wait for all expected available notifications"174  );175  await waitFor(176    () => expectedUpdated.length == 0,177    "Wait for all expected updated notifications"178  );179  resourceCommand.unwatchResources([resourceCommand.TYPES.NETWORK_EVENT], {180    onAvailable,181    onUpdated,182  });183  await commands.destroy();184  BrowserTestUtils.removeTab(tab);185}186function assertResources(actual, expected) {187  is(188    actual.resourceType,189    ResourceCommand.TYPES.NETWORK_EVENT,190    "The resource type is correct"191  );192  for (const name in expected) {193    is(actual[name], expected[name], `The '${name}' attribute is correct`);194  }...finnishTransportService.js
Source:finnishTransportService.js  
1import {DOMParser} from 'xmldom';2let bottomLeftLongitude = 24.755115;3let bottomLeftLatitude = 60.107362;4let topRightLongitude = 25.068056;5let topRightLatitude = 60.204050;6const LATITUDE_DELTA_FOR_LINES_AND_BEACONS = 0.067const LONGITUDE_DELTA_FOR_LINES_AND_BEACONS = 0.168let isNavigationRequest= true;9let isBeaconRequest= true;10const fetchLightBeacons = async () => {11  return fetch('https://julkinen.vayla.fi/inspirepalvelu/avoin/wms?request=getmap&LAYERS=loistot&WIDTH=1400&HEIGHT=1400&FORMAT=application/vnd.google-earth.kml+xml&bbox='+bottomLeftLongitude+','+bottomLeftLatitude+','+topRightLongitude+','+topRightLatitude+'&srs=CRS:84').12    then(response => response.text()).13    then(string => {14      const parser = new DOMParser();15      const xmlDoc = parser.parseFromString(string, 'text/xml');16      const numberOfPlaceMarks = xmlDoc.getElementsByTagName('Placemark').length;17      const lightCoordinates = [];18      for (let index = 0; index < numberOfPlaceMarks; index++) {19        let coordinateAsString = xmlDoc.getElementsByTagName(20          'Placemark')[index].getElementsByTagName(21          'Point')[0].getElementsByTagName(22          'coordinates')[0].childNodes[0].nodeValue.split(',');23        let coordinates = {24          longitude:  +coordinateAsString[0],25          latitude: +coordinateAsString[1],26        };27        lightCoordinates.push(coordinates);28      }29      isBeaconRequest = false;30      return lightCoordinates;31    })32    .catch(error => {33      console.log(error.message);34    });35};36const fetchNavigationLines = async () => {37  return fetch( 'https://julkinen.vayla.fi/inspirepalvelu/avoin/wms?request=getmap&LAYERS=navigointilinjat&WIDTH=1400&HEIGHT=1400&FORMAT=application/vnd.google-earth.kml+xml&bbox='+bottomLeftLongitude+','+bottomLeftLatitude+','+topRightLongitude+','+topRightLatitude+'&srs=CRS:84' )38  .then(response => response.text())39  .then(string => {40      const parser = new DOMParser();41      const xmlDoc = parser.parseFromString(string, 'text/xml');42      const numberOfMultiGeometry = xmlDoc.getElementsByTagName('MultiGeometry').length;43      const navigationLine = [];44      for (let index = 0; index < numberOfMultiGeometry; index++) {45        let coordinateAsString = xmlDoc.getElementsByTagName(46          'MultiGeometry')[index].getElementsByTagName(47          'LineString')[0].getElementsByTagName(48          'coordinates')[0].childNodes[0].nodeValue.split(/[ ,]+/);49        let coordinates = [];50        let innerIndex = 0;51        while (innerIndex < coordinateAsString.length ) {52          coordinates.push({53            longitude:  +coordinateAsString[innerIndex],54            latitude: +coordinateAsString[innerIndex+1],55          });56          innerIndex += 257        }58        navigationLine.push({59          coordinates: coordinates60        });61      }62      isNavigationRequest = false;63      return navigationLine;64    }).65    catch(error => {66      console.log(error.message); //undefined is not a constructor (evaluating 'new window.DOMParser()')67    });68};69const updateLightBeacons = async (userLongitude, userLatitude) => {70  setURI(userLongitude, userLatitude);71  if (isBeaconRequest) {72    return fetchLightBeacons();73  } else {74    return [];75  }76}77const updateNavigationLines = async (userLongitude, userLatitude) => {78  setURI(userLongitude, userLatitude);79  if (isNavigationRequest) {80    return fetchNavigationLines();81  } else {82    return [];83  }84}85const setURI = (userLongitude, userLatitude) => {86  if (87    (userLatitude  >= topRightLatitude - (LATITUDE_DELTA_FOR_LINES_AND_BEACONS / 2 )) ||88    (userLongitude >= topRightLongitude - (LONGITUDE_DELTA_FOR_LINES_AND_BEACONS / 2 )) ||89    (userLatitude  <= bottomLeftLatitude - (LATITUDE_DELTA_FOR_LINES_AND_BEACONS / 2 )) ||90    (userLongitude  <= bottomLeftLongitude - (LONGITUDE_DELTA_FOR_LINES_AND_BEACONS / 2 ))91  ) {92    //const lowerLeftPoint = ''+(userLongitude - LONGITUDE_DELTA_FOR_LINES_AND_BEACONS)+','+(userLatitude - LATITUDE_DELTA_FOR_LINES_AND_BEACONS)+'';93    //const upperRightPoint = ''+(userLongitude + LONGITUDE_DELTA_FOR_LINES_AND_BEACONS)+','+(userLatitude + LATITUDE_DELTA_FOR_LINES_AND_BEACONS)+'';94    //const bBoxCoordinates = ''+lowerLeftPoint+','+upperRightPoint+''95    bottomLeftLongitude = userLongitude - LONGITUDE_DELTA_FOR_LINES_AND_BEACONS;96    bottomLeftLatitude = userLatitude - LATITUDE_DELTA_FOR_LINES_AND_BEACONS;97    topRightLongitude = userLongitude + LONGITUDE_DELTA_FOR_LINES_AND_BEACONS;98    topRightLatitude = userLatitude + LATITUDE_DELTA_FOR_LINES_AND_BEACONS;99    isNavigationRequest = true;100    isBeaconRequest = true;101  }102}103export const finnshTransportService = {104  updateLightBeacons,105  updateNavigationLines...service-worker.js
Source:service-worker.js  
...13   "/static/js/js.utils.js", 14   "/static/js/FileSaver/FileSaver.min.js",15   "/static/js/FileSaver/FileSaver.min.js.map",16];17function isNavigationRequest(event) {18  return event.request.mode === 'navigate';19}20function isCachedAssetRequest(event) {21  let isSameOriginRequest = event.request.url.startsWith(self.location.origin);22  let isFontRequest = FONT_ORIGINS.some((origin) => event.request.url.startsWith(origin));23  return !isNavigationRequest(event) && (isSameOriginRequest || isFontRequest);24}25function isHtmlRequest(event) {26  let isGetRequest = event.request.method === 'GET';27  let isHTMLRequest = event.request.headers.get('accept').startsWith(HTML_CONTENT_TYPE);28  return isNavigationRequest(event) || (isGetRequest && isHTMLRequest);29}30self.addEventListener('install', function(event) {31  let now = Date.now();32  event.waitUntil(33    caches.open(CACHE_NAME).then(function(cache) {34      let cachePromises = PRE_CACHED_ASSETS.map(function(asset) {35        var url = new URL(asset, location.href);36        var request = new Request(url, { mode: 'no-cors' });37        return fetch(request).then(function(response) {38          if (response.status >= 400) {39            throw new Error('prefetch failed!');40          }41          return cache.put(asset, response);42        });...blockAds.js
Source:blockAds.js  
1import {URL} from 'url';2import BLOCKING from './blocking.js';3import {BLOCKED_BODY, BLOCKED_CODE, BLOCKED_HEADERS} from './blockedResponse.js';4export async function blockAds(/*zombie, sessionId*/) {5  // do nothing6}7export async function onInterceptRequest({sessionId, message}, zombie) {8  if ( message.method == "Fetch.requestPaused" ) {9    const {request:{url}, requestId, resourceType, responseErrorReason} = message.params;10    const isNavigationRequest = resourceType == "Document";11    const host = new URL(url).host;12    let blocked = false;13    for( const regex of BLOCKING ) {14      if ( regex.test(host) ) {15        try {16          if ( isNavigationRequest ) {17            // we want to provide a response body to indicate that we blocked it via an ad blocker18            await zombie.send("Fetch.fulfillRequest", {19                requestId,20                responseHeaders: BLOCKED_HEADERS,21                responseCode: BLOCKED_CODE,22                body: BLOCKED_BODY23              },24              sessionId25            );26          } else {27            await zombie.send("Fetch.failRequest", {28                requestId,29                errorReason: "BlockedByClient"30              },31              sessionId32            );33          }34          blocked = true;35          break;36        } catch(e) {37          console.warn("Issue with intercepting request", e);38        }39      }40    }41    if ( blocked ) return;42    // responseErrorReason never appears to be set, regardless of interception stage 43    //console.log({responseErrorReason,requestId, url, resourceType});44    if ( responseErrorReason ) {45      if ( isNavigationRequest ) {46        await zombie.send("Fetch.fulfillRequest", {47            requestId,48            responseHeaders: BLOCKED_HEADERS,49            responseCode: BLOCKED_CODE,50            body: Buffer.from(responseErrorReason).toString("base64"),51          },52          sessionId53        );54      } else {55        await zombie.send("Fetch.failRequest", {56            requestId,57            errorReason: responseErrorReason58          },59          sessionId60        );61      }62    } else {63      try {64        await zombie.send("Fetch.continueRequest", {65            requestId,66          },67          sessionId68        );69      } catch(e) {70        console.warn("Issue with continuing request", e);71      }72    }73  }...LinkManager.js
Source:LinkManager.js  
...14        var match = message.match(/^bramble-navigate\:(.+)/);15        return match && match[1];16    }17    // Whether or not this message is a navigation request from the LinkManagerRemote script.18    function isNavigationRequest(message) {19        return !!getNavigationPath(message);20    }21    // Attempt to navigate the preview and editor to a new path22    function navigate(message) {23        var path = getNavigationPath(message);24        if(!path) {25            return;26        }27        var currentDoc = LiveDevMultiBrowser._getCurrentLiveDoc();28        if(!currentDoc) {29            return;30        }31        var currentDir = Path.dirname(currentDoc.doc.file.fullPath);32        path = Path.resolve(currentDir, path);...Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3  const browser = await puppeteer.launch();4  const page = await browser.newPage();5  await page.setRequestInterception(true);6  page.on('request', request => {7    if (request.isNavigationRequest()) {8      console.log('navigation request');9    }10    request.continue();11  });12  await browser.close();13})();14request.isNavigationRequest()15const puppeteer = require('puppeteer');16(async () => {17  const browser = await puppeteer.launch();18  const page = await browser.newPage();19  await page.setRequestInterception(true);20  page.on('request', request => {21    if (request.isNavigationRequest()) {22      console.log('navigation request');23    }24    request.continue();25  });26  await browser.close();27})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3  const browser = await puppeteer.launch();4  const page = await browser.newPage();5  await page.setRequestInterception(true);6  page.on('request', request => {7    if (request.isNavigationRequest()) {8      console.log('Navigation request to: ' + request.url());9    } else {10      console.log('Resource request to: ' + request.url());11    }12    request.continue();13  });14  await browser.close();15})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3    const browser = await puppeteer.launch();4    const page = await browser.newPage();5    await page.setRequestInterception(true);6    page.on('request', request => {7        if (request.isNavigationRequest()) {8            console.log('Navigation request to: ' + request.url());9        } else {10            console.log('Resource request to: ' + request.url());11        }12        request.continue();13    });14    await browser.close();15})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3  const browser = await puppeteer.launch({headless: false});4  const page = await browser.newPage();5  await page.setRequestInterception(true);6  page.on('request', request => {7    if (request.isNavigationRequest()) {8      console.log("Navigation Request");9    }10    else {11      console.log("Not a Navigation Request");12    }13    request.continue();14  });Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3  const browser = await puppeteer.launch();4  const page = await browser.newPage();5  page.on('request', request => {6    console.log(request.isNavigationRequest());7  });8  await browser.close();9})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3    const browser = await puppeteer.launch({ headless: false });4    const page = await browser.newPage();5    await page.setRequestInterception(true);6    page.on('request', (request) => {7        if (request.isNavigationRequest()) {8            console.log('This is a navigation request: ' + request.url());9            request.continue();10        } else {11            console.log('This is not a navigation request: ' + request.url());12            request.abort();13        }14    });15    await page.screenshot({ path: 'google.png' });16    await browser.close();17})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3  const browser = await puppeteer.launch({4  });5  const page = await browser.newPage();6  await page.setRequestInterception(true);7  page.on('request', async (request) => {8    if (request.isNavigationRequest()) {9      console.log('Navigation Request: ' + request.url());10    } else {11      console.log('Resource Request: ' + request.url());12    }13    request.continue();14  });15})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3  const browser = await puppeteer.launch();4  const page = await browser.newPage();5  await page.setRequestInterception(true);6  page.on('request', request => {7    if (request.isNavigationRequest()) {8      console.log('Navigation request for: ' + request.url());9    }10    request.continue();11  });12  await browser.close();13})();Using AI Code Generation
1const puppeteer = require('puppeteer');2(async () => {3    const browser = await puppeteer.launch({4    });5    const page = await browser.newPage();6    page.on('request', request => {7        if (request.isNavigationRequest()) {8            console.log('This is a navigation request');9        }10        else {11            console.log('This is not a navigation request');12        }13    });14})();Using AI Code Generation
1async function isNavigationRequest(page) {2  const requests = [];3  page.on('request', request => {4    requests.push(request);5  });6  const navigationRequest = requests.find(request => request.isNavigationRequest());7  console.log(navigationRequest.url());8}9async function isNavigationRequest(page) {10  const requests = [];11  page.on('request', request => {12    requests.push(request);13  });14  const navigationRequest = requests.find(request => request.isNavigationRequest());15  console.log(navigationRequest.url());16}17async function isNavigationRequest(page) {18  const requests = [];19  page.on('request', request => {20    requests.push(request);21  });22  const navigationRequest = requests.find(request => request.isNavigationRequest());23  console.log(navigationRequest.url());24}25async function isNavigationRequest(page) {26  const requests = [];27  page.on('request', request => {28    requests.push(request);29  });30  const navigationRequest = requests.find(request => request.isNavigationRequest());31  console.log(navigationRequest.url());32}33async function isNavigationRequest(page) {34  const requests = [];35  page.on('request', request => {36    requests.push(request);37  });38  const navigationRequest = requests.find(request => request.isNavigationRequest());39  console.log(navigationRequest.url());40}41async function isNavigationRequest(page) {42  const requests = [];43  page.on('request', request => {44    requests.push(request);45  });46  const navigationRequest = requests.find(request => request.isNavigationRequest());47  console.log(navigationRequest.url());48}49async function isNavigationRequest(page) {50  const requests = [];Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
