Skip to main content

Copy-Paste Script for Console

Instructions:
  1. Open Console tab (F12)
  2. Type allow pasting and press Enter (if prompted)
  3. Copy the ENTIRE script below (from (function() to })();)
  4. Paste into console
  5. Press Enter
  6. You should see: ”✅ Script ready!”
  7. Then test your save flow
  8. Finally run: showNetworkSummary()

Script to Copy:

(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`);
    } else if (readinessRequests.length === 1) {
      console.log(`\nâ„šī¸  Single Readiness Request: Config immediately queryable (no retries needed)`);
    }
    
    return {
      saveRequests: saveRequests.length,
      readinessRequests: readinessRequests.length,
      allRequests: capturedRequests,
      allResponses: capturedResponses
    };
  };
  
  console.log('\n✅ Script ready! Run: showNetworkSummary()');
})();

After Pasting:

  1. You should see: ✅ Script ready!
  2. Test your save flow (Configure → Save)
  3. Run: showNetworkSummary()

Important: Copy the ENTIRE script above (everything between the ``` markers) and paste it into the console.