blaze-performance-tester 3.1.12 → 3.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -141,6 +141,7 @@ function parseArguments(args) {
141
141
  const targetScript = path.resolve(args[0] || ".");
142
142
  const isAgentic = args.includes("--agentic");
143
143
  const isCorrelate = args.includes("--correlate");
144
+ const isSeoEnabled = args.includes("--seo");
144
145
  const clusterLogs = !args.includes("--no-cluster-logs");
145
146
  let threads = 10;
146
147
  let durationSec = 10;
@@ -186,6 +187,7 @@ function parseArguments(args) {
186
187
  targetScript,
187
188
  isAgentic,
188
189
  isCorrelate,
190
+ isSeoEnabled,
189
191
  clusterLogs,
190
192
  threads,
191
193
  durationSec,
@@ -580,84 +582,86 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
580
582
  const lcpStat = getLcpStatus(cards.lcp);
581
583
  const fidStat = getFidStatus(cards.fid);
582
584
  const clsStat = getClsStatus(cards.cls);
583
- const lcp = cards.lcp;
584
- let seoScore = 100;
585
- let visibilityLossPct = 0;
586
- let trafficDropPct = 0;
587
- let rankDropPositions = 0;
588
- if (lcp > 2500) {
589
- if (lcp <= 4e3) {
590
- const ratio = (lcp - 2500) / 1500;
591
- seoScore = 100 - ratio * 30;
592
- visibilityLossPct = ratio * 14.5;
593
- trafficDropPct = ratio * 18.2;
594
- rankDropPositions = Number((ratio * 1.2).toFixed(1));
595
- } else {
596
- const ratio = Math.min(1, (lcp - 4e3) / 4e3);
597
- seoScore = Math.max(8, 70 - ratio * 62);
598
- visibilityLossPct = 14.5 + ratio * 52;
599
- trafficDropPct = 18.2 + ratio * 58.5;
600
- rankDropPositions = Number((1.2 + ratio * 4.6).toFixed(1));
585
+ let seoPredictorPanelHtml = "";
586
+ if (config.isSeoEnabled) {
587
+ const lcp = cards.lcp;
588
+ let seoScore = 100;
589
+ let visibilityLossPct = 0;
590
+ let trafficDropPct = 0;
591
+ let rankDropPositions = 0;
592
+ if (lcp > 2500) {
593
+ if (lcp <= 4e3) {
594
+ const ratio = (lcp - 2500) / 1500;
595
+ seoScore = 100 - ratio * 30;
596
+ visibilityLossPct = ratio * 14.5;
597
+ trafficDropPct = ratio * 18.2;
598
+ rankDropPositions = Number((ratio * 1.2).toFixed(1));
599
+ } else {
600
+ const ratio = Math.min(1, (lcp - 4e3) / 4e3);
601
+ seoScore = Math.max(8, 70 - ratio * 62);
602
+ visibilityLossPct = 14.5 + ratio * 52;
603
+ trafficDropPct = 18.2 + ratio * 58.5;
604
+ rankDropPositions = Number((1.2 + ratio * 4.6).toFixed(1));
605
+ }
601
606
  }
602
- }
603
- let seoColor = "#10b981";
604
- let seoStatus = "EXCELLENT";
605
- if (seoScore < 90) {
606
- seoColor = "#f59e0b";
607
- seoStatus = "NEEDS IMPROVEMENT";
608
- }
609
- if (seoScore < 60) {
610
- seoColor = "#ef4444";
611
- seoStatus = "CRITICAL RISK / PENALIZED";
612
- }
613
- const seoPredictorPanelHtml = `
614
- <div class="card" style="margin-top: 2rem; background: #131c2e; border: 1px solid #1e293b;">
615
- <h3 style="color: #38bdf8; font-size: 1.2rem; border-bottom: none; margin-bottom: 0.25rem;">
616
- \u{1F50D} Google SEO Rank & Search Visibility Impact Predictor
617
- </h3>
618
- <div style="color: #94a3b8; font-size: 0.9rem; margin-bottom: 1.5rem;">
619
- Predictive algorithmic simulation modeling response degradation metrics directly against Google Core Web Vitals signal rules.
620
- </div>
621
-
622
- <div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; flex-wrap: wrap;">
623
- <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
624
- <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Core Web Vitals SEO Score</div>
625
- <div style="font-size: 1.8rem; font-weight: bold; color: ${seoColor}; margin-top: 0.25rem;">
626
- ${seoScore.toFixed(0)}<span style="font-size: 1rem; color: #94a3b8;">/100</span>
627
- </div>
628
- <div style="font-size: 0.75rem; font-weight: bold; margin-top: 0.4rem; color: ${seoColor};">${seoStatus}</div>
607
+ let seoColor = "#10b981";
608
+ let seoStatus = "EXCELLENT";
609
+ if (seoScore < 90) {
610
+ seoColor = "#f59e0b";
611
+ seoStatus = "NEEDS IMPROVEMENT";
612
+ }
613
+ if (seoScore < 60) {
614
+ seoColor = "#ef4444";
615
+ seoStatus = "CRITICAL RISK / PENALIZED";
616
+ }
617
+ seoPredictorPanelHtml = `
618
+ <div class="card" style="margin-top: 2rem; background: #131c2e; border: 1px solid #1e293b;">
619
+ <h3 style="color: #38bdf8; font-size: 1.2rem; border-bottom: none; margin-bottom: 0.25rem;">
620
+ \u{1F50D} Google SEO Rank & Search Visibility Impact Predictor
621
+ </h3>
622
+ <div style="color: #94a3b8; font-size: 0.9rem; margin-bottom: 1.5rem;">
623
+ Predictive algorithmic simulation modeling response degradation metrics directly against Google Core Web Vitals signal rules.
629
624
  </div>
625
+
626
+ <div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; flex-wrap: wrap;">
627
+ <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
628
+ <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Core Web Vitals SEO Score</div>
629
+ <div style="font-size: 1.8rem; font-weight: bold; color: ${seoColor}; margin-top: 0.25rem;">
630
+ ${seoScore.toFixed(0)}<span style="font-size: 1rem; color: #94a3b8;">/100</span>
631
+ </div>
632
+ <div style="font-size: 0.75rem; font-weight: bold; margin-top: 0.4rem; color: ${seoColor};">${seoStatus}</div>
633
+ </div>
630
634
 
631
- <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
632
- <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Search Visibility Loss</div>
633
- <div style="font-size: 1.8rem; font-weight: bold; color: ${visibilityLossPct > 0 ? "#ef4444" : "#10b981"}; margin-top: 0.25rem;">
634
- -${visibilityLossPct.toFixed(1)}%
635
+ <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
636
+ <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Search Visibility Loss</div>
637
+ <div style="font-size: 1.8rem; font-weight: bold; color: ${visibilityLossPct > 0 ? "#ef4444" : "#10b981"}; margin-top: 0.25rem;">
638
+ -${visibilityLossPct.toFixed(1)}%
639
+ </div>
640
+ <div style="font-size: 0.75rem; color: #64748b; margin-top: 0.4rem;">Projected SERP Impression Drop</div>
635
641
  </div>
636
- <div style="font-size: 0.75rem; color: #64748b; margin-top: 0.4rem;">Projected SERP Impression Drop</div>
637
- </div>
638
642
 
639
- <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
640
- <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Est. Organic Traffic Loss</div>
641
- <div style="font-size: 1.8rem; font-weight: bold; color: ${trafficDropPct > 0 ? "#ef4444" : "#10b981"}; margin-top: 0.25rem;">
642
- -${trafficDropPct.toFixed(1)}%
643
+ <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
644
+ <div style="font-size: 1.8rem; font-weight: bold; color: ${trafficDropPct > 0 ? "#ef4444" : "#10b981"}; margin-top: 0.25rem;">
645
+ -${trafficDropPct.toFixed(1)}%
646
+ </div>
647
+ <div style="font-size: 0.75rem; color: #64748b; margin-top: 0.4rem;">Expected funnel volume drop</div>
643
648
  </div>
644
- <div style="font-size: 0.75rem; color: #64748b; margin-top: 0.4rem;">Expected funnel volume drop</div>
645
- </div>
646
649
 
647
- <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
648
- <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Avg SERP Position Shift</div>
649
- <div style="font-size: 1.8rem; font-weight: bold; color: ${rankDropPositions > 0 ? "#f59e0b" : "#10b981"}; margin-top: 0.25rem;">
650
- ${rankDropPositions > 0 ? `+${rankDropPositions}` : "0.0"}
650
+ <div style="background: #090d16; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b; text-align: center;">
651
+ <div style="font-size: 0.75rem; color: #64748b; text-transform: uppercase; font-weight: bold;">Avg SERP Position Shift</div>
652
+ <div style="font-size: 1.8rem; font-weight: bold; color: ${rankDropPositions > 0 ? "#f59e0b" : "#10b981"}; margin-top: 0.25rem;">
653
+ ${rankDropPositions > 0 ? `+${rankDropPositions}` : "0.0"}
654
+ </div>
655
+ <div style="font-size: 0.75rem; color: #64748b; margin-top: 0.4rem;">Rank places dropped down standard index</div>
651
656
  </div>
652
- <div style="font-size: 0.75rem; color: #64748b; margin-top: 0.4rem;">Rank places dropped down standard index</div>
653
657
  </div>
654
- </div>
655
-
656
- <div style="margin-top: 1rem; background: #090d16; padding: 1rem; border-radius: 6px; border: 1px solid #1e293b; font-size: 0.85rem; line-height: 1.5; color: #cbd5e1;">
657
- <strong>\u{1F52E} SEO Engine Intelligence Breakdown:</strong>
658
- ${lcp <= 2500 ? "Your simulated Largest Contentful Paint equivalent falls safely within Google's 'Good' range (&le; 2500ms). The parsing layer calculates zero performance-based rank penalties under current system load profiles." : lcp <= 4e3 ? `Warning: Current concurrency load has pushed LCP to ${lcp.toFixed(0)}ms, landing in Google's 'Needs Improvement' window. This response drag risks triggering index rank adjustments, potentially demoting listings down by ~${rankDropPositions} positions and sacrificing around ${trafficDropPct.toFixed(0)}% of organic top-of-funnel users.` : `Critical Signal Breach: Load performance has forced LCP to ${lcp.toFixed(0)}ms, severely violating Google's 'Poor' performance ceiling (&gt; 4000ms). At this level, ranking algorithms actively de-weight domains. Expect structural search visibility erosion up to ${visibilityLossPct.toFixed(0)}% and immediate organic traffic traffic redirection.`}
659
- </div>
660
- </div>`;
658
+
659
+ <div style="margin-top: 1rem; background: #090d16; padding: 1rem; border-radius: 6px; border: 1px solid #1e293b; font-size: 0.85rem; line-height: 1.5; color: #cbd5e1;">
660
+ <strong>\u{1F52E} SEO Engine Intelligence Breakdown:</strong>
661
+ ${lcp <= 2500 ? "Your simulated Largest Contentful Paint equivalent falls safely within Google's 'Good' range (&le; 2500ms). The parsing layer calculates zero performance-based rank penalties under current system load profiles." : lcp <= 4e3 ? `Warning: Current concurrency load has pushed LCP to ${lcp.toFixed(0)}ms, landing in Google's 'Needs Improvement' window. This response drag risks triggering index rank adjustments, potentially demoting listings down by ~${rankDropPositions} positions and sacrificing around ${trafficDropPct.toFixed(0)}% of organic top-of-funnel users.` : `Critical Signal Breach: Load performance has forced LCP to ${lcp.toFixed(0)}ms, severely violating Google's 'Poor' performance ceiling (&gt; 4000ms). At this level, ranking algorithms actively de-weight domains. Expect structural search visibility erosion up to ${visibilityLossPct.toFixed(0)}% and immediate organic traffic redirection.`}
662
+ </div>
663
+ </div>`;
664
+ }
661
665
  const connectionDiagnosticsPanelHtml = `
662
666
  <div class="card" style="margin-top: 2rem; background: #131c2e; border: 1px solid #1e293b;">
663
667
  <h3 style="color: #38bdf8; font-size: 1.2rem; border-bottom: none; margin-bottom: 0.25rem;">
@@ -1198,6 +1202,8 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
1198
1202
  }
1199
1203
  }
1200
1204
  function printUsage() {
1201
- console.log(`Blaze Core Performance Test CLI Engine\\nOptions:\\n --threads <count> | --duration <seconds> | --agentic | --cluster-logs | --correlate | --apdex-t <ms>`);
1205
+ console.log(`Blaze Core Performance Test CLI Engine
1206
+ Options:
1207
+ --threads <count> | --duration <seconds> | --agentic | --cluster-logs | --correlate | --apdex-t <ms> | --seo`);
1202
1208
  }
1203
1209
  main().catch(console.error);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blaze-performance-tester",
3
- "version": "3.1.12",
3
+ "version": "3.1.13",
4
4
  "description": "A high-performance, multi-threaded load testing engine built with Rust and QuickJS.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",