/* Dashboard demo — scrollable product mock */
const dashStyles = {
frame: {
background: 'var(--paper)',
border: '1px solid var(--line)',
borderRadius: 'var(--radius-lg)',
overflow: 'hidden',
boxShadow: '0 1px 0 rgba(20,20,15,0.02), 0 40px 80px -40px rgba(20,20,15,0.2)',
},
chrome: {
display: 'flex', alignItems: 'center', justifyContent: 'space-between',
padding: '14px 18px', background: 'var(--bg-2)',
borderBottom: '1px solid var(--line)',
},
body: {
display: 'grid',
gridTemplateColumns: '220px 1fr',
minHeight: 640,
},
side: {
borderRight: '1px solid var(--line)',
padding: 20,
background: 'var(--bg)',
},
main: {
padding: 28,
overflow: 'hidden',
},
};
function DashboardDemo() {
return (
05 — Inside the product
The dashboard your QA lead wishes existed.
One pane for every test run, every health sweep, every regression. Filter by service, owner, or release. Designed for speed of triage.
app.qafactory.ai / ramp · runs
○ ○ ○
);
}
function DashSidebar() {
const items = [
{ label: 'Overview', active: false },
{ label: 'Test runs', active: true, count: 1284 },
{ label: 'Health sweeps', active: false, count: 31 },
{ label: 'Findings', active: false, count: 12, badge: 'var(--warn)' },
{ label: 'Coverage', active: false },
{ label: 'Self-heal log', active: false },
{ label: 'Integrations', active: false },
{ label: 'Settings', active: false },
];
return (
WORKSPACE
{items.map(it => (
{it.label}
{it.count != null && (
{it.count}
)}
))}
● AGENT ONLINE
Indexing 18 services. Next sweep in 23h 45m.
);
}
function DashMain() {
return (
{/* page header */}
RUNS · LAST 24H
1,284 runs · 99.4% pass
⌕ filter
service: all ⌄
+ new run
{/* metric row */}
{/* big chart */}
RUNS PER HOUR · 24h
pass
fail
{/* table */}
STATUSTESTSERVICEOWNERSTARTEDDURATION
{[
{ s: 'pass', t: 'checkout · apply promo code', svc: 'checkout', o: 'maya.r', t2: '2m ago', d: '0.42s' },
{ s: 'pass', t: 'auth · sso login flow', svc: 'auth', o: 'agent', t2: '4m ago', d: '0.81s' },
{ s: 'heal', t: 'dashboard · widget reorder', svc: 'dashboard', o: 'agent', t2: '6m ago', d: '1.20s' },
{ s: 'fail', t: 'billing · pro plan upgrade', svc: 'billing', o: 'jordan.k', t2: '11m ago', d: '2.04s' },
{ s: 'pass', t: 'search · filter by status', svc: 'search', o: 'maya.r', t2: '14m ago', d: '0.36s' },
{ s: 'pass', t: 'webhooks · stripe receipt', svc: 'webhooks', o: 'agent', t2: '18m ago', d: '0.92s' },
].map((r, i) =>
|
)}
);
}
function Metric({ label, value, delta, tone }) {
const dColor = delta.startsWith('−') || delta === '0'
? (tone === 'warn' ? 'var(--accent)' : 'var(--ink-3)')
: (tone === 'warn' ? 'var(--warn)' : 'var(--accent)');
return (
);
}
function BigChart() {
const cols = 24;
return (
{Array.from({ length: cols }).map((_, i) => {
const total = 30 + Math.sin(i * 0.5) * 18 + Math.random() * 14;
const fail = i === 11 ? 4 : i === 17 ? 2 : 0;
const pass = total - fail;
return (
{fail > 0 && }
);
})}
);
}
function Row({ s, t, svc, o, t2, d }) {
const dot = s === 'pass' ? 'var(--accent)' : s === 'fail' ? 'var(--danger)' : 'var(--warn)';
const label = s === 'pass' ? 'PASS' : s === 'fail' ? 'FAIL' : 'HEAL';
return (
{label}
{t}
{svc}
{o}
{t2}
{d}
);
}
Object.assign(window, { DashboardDemo });