Skip to main content

Quick Start - Network Testing

Problem: showNetworkSummary is not defined Solution: Load the script first, then run the command.

βœ… Step-by-Step Fix

Step 1: Load the Script

  1. In Console tab, type: allow pasting and press Enter (to enable pasting)
  2. Copy the entire contents of scripts/capture_network_activity.js
  3. Paste into console
  4. Press Enter
Expected Output:
πŸ” Network Activity Capture Script Loaded
βœ… Script ready!
πŸ“ Available Commands:
   showNetworkSummary()  - Show summary of captured requests
   ...

Step 2: Now Run the Command

After the script loads, you can run:
showNetworkSummary()

πŸ”„ Alternative: Copy Script Directly

If you can’t access the file, here’s the script to paste:
(function() {
  'use strict';
  
  console.log('πŸ” Network Activity Capture Script Loaded');
  
  const capturedRequests = [];
  const capturedResponses = [];
  const originalFetch = window.fetch;
  
  window.fetch = function(...args) {
    const url = args[0];
    const options = args[1] || {};
    const method = options.method || 'GET';
    const timestamp = new Date().toISOString();
    
    const requestInfo = {
      timestamp,
      url: typeof url === 'string' ? url : url.toString(),
      method,
      headers: options.headers || {},
      body: options.body || null
    };
    
    capturedRequests.push(requestInfo);
    
    if (url.includes('/save') || url.includes('/readiness') || url.includes('/preflight')) {
      console.log(`πŸ“‘ [${timestamp}] ${method} ${url}`);
    }
    
    return originalFetch.apply(this, args).then(response => {
      const responseInfo = {
        timestamp: new Date().toISOString(),
        url: requestInfo.url,
        method: requestInfo.method,
        status: response.status,
        statusText: response.statusText,
        ok: response.ok
      };
      
      capturedResponses.push(responseInfo);
      
      if (url.includes('/save') || url.includes('/readiness') || url.includes('/preflight')) {
        console.log(`βœ… [${responseInfo.timestamp}] ${method} ${url} β†’ ${response.status} ${response.statusText}`);
        
        if (url.includes('/readiness') && response.ok) {
          response.clone().json().then(data => {
            const businessIds = Object.keys(data.readiness || {});
            const readyCount = Object.values(data.readiness || {}).filter(b => b && b.is_ready).length;
            console.log(`   πŸ“Š Readiness: ${readyCount}/${businessIds.length} ready`);
            responseInfo.readinessData = {
              total: businessIds.length,
              ready: readyCount,
              notReady: businessIds.length - readyCount,
              businesses: data.readiness || {}
            };
          }).catch(() => {});
        }
      }
      
      return response;
    });
  };
  
  window.showNetworkSummary = function() {
    console.log('\nπŸ“Š Network Activity Summary');
    console.log('============================');
    
    const saveRequests = capturedRequests.filter(r => r.url.includes('/save'));
    const readinessRequests = capturedRequests.filter(r => r.url.includes('/readiness'));
    
    console.log(`\nπŸ’Ύ Save Requests: ${saveRequests.length}`);
    saveRequests.forEach((req, i) => {
      console.log(`   ${i + 1}. ${req.method} ${req.url}`);
      const response = capturedResponses.find(r => r.url === req.url && r.timestamp > req.timestamp);
      if (response) {
        console.log(`      Response: ${response.status} ${response.statusText}`);
      }
    });
    
    console.log(`\nπŸ”„ Readiness Requests: ${readinessRequests.length}`);
    readinessRequests.forEach((req, i) => {
      console.log(`   ${i + 1}. ${req.method} ${req.url}`);
      const response = capturedResponses.find(r => r.url === req.url && r.timestamp > req.timestamp);
      if (response) {
        console.log(`      Response: ${response.status} ${response.statusText}`);
        if (response.readinessData) {
          console.log(`      Readiness: ${response.readinessData.ready}/${response.readinessData.total} ready`);
        }
      }
    });
    
    if (readinessRequests.length > 1) {
      console.log(`\nβœ… Retry Logic Detected: ${readinessRequests.length} readiness requests`);
      const timeDiffs = [];
      for (let i = 1; i < readinessRequests.length; i++) {
        const diff = new Date(readinessRequests[i].timestamp) - new Date(readinessRequests[i-1].timestamp);
        timeDiffs.push(diff);
      }
      const avgDelay = timeDiffs.reduce((a, b) => a + b, 0) / timeDiffs.length;
      console.log(`   Average delay: ${Math.round(avgDelay)}ms`);
    }
    
    return {
      saveRequests: saveRequests.length,
      readinessRequests: readinessRequests.length,
      allRequests: capturedRequests,
      allResponses: capturedResponses
    };
  };
  
  console.log('\nβœ… Script ready! Run: showNetworkSummary()');
})();
Paste this entire block into console, then run showNetworkSummary()

πŸ“ Testing Flow

  1. Load script (paste the code above)
  2. Test save flow:
    • Go to Preflight step
    • Click β€œConfigure” on a business
    • Set PEPM rate, click β€œSave”
  3. Check results:
    • Run showNetworkSummary() in console
    • Check console logs for real-time network activity

The script must be loaded first before showNetworkSummary() will work!