'use client'; import IconArrowWaveLeftUp from '@/components/icon/icon-arrow-wave-left-up'; import ComponentsPagesFaqWithTabs from '@/components/pages/components-pages-faq-with-tabs'; import ComponentsPagesKnowledgeBaseVideoTutorial from '@/components/pages/knowledge-base/components-pages-knowledge-base-video-tutorial'; import { Metadata } from 'next'; import Link from 'next/link'; import React from 'react'; import { useState } from 'react'; import axios from 'axios'; import { Treemap, Tooltip as ReTooltip, ResponsiveContainer } from 'recharts'; const PageSpeedTest = () => { const [url, setUrl] = useState(''); const [loading, setLoading] = useState(false); const [reports, setReports] = useState(null); const [error, setError] = useState(''); // --- Helper to parse estimated savings like "1.2 s" or "1200 ms" --- function parseSavings(value: string): number { if (!value) return 0; const val = parseFloat(value); if (value.toLowerCase().includes('ms')) return val; if (value.toLowerCase().includes('s')) return val * 1000; return val; } const handleAudit = async () => { if (!url) return setError('Enter a URL'); setLoading(true); setError(''); setReports(null); try { const { data } = await axios.post('http://localhost:3020/api/lighthouse/audit', { url }); // normalize the results const normalizedResults: any = {}; ['mobile', 'desktop'].forEach((tab) => { const tabData: any = data.results?.[tab] || {}; normalizedResults[tab] = { report: { scores: tabData.scores || {}, metrics: tabData.metrics || {}, opportunities: Array.isArray(tabData.opportunities) ? tabData.opportunities : [], diagnostics: tabData.diagnostics || {}, screenshot: tabData.screenshot || '', thumbnails: tabData.thumbnails || [], passedAudits: tabData.passedAudits || [], treemapData: tabData.treemapData || [], treemapPath: tabData.treemapPath || null }, }; }); setReports(normalizedResults); } catch (err: any) { const msg = err.response?.data?.error || err.response?.data?.message || err.message || 'Error'; setError(`Audit Failed: ${msg}`); } finally { setLoading(false); } }; return (

PageSpeed Insights

Make your web pages fast on all devices

{ e.preventDefault(); handleAudit(); }} className="relative mb-12">
setUrl(e.target.value)} placeholder="Enter a web page URL" className="flex-1 bg-transparent border-none focus:ring-0 py-4 px-6 text-lg text-gray-700 dark:text-gray-200" />
{error &&

{error}

}
Popular topics :
Core Web Vitals SEO Optimization Page Load Speed Mobile Performance Best Practices
{/*

Still need help?

Our specialists are always happy to help. Contact us during standard business hours or email us24/7 and we'll get back to you.

Didn’t find any solutions?

Loaded with awesome features like documentation, knowledge base forum, domain transfer, affiliates etc.
find-solution

Popular Topics

...
Excessive sugar is harmful
profile1

Alma Clark

06 May

...
Creative Photography
profile1

Alma Clark

06 May

...
Plan your next trip
profile1

Alma Clark

06 May

...
My latest Vlog
profile1

Alma Clark

06 May

*/}
); }; export default PageSpeedTest;