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 +76 -70
- package/dist/index.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
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
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
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
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
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
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
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
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
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
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
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
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
</div
|
|
660
|
-
|
|
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 (≤ 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 (> 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
|
|
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
|