Meta Muse Wonder – Careers
via Meta · Generated
- AIMAC Debt 31.96
- Cost $0.21
- Total Violations 39
- HTML Size 34 KB
- Em Dashes 23
Screenshot
View Live Page
Accessibility Issues Found
12 Critical 27 Serious
-
color-contrast serious 23 instances
Elements must meet minimum color contrast ratio thresholds
Example HTML
<small>Career • Accelerated</small> -
image-alt critical 11 instances
Images must have alternative text
Example HTML
<img src="https://picsum.photos/600/360?random=21"> -
link-name serious 4 instances
Links must have discernible text
Example HTML
<a href="#"><i class="fab fa-linkedin-in"></i></a> -
select-name critical 1 instance
Select element must have an accessible name
Example HTML
<select id="loc"><option>All Locations</option><option>London</option><option>New York</option><option>Remote</option><option>Berlin</option></select>
Artifacts
View Generated HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Ascendly — Your Career Trajectory, Accelerated | Jobs, Resume & Interview Prep</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{--navy:#0F2043;--indigo:#4F46E5;--violet:#7C3AED;--teal:#0FB5A8;--orange:#FF6B35;--bg:#F6F7FB;--card:#fff;--mut:#64748B;--line:#E6E8F0}
body{font-family:'Inter',system-ui,sans-serif;color:#17233B;background:var(--bg);line-height:1.6}
a{text-decoration:none;color:inherit}
h1,h2,h3{font-family:'Plus Jakarta Sans',sans-serif;line-height:1.05;letter-spacing:-.03em;color:var(--navy)}
.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;font-weight:700;font-size:15px;border:0;cursor:pointer;transition:.2s}
.btn-p{background:var(--indigo);color:#fff;box-shadow:0 10px 25px rgba(79,70,229,.35)}
.btn-p:hover{background:#3730A3;transform:translateY(-2px)}
.btn-w{background:#fff;color:var(--navy)}
.btn-o{background:#EEF2FF;color:var(--indigo)}
.btn-teal{background:var(--teal);color:#fff}
.container{max-width:1220px;margin:0 auto;padding:0 24px}
.topbar{background:var(--navy);color:#CBD5E1;font-size:13px;padding:9px 0}
.topbar .container{display:flex;justify-content:space-between}
.topbar b{color:#fff}
header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;padding:16px 0;gap:20px}
.logo{display:flex;align-items:center;gap:12px}
.logo img{border-radius:12px}
.logo strong{font-family:'Plus Jakarta Sans';font-size:26px;color:var(--navy);letter-spacing:-.04em}
.logo strong span{color:var(--indigo)}
.logo small{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);font-weight:700;line-height:1}
.links{display:flex;gap:26px;font-weight:600;font-size:15px;color:#334155}
.links a:hover{color:var(--indigo)}
.nav-actions{display:flex;gap:10px;align-items:center}
.signin{font-weight:700;color:var(--navy)}
.hero{background:radial-gradient(800px 400px at 85% 10%,rgba(124,58,237,.35),transparent),linear-gradient(135deg,#0F2043 0%,#1E2A6B 55%,#4F46E5 100%);color:#fff;padding:64px 0 72px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.eyebrow{display:inline-flex;gap:8px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);padding:7px 12px;border-radius:999px;font-size:13px;font-weight:700}
.hero h1{color:#fff;font-size:58px;margin:18px 0}
.hero h1 i{color:#5EEAD4;font-style:normal}
.hero p{color:#DDE3FF;font-size:18px;max-width:620px}
.search{background:#fff;border-radius:18px;padding:10px;display:flex;gap:8px;margin:26px 0 16px;box-shadow:0 20px 40px rgba(0,0,0,.25)}
.search input,.search select{flex:1;border:0;outline:0;padding:12px;font-size:15px;min-width:0}
.search input{border-right:1px solid #eee}
.trending{font-size:13px;color:#C7D2FE}
.trending b{color:#fff;background:rgba(255,255,255,.15);padding:5px 9px;border-radius:999px;margin-left:6px;cursor:pointer}
.stats{display:flex;gap:28px;margin-top:28px}
.stats b{font-size:26px;display:block;line-height:1}
.stats span{font-size:13px;color:#CBD5E1}
.hero-card{background:#fff;color:#17233B;border-radius:22px;padding:18px;box-shadow:0 25px 50px rgba(0,0,0,.3)}
.hero-card img.main{width:100%;height:210px;object-fit:cover;border-radius:16px}
.mini-job{display:flex;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid #EEF0F5}
.mini-job:last-child{border:0}
.avatar{width:46px;height:46px;border-radius:12px;background:#EEF2FF;display:grid;place-items:center;font-weight:800;color:var(--indigo)}
.badge{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:5px 8px;border-radius:999px;background:#ECFDF5;color:#059669}
.badge.purple{background:#F5F3FF;color:#7C3AED}
.section{padding:72px 0}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px}
.sec-head p{color:var(--mut);max-width:620px;margin-top:8px}
.sec-head h2{font-size:40px}
.kicker{color:var(--indigo);font-weight:800;letter-spacing:.14em;text-transform:uppercase;font-size:12px}
.logos{display:flex;gap:14px;flex-wrap:wrap;margin-top:-28px;position:relative;z-index:2}
.logo-pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:12px 18px;font-weight:800;color:#475569;box-shadow:0 8px 20px rgba(0,0,0,.05)}
.jobs-layout{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.chip{padding:9px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);font-weight:700;cursor:pointer;font-size:14px}
.chip.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.job-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.job{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;transition:.2s}
.job:hover{transform:translateY(-3px);box-shadow:0 18px 35px rgba(15,32,67,.1);border-color:#C7D2FE}
.job-top{display:flex;justify-content:space-between}
.job h3{font-size:19px;margin:10px 0 4px}
.meta{color:var(--mut);font-size:14px}
.tags{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}
.tag{background:#F1F5F9;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700;color:#475569}
.salary{font-weight:800;color:var(--navy)}
.job-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #EEF0F5;padding-top:14px;margin-top:8px}
.sidebar-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;margin-bottom:16px}
.sidebar-card h3{font-size:18px;margin-bottom:12px}
.trend{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px dashed #E2E8F0;font-size:14px}
.trend:last-child{border:0}
.up{color:#059669;font-weight:800}
.salary-bar{margin:12px 0}
.salary-bar label{display:flex;justify-content:space-between;font-size:13px;font-weight:700}
.bar{height:8px;background:#EEF2F7;border-radius:99px;overflow:hidden;margin-top:5px}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--indigo));border-radius:99px}
.features{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.feature{background:#fff;border-radius:22px;overflow:hidden;border:1px solid var(--line)}
.feature img{width:100%;height:180px;object-fit:cover}
.feature div{padding:22px}
.feature p{color:var(--mut);font-size:15px;margin:10px 0 16px}
.feature a{color:var(--indigo);font-weight:800}
.assess{background:var(--navy);border-radius:28px;padding:36px;display:grid;grid-template-columns:1fr 1fr;gap:32px;color:#fff}
.assess h2{color:#fff;font-size:36px}
.assess p{color:#CBD5E1}
.q{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:16px;margin:14px 0}
.q b{display:block;margin-bottom:10px}
.opts{display:flex;gap:8px;flex-wrap:wrap}
.opt{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.1);cursor:pointer;font-size:13px;font-weight:700;border:1px solid transparent}
.opt.sel{background:#fff;color:var(--navy)}
.result{background:#fff;color:#17233B;border-radius:20px;padding:24px;text-align:center}
.score{width:130px;height:130px;border-radius:50%;margin:10px auto;display:grid;place-items:center;background:conic-gradient(var(--teal) 0deg,#EEF2F7 0deg);font-size:36px;font-weight:800;font-family:'Plus Jakarta Sans'}
.articles{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:18px}
.article{background:#fff;border-radius:20px;overflow:hidden;border:1px solid var(--line)}
.article img{width:100%;height:190px;object-fit:cover}
.article div{padding:20px}
.article p{color:var(--mut);font-size:14px}
.testis{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.testi{background:#fff;border:1px solid var(--line);border-radius:20px;padding:24px}
.testi p{color:#334155}
.person{display:flex;gap:12px;align-items:center;margin-top:18px}
.person img{width:52px;height:52px;border-radius:50%}
.stars{color:#F59E0B;letter-spacing:2px}
.faq{display:grid;grid-template-columns:.9fr 1.1fr;gap:28px}
.faq-item{background:#fff;border:1px solid var(--line);border-radius:16px;margin-bottom:10px;overflow:hidden}
.faq-q{width:100%;text-align:left;background:#fff;border:0;padding:18px;font-weight:800;cursor:pointer;display:flex;justify-content:space-between}
.faq-a{display:none;padding:0 18px 18px;color:var(--mut)}
.faq-item.open .faq-a{display:block}
.cta{background:linear-gradient(135deg,var(--indigo),var(--violet));border-radius:28px;padding:42px;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:24px}
.cta h2{color:#fff;font-size:36px}
.cta p{color:#E0E7FF}
footer{background:#0B1730;color:#94A3B8;padding:56px 0 24px;margin-top:0}
.foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px}
.foot h4{color:#fff;margin-bottom:14px}
.foot a{display:block;margin:8px 0}
.social{display:flex;gap:10px;margin-top:16px}
.social a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.08);display:grid;place-items:center;color:#fff}
.copy{border-top:1px solid rgba(255,255,255,.08);margin-top:32px;padding-top:18px;display:flex;justify-content:space-between;font-size:13px}
.toast{position:fixed;right:20px;bottom:20px;background:var(--navy);color:#fff;padding:16px 20px;border-radius:14px;box-shadow:0 20px 40px rgba(0,0,0,.3);display:none;z-index:99;max-width:360px}
@media(max-width:900px){.hero-grid,.jobs-layout,.features,.assess,.articles,.testis,.faq,.foot{grid-template-columns:1fr}.job-grid{grid-template-columns:1fr}.links{display:none}.hero h1{font-size:40px}.search{flex-direction:column}.cta{flex-direction:column;align-items:flex-start}.nav-actions .signin{display:none}}
</style>
</head>
<body>
<div class="topbar"><div class="container"><span>🔥 <b>12,480 new jobs</b> added this week — hiring is up 18% in Product & Tech</span><span>Employers | Help Centre | EN</span></div></div>
<header><div class="container nav">
<a class="logo" href="#"><img src="https://placehold.co/52x52/4F46E5/FFFFFF?text=A&font=poppins" alt="Ascendly logo"><div><strong>Ascend<span>ly</span></strong><small>Career • Accelerated</small></div></a>
<nav class="links"><a href="#jobs">Find Jobs</a><a href="#advice">Career Advice</a><a href="#resume">Resume Guide</a><a href="#interview">Interview Prep</a><a href="#salary">Salary Insights</a><a href="#resources">Resources</a></nav>
<div class="nav-actions"><a class="signin" href="#profile">Sign In</a><button class="btn btn-p" onclick="showToast('Welcome to Ascendly! Create your free profile to get matched with roles in under 2 minutes.')">Create Profile</button></div>
</div></header>
<section class="hero"><div class="container hero-grid">
<div>
<span class="eyebrow">★ Rated 4.9/5 by 84,000+ professionals</span>
<h1>Your career trajectory, <i>accelerated.</i></h1>
<p>Ascendly connects ambitious professionals with verified employers, expert career advice, and data-backed tools to help you negotiate better, interview with confidence, and build a personal brand that gets noticed — at every stage of your journey.</p>
<form class="search" onsubmit="event.preventDefault();filterJobs()"><input id="q" placeholder="Job title, skill or company — e.g. Product Manager"><select id="loc"><option>All Locations</option><option>London</option><option>New York</option><option>Remote</option><option>Berlin</option></select><button class="btn btn-p" type="submit"><i class="fa fa-search"></i> Search Jobs</button></form>
<div class="trending">Trending: <b onclick="quickSearch('Designer')">UX Designer</b><b onclick="quickSearch('Marketing')">Marketing</b><b onclick="quickSearch('Analyst')">Data Analyst</b><b onclick="quickSearch('Remote')">Remote</b></div>
<div class="stats"><div><b>48,291</b><span>Live vacancies</span></div><div><b>6,140</b><span>Trusted employers</span></div><div><b>92%</b><span>Match success rate</span></div><div><b>£68k</b><span>Avg. placed salary</span></div></div>
</div>
<div class="hero-card">
<img class="main" src="https://picsum.photos/640/360?random=12" alt="Professionals collaborating">
<div class="mini-job"><div class="avatar">N</div><div style="flex:1"><b>Senior Product Designer</b><br><span class="meta">NovaBank • London • Hybrid</span></div><span class="badge">NEW</span></div>
<div class="mini-job"><div class="avatar" style="background:#FFF7ED;color:#EA580C">S</div><div style="flex:1"><b>Growth Marketing Lead</b><br><span class="meta">ShopSphere • Remote • £65–85k</span></div><span class="badge purple">HOT</span></div>
<div style="display:flex;gap:10px;margin-top:14px"><button class="btn btn-p" style="flex:1;justify-content:center" onclick="document.getElementById('jobs').scrollIntoView({behavior:'smooth'})">Start Application →</button><button class="btn btn-o" onclick="showToast('Career coach booked! Check your inbox for your free 20-min session details.')">Free Coaching</button></div>
<p style="font-size:12px;color:#94A3B8;text-align:center;margin-top:10px">No credit card required • Cancel anytime • GDPR compliant</p>
</div>
</div></section>
<div class="container"><div class="logos"><span class="logo-pill">GOOGLE</span><span class="logo-pill">✦ NOVABANK</span><span class="logo-pill">ShopSphere</span><span class="logo-pill">◎ HealthPlus</span><span class="logo-pill">▲ CloudNine</span><span class="logo-pill">FinEdge</span><span class="logo-pill">+ 6,100 more hiring now</span></div></div>
<!-- JOBS -->
<section class="section" id="jobs"><div class="container">
<div class="sec-head"><div><span class="kicker">Featured Positions</span><h2>Jobs matched to your ambition</h2><p>Every listing is verified by our team. Salaries are transparent, employers respond within 5 working days on average, and your references are only shared with your permission.</p></div><a href="#profile" class="btn btn-o">View All 48,291 Jobs →</a></div>
<div class="jobs-layout"><div>
<div class="filters"><button class="chip active" onclick="setFilter(this,'All')">All Roles</button><button class="chip" onclick="setFilter(this,'Design')">Design</button><button class="chip" onclick="setFilter(this,'Marketing')">Marketing</button><button class="chip" onclick="setFilter(this,'Data')">Data & Tech</button><button class="chip" onclick="setFilter(this,'Remote')">Remote</button></div>
<div class="job-grid" id="jobGrid"></div>
</div>
<aside>
<div class="sidebar-card"><h3>📈 Hiring Trends — May 2026</h3>
<div class="trend"><span>AI & Machine Learning</span><span class="up">↑ 34%</span></div>
<div class="trend"><span>Product Management</span><span class="up">↑ 21%</span></div>
<div class="trend"><span>Cybersecurity</span><span class="up">↑ 19%</span></div>
<div class="trend"><span>UX / UI Design</span><span class="up">↑ 12%</span></div>
<div class="trend"><span>Remote-first roles</span><span class="up">↑ 9%</span></div>
<p style="font-size:13px;color:#64748B;margin-top:12px">Based on 48,291 live listings analysed weekly by the Ascendly Insights team.</p></div>
<div class="sidebar-card" id="salary"><h3>💷 Salary Insights</h3><p style="font-size:14px;color:#64748B">What professionals like you are actually earning in 2026:</p>
<div class="salary-bar"><label><span>Product Manager</span><span>£78k</span></label><div class="bar"><i style="width:86%"></i></div></div>
<div class="salary-bar"><label><span>UX Designer</span><span>£62k</span></label><div class="bar"><i style="width:68%"></i></div></div>
<div class="salary-bar"><label><span>Data Analyst</span><span>£58k</span></label><div class="bar"><i style="width:62%"></i></div></div>
<div class="salary-bar"><label><span>Marketing Manager</span><span>£55k</span></label><div class="bar"><i style="width:58%"></i></div></div>
<button class="btn btn-o" style="width:100%;justify-content:center;margin-top:10px" onclick="showToast('Your personalised Salary Report is on its way! We compared 12,400+ salaries for your role and location.')">Get My Salary Report</button></div>
<div class="sidebar-card" style="background:#0F2043;color:#fff;border:0"><h3 style="color:#fff">Get job alerts first</h3><p style="color:#CBD5E1;font-size:14px">Be in the first 10 applicants. Early applicants are 4× more likely to get an interview.</p><input id="alertEmail" placeholder="Your work email" style="width:100%;padding:12px;border-radius:10px;border:0;margin:12px 0"><button class="btn btn-teal" style="width:100%;justify-content:center" onclick="subscribeAlert()">Create Job Alert</button></div>
</aside></div>
</div></section>
<!-- FEATURES -->
<section class="section" style="background:#fff;padding-top:60px" id="resume"><div class="container">
<div class="sec-head"><div><span class="kicker">Build • Brand • Advance</span><h2>Everything you need to get hired — and promoted</h2><p>From your first resume to executive leadership, our resources combine recruiter insight, hiring-manager feedback, and real salary data so you never have to guess your next move.</p></div></div>
<div class="features">
<article class="feature"><img src="https://picsum.photos/600/360?random=21"><div><span class="badge">RESUME GUIDE</span><h3 style="margin-top:10px">Resumes that pass the 6-second scan</h3><p>Recruiters spend seconds on a first pass. Learn how to structure achievements with impact metrics, tailor keywords for ATS systems, choose references wisely, and turn responsibilities into results that prove commercial value.</p><a href="#" onclick="showToast('Resume Checklist downloaded! 27 recruiter-approved tips included.');return false;">Download Free Checklist →</a></div></article>
<article class="feature"><img src="https://picsum.photos/600/360?random=32"><div><span class="badge purple">NETWORKING</span><h3 style="margin-top:10px">Professional networking that feels human</h3><p>80% of roles are filled through connections. Build your personal branding on LinkedIn, craft outreach that gets replies, nurture mentors, and turn coffee chats into genuine career opportunities — without feeling salesy.</p><a href="#" onclick="showToast('You are on the list for Thursday Networking Hour — 340 professionals already attending.');return false;">Connect Now →</a></div></article>
<article class="feature" id="interview"><img src="https://picsum.photos/600/360?random=45"><div><span class="badge" style="background:#FFF7ED;color:#EA580C">INTERVIEW PREP</span><h3 style="margin-top:10px">Interview prep used by top candidates</h3><p>Master STAR storytelling, salary negotiation, and tough behavioural questions. Practise with mock interviews, get feedback on your answers, and learn what hiring panels discuss after you leave the room.</p><a href="#" onclick="showToast('Mock interview unlocked! Pick a time and practise with a real hiring manager.');return false;">Practise an Interview →</a></div></article>
</div></div></section>
<!-- ASSESSMENT -->
<section class="section" style="padding-top:20px"><div class="container"><div class="assess">
<div><span class="kicker" style="color:#5EEAD4">Interactive • 2 Minutes</span><h2>Skills Assessment: How job-ready are you?</h2><p>Answer honestly and get an instant readiness score, a personalised action plan, and recommended roles. Thousands of candidates use this each week to identify skill gaps before they apply — and close them faster.</p>
<div class="q"><b>1. How confident is your resume right now?</b><div class="opts"><span class="opt" onclick="pick(this,1)">Needs work</span><span class="opt" onclick="pick(this,2)">Pretty good</span><span class="opt" onclick="pick(this,3)">Recruiter-ready</span></div></div>
<div class="q"><b>2. Your LinkedIn & personal brand?</b><div class="opts"><span class="opt" onclick="pick(this,1)">Barely started</span><span class="opt" onclick="pick(this,2)">Active monthly</span><span class="opt" onclick="pick(this,3)">Posting weekly</span></div></div>
<div class="q"><b>3. Interview experience in the last year?</b><div class="opts"><span class="opt" onclick="pick(this,1)">None yet</span><span class="opt" onclick="pick(this,2)">1–3 interviews</span><span class="opt" onclick="pick(this,3)">Final stages / offers</span></div></div>
<button class="btn btn-teal" onclick="calcScore()">Calculate My Score →</button> <span style="font-size:13px;color:#94A3B8;margin-left:8px" id="answered">0 / 3 answered</span>
</div>
<div class="result"><span class="badge">YOUR RESULT</span><div class="score" id="scoreCircle"><span id="scoreNum">—</span></div><h3 id="scoreTitle">Complete the assessment</h3><p id="scoreText" style="color:#64748B;font-size:14px">Select one answer for each question, then calculate your score to unlock tailored advice, courses, and job matches.</p><div style="text-align:left;background:#F8FAFC;border-radius:12px;padding:14px;margin:16px 0;font-size:14px" id="plan">✓ Recommended next steps will appear here<br>✓ Tailored jobs based on your strengths<br>✓ Free resources matched to your gaps</div><button class="btn btn-p" style="width:100%;justify-content:center" onclick="showToast('Profile created! Your personalised dashboard and job matches are ready.')">Create Profile to Save Result</button></div>
</div></div></section>
<!-- ADVICE -->
<section class="section" id="advice" style="padding-top:10px"><div class="container">
<div class="sec-head"><div><span class="kicker">Career Advice</span><h2>Advice from people who hire</h2><p>Written by recruiters, hiring managers, and career coaches — not generic AI content. Practical, honest, and updated for the 2026 job market.</p></div><a class="btn btn-o" href="#resources">Browse All Articles →</a></div>
<div class="articles">
<article class="article"><img src="https://picsum.photos/700/400?random=8"><div><span class="badge purple">CAREER TRAJECTORY</span><h3 style="margin:10px 0">How to plan a 5-year career trajectory without burning out</h3><p>Ambitious doesn't have to mean exhausted. Senior leaders share how they mapped promotions, lateral moves, and skill-building into a sustainable plan — and the quarterly check-ins that kept them on track when priorities changed.</p><p style="margin-top:12px"><b>By Elena Morris</b> • 8 min read • 12.4k saves</p></div></article>
<article class="article"><img src="https://picsum.photos/600/400?random=19"><div><span class="badge">SALARY</span><h3 style="margin:10px 0">Negotiate £8k more: scripts that actually work</h3><p>Exact phrases for counter-offers, competing offers, and reviews.</p><p style="margin-top:12px"><b>By James Okafor</b> • 6 min read</p></div></article>
<article class="article"><img src="https://picsum.photos/600/400?random=27"><div><span class="badge" style="background:#FFF7ED;color:#EA580C">REFERENCES</span><h3 style="margin:10px 0">References: who to ask (and who to avoid)</h3><p>The etiquette, timing, and briefing that turns a reference into an advocate.</p><p style="margin-top:12px"><b>By Priya Shah</b> • 5 min read</p></div></article>
</div>
<div class="testis" style="margin-top:22px">
<div class="testi"><div class="stars">★★★★★</div><p>"I went from 0 interviews in 3 months to 5 in two weeks after using the Resume Guide and Skills Assessment. The feedback was specific, not generic — it changed how I talked about my work."</p><div class="person"><img src="https://i.pravatar.cc/100?u=sophie"><div><b>Sophie Turner</b><br><span style="color:#64748B;font-size:13px">UX Designer @ NovaBank</span></div></div></div>
<div class="testi"><div class="stars">★★★★★</div><p>"The salary data gave me confidence to negotiate. I secured £9,500 above the first offer plus a signing bonus. Ascendly paid for itself before I even paid anything — it's free."</p><div class="person"><img src="https://i.pravatar.cc/100?u=marcus"><div><b>Marcus Lee</b><br><span style="color:#64748B;font-size:13px">Product Manager @ CloudNine</span></div></div></div>
<div class="testi"><div class="stars">★★★★★</div><p>"As a career changer at 34, I felt behind. My coach helped me reframe 8 years in retail as leadership experience. I landed a Marketing role I genuinely love within 6 weeks."</p><div class="person"><img src="https://i.pravatar.cc/100?u=amara"><div><b>Amara Khan</b><br><span style="color:#64748B;font-size:13px">Marketing Lead @ ShopSphere</span></div></div></div>
</div>
</div></section>
<!-- FAQ + CTA -->
<section class="section" id="resources" style="background:#fff"><div class="container">
<div class="faq"><div><span class="kicker">FAQ</span><h2 style="font-size:38px;margin:10px 0">Questions, answered honestly</h2><p style="color:#64748B">No sales pressure, no hidden fees for jobseekers. If you can't find what you need, our careers team replies within one working day at hello@ascendly.careers.</p><img src="https://picsum.photos/600/340?random=55" style="width:100%;border-radius:18px;margin-top:20px;object-fit:cover"></div>
<div>
<div class="faq-item open"><button class="faq-q" onclick="toggleFaq(this)">Is Ascendly free for jobseekers? <span>−</span></button><div class="faq-a">Yes — searching, applying, the Skills Assessment, Resume Guide, and Salary Insights are completely free. Employers pay to list roles, which keeps the platform free and unbiased for candidates.</div></div>
<div class="faq-item"><button class="faq-q" onclick="toggleFaq(this)">How does job matching work? <span>+</span></button><div class="faq-a">We match on skills, experience, salary expectations, location preferences, and culture fit — not just keywords. You control your visibility and can hide your profile from your current employer.</div></div>
<div class="faq-item"><button class="faq-q" onclick="toggleFaq(this)">Will employers see my references automatically? <span>+</span></button><div class="faq-a">Never. Your references are only shared when you explicitly approve it for a specific role, usually at final stage. You choose who we contact and when.</div></div>
<div class="faq-item"><button class="faq-q" onclick="toggleFaq(this)">Can I get help if I'm changing careers? <span>+</span></button><div class="faq-a">Absolutely — 38% of our members are career changers. Start with the Skills Assessment, then we'll map your transferable skills to growing industries and suggest short, affordable courses to fill gaps.</div></div>
<div class="faq-item"><button class="faq-q" onclick="toggleFaq(this)">How quickly will I hear back from employers? <span>+</span></button><div class="faq-a">Our partner employers commit to responding within 5 working days. If they don't, we chase them for you and let you know — no more applications disappearing into a black hole.</div></div>
</div></div>
<div class="cta" id="profile" style="margin-top:36px"><div><h2>Ready to move up?</h2><p>Create your free profile in 2 minutes. Get matched, get advice, get hired.</p></div><div style="display:flex;gap:10px;flex-wrap:wrap"><button class="btn btn-w" onclick="showToast('Account created! Welcome aboard — complete your profile to unlock personalised matches.')">Create Profile — It's Free</button><button class="btn" style="background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.3)" onclick="document.getElementById('jobs').scrollIntoView({behavior:'smooth'})">Browse Jobs</button></div></div>
</div></section>
<footer><div class="container"><div class="foot">
<div><div class="logo"><img src="https://placehold.co/44x44/4F46E5/FFFFFF?text=A&font=poppins"><strong style="color:#fff;font-size:22px">Ascend<span style="color:#818CF8">ly</span></strong></div><p style="margin-top:14px;font-size:14px">Your career trajectory, accelerated. Helping 840,000+ professionals find work they love since 2019.</p><p style="margin-top:14px;font-size:14px">📍 14 Clerkenwell Green, London EC1R 0DP<br>✉️ hello@ascendly.careers<br>📞 +44 20 7946 0958</p><div class="social"><a href="#"><i class="fab fa-linkedin-in"></i></a><a href="#"><i class="fab fa-x-twitter"></i></a><a href="#"><i class="fab fa-instagram"></i></a><a href="#"><i class="fab fa-youtube"></i></a></div></div>
<div><h4>Jobseekers</h4><a href="#jobs">Find Jobs</a><a href="#profile">Create Profile</a><a href="#salary">Salary Insights</a><a href="#">Job Alerts</a><a href="#">Career Coaching</a></div>
<div><h4>Resources</h4><a href="#advice">Career Advice</a><a href="#resume">Resume Guide</a><a href="#interview">Interview Prep</a><a href="#resources">Resources Library</a><a href="#">CV Templates</a></div>
<div><h4>Company</h4><a href="#">About Us</a><a href="#">For Employers</a><a href="#">Privacy Policy</a><a href="#">Terms of Service</a><a href="#">Contact Us</a></div>
</div><div class="copy"><span>© 2026 Ascendly Careers Ltd. All rights reserved.</span><span>Privacy • Terms • Cookies • Accessibility • Sitemap</span></div></div></footer>
<div class="toast" id="toast"></div>
<script>
const jobs=[
{title:"Senior Product Designer",company:"NovaBank",loc:"London • Hybrid",salary:"£62k – £78k",cat:"Design",logo:"N",color:"#EEF2FF"},
{title:"Growth Marketing Manager",company:"ShopSphere",loc:"Remote • UK",salary:"£55k – £70k",cat:"Marketing Remote",logo:"S",color:"#FFF7ED"},
{title:"Data Analyst",company:"HealthPlus",loc:"Manchester • Hybrid",salary:"£48k – £60k",cat:"Data",logo:"H",color:"#ECFDF5"},
{title:"Frontend Developer",company:"CloudNine",loc:"Remote • Global",salary:"£70k – £90k",cat:"Data Remote",logo:"C",color:"#F5F3FF"},
{title:"UX Researcher",company:"FinEdge",loc:"London • On-site",salary:"£58k – £72k",cat:"Design",logo:"F",color:"#FEF2F2"},
{title:"Content Marketing Lead",company:"LearnLoop",loc:"Berlin • Remote",salary:"€55k – €68k",cat:"Marketing Remote",logo:"L",color:"#EFF6FF"},
];
let currentFilter='All';
function renderJobs(list){
document.getElementById('jobGrid').innerHTML=list.map(j=>`<article class="job"><div class="job-top"><div class="avatar" style="background:${j.color}">${j.logo}</div><span class="badge">● Hiring now</span></div><h3>${j.title}</h3><p class="meta"><b style="color:#334155">${j.company}</b> • ${j.loc}</p><div class="tags"><span class="tag">Full-time</span><span class="tag">${j.cat.split(' ')[0]}</span><span class="tag">Verified employer</span></div><div class="job-foot"><span class="salary">${j.salary}</span><button class="btn btn-p" style="padding:10px 16px" onclick="showToast('Application started for ${j.title} at ${j.company}! Your profile has been pre-filled — just add a cover note.')">Start Application</button></div></article>`).join('') || '<p style="grid-column:1/-1;background:#fff;padding:24px;border-radius:16px">No roles match that search yet. Try a broader term or create a job alert and we will notify you first.</p>';
}
renderJobs(jobs);
function setFilter(el,cat){document.querySelectorAll('.chip').forEach(c=>c.classList.remove('active'));el.classList.add('active');currentFilter=cat;filterJobs();}
function quickSearch(term){document.getElementById('q').value=term;filterJobs();document.getElementById('jobs').scrollIntoView({behavior:'smooth'})}
function filterJobs(){const q=(document.getElementById('q').value||'').toLowerCase();let list=jobs.filter(j=>(currentFilter==='All'||j.cat.includes(currentFilter))&&(j.title.toLowerCase().includes(q)||j.company.toLowerCase().includes(q)||j.cat.toLowerCase().includes(q)||j.loc.toLowerCase().includes(q)));renderJobs(list);}
let scores={};
function pick(el,val){let q=el.closest('.q');q.querySelectorAll('.opt').forEach(o=>o.classList.remove('sel'));el.classList.add('sel');let idx=[...document.querySelectorAll('.q')].indexOf(q);scores[idx]=val;document.getElementById('answered').textContent=Object.keys(scores).length+' / 3 answered';}
function calcScore(){if(Object.keys(scores).length<3){showToast('Please answer all 3 questions so we can give you an accurate score and plan.');return;}let total=Object.values(scores).reduce((a,b)=>a+b,0);let pct=Math.round(total/9*100);document.getElementById('scoreNum').textContent=pct+'%';document.getElementById('scoreCircle').style.background=`conic-gradient(#0FB5A8 ${pct*3.6}deg,#EEF2F7 0deg)`;let title,text,plan;if(pct>=78){title='Highly Job-Ready 🎉';text='You are in a strong position. Focus on negotiation and selective, high-quality applications.';plan='✓ Apply to Senior / Lead roles this week<br>✓ Prepare negotiation scripts<br>✓ Ask mentors for warm introductions';}else if(pct>=50){title='Almost There — Strong Foundation';text='You have solid momentum. Tightening your resume and interview stories will unlock more offers.';plan='✓ Rewrite 3 bullet points with metrics<br>✓ Do 1 mock interview this week<br>✓ Post once on LinkedIn about your expertise';}else{title='Great Starting Point';text='Everyone starts here. With a focused 2-week sprint, you can become highly competitive.';plan='✓ Download the Resume Checklist<br>✓ Complete your LinkedIn headline & About<br>✓ Book a free 20-min coaching session';}document.getElementById('scoreTitle').textContent=title;document.getElementById('scoreText').textContent=text;document.getElementById('plan').innerHTML=plan;showToast('Assessment complete! Your score is '+pct+'% — see your personalised plan.');}
function toggleFaq(btn){let item=btn.parentElement;let open=item.classList.contains('open');document.querySelectorAll('.faq-item').forEach(i=>{i.classList.remove('open');i.querySelector('span').textContent='+'});if(!open){item.classList.add('open');btn.querySelector('span').textContent='−';}}
function subscribeAlert(){let e=document.getElementById('alertEmail').value;if(!e.includes('@')){showToast('Please enter a valid email so we can send your job alerts.');return;}showToast('Job alert created for '+e+'! You will be first to know about matching roles.');document.getElementById('alertEmail').value='';}
function showToast(msg){let t=document.getElementById('toast');t.textContent=msg;t.style.display='block';setTimeout(()=>t.style.display='none',4200);}
</script>
</body>
</html>
View Axe Report (JSON)
{
"testEngine": {
"name": "axe-core",
"version": "4.10.2"
},
"testRunner": {
"name": "axe"
},
"testEnvironment": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36",
"windowWidth": 1280,
"windowHeight": 720,
"orientationAngle": 0,
"orientationType": "landscape-primary"
},
"timestamp": "2026-11-12T10:09:49.190Z",
"url": "https://benchmark.aimac.invalid/7f0ac4f117e6bd17fb3ff504ef3bb35bf7355766871b319b401b6c0c03fbcb0c.html",
"toolOptions": {
"runOnly": {
"type": "tag",
"values": [
"wcag2a",
"wcag2aa",
"wcag21a",
"wcag21aa",
"wcag22a",
"wcag22aa"
]
},
"resultTypes": [
"violations"
],
"reporter": "v1"
},
"inapplicable": [
{
"id": "area-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <area> elements of image maps have alternative text",
"help": "Active <area> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/area-alt?application=axeAPI",
"nodes": []
},
{
"id": "aria-allowed-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure an element's role supports its ARIA attributes",
"help": "Elements must only use supported ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-braille-equivalent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
"help": "aria-braille attributes must have a non-braille equivalent",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-braille-equivalent?application=axeAPI",
"nodes": []
},
{
"id": "aria-command-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA button, link and menuitem has an accessible name",
"help": "ARIA commands must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-command-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-conditional-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are used as described in the specification of the element's role",
"help": "ARIA attributes must be used as specified for the element's role",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-deprecated-role",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements do not use deprecated roles",
"help": "Deprecated ARIA roles must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role?application=axeAPI",
"nodes": []
},
{
"id": "aria-hidden-focus",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
"help": "ARIA hidden element must not be focusable or contain focusable elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus?application=axeAPI",
"nodes": []
},
{
"id": "aria-input-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA input field has an accessible name",
"help": "ARIA input fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-meter-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA meter node has an accessible name",
"help": "ARIA meter nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-meter-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-progressbar-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag111",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure every ARIA progressbar node has an accessible name",
"help": "ARIA progressbar nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-prohibited-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure ARIA attributes are not prohibited for an element's role",
"help": "Elements must only use permitted ARIA attributes",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure elements with ARIA roles have all required ARIA attributes",
"help": "Required ARIA attributes must be provided",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-attr?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-children",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require child roles contain them",
"help": "Certain ARIA roles must contain particular children",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-children?application=axeAPI",
"nodes": []
},
{
"id": "aria-required-parent",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure elements with an ARIA role that require parent roles are contained by them",
"help": "Certain ARIA roles must be contained by particular parents",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-required-parent?application=axeAPI",
"nodes": []
},
{
"id": "aria-roles",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all elements with a role attribute use a valid value",
"help": "ARIA roles used must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-roles?application=axeAPI",
"nodes": []
},
{
"id": "aria-toggle-field-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every ARIA toggle field has an accessible name",
"help": "ARIA toggle fields must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-tooltip-name",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every ARIA tooltip node has an accessible name",
"help": "ARIA tooltip nodes must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name?application=axeAPI",
"nodes": []
},
{
"id": "aria-valid-attr-value",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure all ARIA attributes have valid values",
"help": "ARIA attributes must conform to valid values",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value?application=axeAPI",
"nodes": []
},
{
"id": "aria-valid-attr",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure attributes that begin with aria- are valid ARIA attributes",
"help": "ARIA attributes must conform to valid names",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr?application=axeAPI",
"nodes": []
},
{
"id": "autocomplete-valid",
"impact": null,
"tags": [
"cat.forms",
"wcag21aa",
"wcag135",
"EN-301-549",
"EN-9.1.3.5",
"ACT"
],
"description": "Ensure the autocomplete attribute is correct and suitable for the form field",
"help": "autocomplete attribute must be used correctly",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/autocomplete-valid?application=axeAPI",
"nodes": []
},
{
"id": "blink",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag222",
"section508",
"section508.22.j",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <blink> elements are not used",
"help": "<blink> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/blink?application=axeAPI",
"nodes": []
},
{
"id": "definition-list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dl> elements are structured correctly",
"help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/definition-list?application=axeAPI",
"nodes": []
},
{
"id": "dlitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <dt> and <dd> elements are contained by a <dl>",
"help": "<dt> and <dd> elements must be contained by a <dl>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/dlitem?application=axeAPI",
"nodes": []
},
{
"id": "duplicate-id-aria",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag412",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure every id attribute value used in ARIA and in labels is unique",
"help": "IDs used in ARIA and labels must be unique",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/duplicate-id-aria?application=axeAPI",
"nodes": []
},
{
"id": "frame-focusable-content",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
"help": "Frames with focusable content must not have tabindex=-1",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-focusable-content?application=axeAPI",
"nodes": []
},
{
"id": "frame-title-unique",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
"help": "Frames must have a unique title attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title-unique?application=axeAPI",
"nodes": []
},
{
"id": "frame-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag412",
"section508",
"section508.22.i",
"TTv5",
"TT12.d",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure <iframe> and <frame> elements have an accessible name",
"help": "Frames must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/frame-title?application=axeAPI",
"nodes": []
},
{
"id": "html-xml-lang-mismatch",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
"help": "HTML elements with lang and xml:lang must have the same base language",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-xml-lang-mismatch?application=axeAPI",
"nodes": []
},
{
"id": "input-button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure input buttons have discernible text",
"help": "Input buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-button-name?application=axeAPI",
"nodes": []
},
{
"id": "input-image-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure <input type=\"image\"> elements have alternative text",
"help": "Image buttons must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/input-image-alt?application=axeAPI",
"nodes": []
},
{
"id": "list",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that lists are structured correctly",
"help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI",
"nodes": []
},
{
"id": "listitem",
"impact": null,
"tags": [
"cat.structure",
"wcag2a",
"wcag131",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure <li> elements are used semantically",
"help": "<li> elements must be contained in a <ul> or <ol>",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/listitem?application=axeAPI",
"nodes": []
},
{
"id": "marquee",
"impact": null,
"tags": [
"cat.parsing",
"wcag2a",
"wcag222",
"TTv5",
"TT2.b",
"EN-301-549",
"EN-9.2.2.2"
],
"description": "Ensure <marquee> elements are not used",
"help": "<marquee> elements are deprecated and must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/marquee?application=axeAPI",
"nodes": []
},
{
"id": "meta-refresh",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag221",
"TTv5",
"TT8.a",
"EN-301-549",
"EN-9.2.2.1"
],
"description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
"help": "Delayed refresh under 20 hours must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-refresh?application=axeAPI",
"nodes": []
},
{
"id": "object-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"EN-301-549",
"EN-9.1.1.1"
],
"description": "Ensure <object> elements have alternative text",
"help": "<object> elements must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/object-alt?application=axeAPI",
"nodes": []
},
{
"id": "role-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure [role=\"img\"] elements have alternative text",
"help": "[role=\"img\"] elements must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/role-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "scrollable-region-focusable",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag211",
"wcag213",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1",
"EN-9.2.1.3"
],
"description": "Ensure elements that have scrollable content are accessible by keyboard",
"help": "Scrollable region must have keyboard access",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/scrollable-region-focusable?application=axeAPI",
"nodes": []
},
{
"id": "server-side-image-map",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag211",
"section508",
"section508.22.f",
"TTv5",
"TT4.a",
"EN-301-549",
"EN-9.2.1.1"
],
"description": "Ensure that server-side image maps are not used",
"help": "Server-side image maps must not be used",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/server-side-image-map?application=axeAPI",
"nodes": []
},
{
"id": "summary-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure summary elements have discernible text",
"help": "Summary elements must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/summary-name?application=axeAPI",
"nodes": []
},
{
"id": "svg-img-alt",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",
"help": "<svg> elements with an img role must have an alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/svg-img-alt?application=axeAPI",
"nodes": []
},
{
"id": "td-headers-attr",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",
"help": "Table cells that use the headers attribute must only refer to cells in the same table",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/td-headers-attr?application=axeAPI",
"nodes": []
},
{
"id": "th-has-data-cells",
"impact": null,
"tags": [
"cat.tables",
"wcag2a",
"wcag131",
"section508",
"section508.22.g",
"TTv5",
"TT14.b",
"EN-301-549",
"EN-9.1.3.1"
],
"description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
"help": "Table headers in a data table must refer to data cells",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/th-has-data-cells?application=axeAPI",
"nodes": []
},
{
"id": "valid-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2aa",
"wcag312",
"TTv5",
"TT11.b",
"EN-301-549",
"EN-9.3.1.2",
"ACT"
],
"description": "Ensure lang attributes have valid values",
"help": "lang attribute must have a valid value",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/valid-lang?application=axeAPI",
"nodes": []
},
{
"id": "video-caption",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag122",
"section508",
"section508.22.a",
"TTv5",
"TT17.a",
"EN-301-549",
"EN-9.1.2.2"
],
"description": "Ensure <video> elements have captions",
"help": "<video> elements must have captions",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/video-caption?application=axeAPI",
"nodes": []
},
{
"id": "no-autoplay-audio",
"impact": null,
"tags": [
"cat.time-and-media",
"wcag2a",
"wcag142",
"TTv5",
"TT2.a",
"EN-301-549",
"EN-9.1.4.2",
"ACT"
],
"description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
"help": "<video> or <audio> elements must not play automatically",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/no-autoplay-audio?application=axeAPI",
"nodes": []
}
],
"passes": [
{
"id": "aria-hidden-body",
"impact": null,
"tags": [
"cat.aria",
"wcag2a",
"wcag131",
"wcag412",
"EN-301-549",
"EN-9.1.3.1",
"EN-9.4.1.2"
],
"description": "Ensure aria-hidden=\"true\" is not present on the document body.",
"help": "aria-hidden=\"true\" must not be present on the document body",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "aria-hidden-body",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "No aria-hidden attribute is present on document body"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<body>",
"target": [
"body"
]
}
]
},
{
"id": "avoid-inline-spacing",
"impact": null,
"tags": [
"cat.structure",
"wcag21aa",
"wcag1412",
"EN-301-549",
"EN-9.1.4.12",
"ACT"
],
"description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
"help": "Inline text spacing must be adjustable with custom stylesheets",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/avoid-inline-spacing?application=axeAPI",
"nodes": [
{
"any": [],
"all": [
{
"id": "important-letter-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Letter-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-word-spacing",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "word-spacing in the style attribute is not set to !important, or meets the minimum"
},
{
"id": "important-line-height",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "line-height in the style attribute is not set to !important, or meets the minimum"
}
],
"none": [],
"impact": null,
"html": "<div style=\"flex:1\"><b>Senior Product Designer</b><br><span class=\"meta\">NovaBank \u2022 London \u2022 Hybrid</span></div>",
"target": [
".mini-job:nth-child(2) > div:nth-child(2)"
]
}
]
},
{
"id": "button-name",
"impact": null,
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure buttons have discernible text",
"help": "Buttons must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/button-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "button-has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has inner text that is visible to screen readers"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<button class=\"btn btn-p\" onclick=\"showToast('Welcome to Ascendly! Create your free profile to get matched with roles in under 2 minutes.')\">Create Profile</button>",
"target": [
".nav-actions > .btn-p.btn"
]
}
]
},
{
"id": "bypass",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag241",
"section508",
"section508.22.o",
"TTv5",
"TT9.a",
"EN-301-549",
"EN-9.2.4.1"
],
"description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
"help": "Page must have means to bypass repeated blocks",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/bypass?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "internal-link-present",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Valid skip link found"
},
{
"id": "header-present",
"data": null,
"relatedNodes": [
{
"html": "<h1>Your career trajectory, <i>accelerated.</i></h1>",
"target": [
"h1"
]
},
{
"html": "<h2>Jobs matched to your ambition</h2>",
"target": [
"#jobs > .container > .sec-head > div > h2"
]
},
{
"html": "<h3>Senior Product Designer</h3>",
"target": [
".job:nth-child(1) > h3"
]
},
{
"html": "<h3>Growth Marketing Manager</h3>",
"target": [
".job:nth-child(2) > h3"
]
},
{
"html": "<h3>Data Analyst</h3>",
"target": [
".job:nth-child(3) > h3"
]
},
{
"html": "<h3>Frontend Developer</h3>",
"target": [
".job:nth-child(4) > h3"
]
},
{
"html": "<h3>UX Researcher</h3>",
"target": [
".job:nth-child(5) > h3"
]
},
{
"html": "<h3>Content Marketing Lead</h3>",
"target": [
".job:nth-child(6) > h3"
]
},
{
"html": "<h3>\ud83d\udcc8 Hiring Trends \u2014 May 2026</h3>",
"target": [
".sidebar-card:nth-child(1) > h3"
]
},
{
"html": "<h3>\ud83d\udcb7 Salary Insights</h3>",
"target": [
"#salary > h3"
]
},
{
"html": "<h3 style=\"color:#fff\">Get job alerts first</h3>",
"target": [
".sidebar-card:nth-child(3) > h3"
]
},
{
"html": "<h2>Everything you need to get hired \u2014 and promoted</h2>",
"target": [
"#resume > .container > .sec-head > div > h2"
]
},
{
"html": "<h3 style=\"margin-top:10px\">Resumes that pass the 6-second scan</h3>",
"target": [
".feature:nth-child(1) > div > h3"
]
},
{
"html": "<h3 style=\"margin-top:10px\">Professional networking that feels human</h3>",
"target": [
".feature:nth-child(2) > div > h3"
]
},
{
"html": "<h3 style=\"margin-top:10px\">Interview prep used by top candidates</h3>",
"target": [
"#interview > div > h3"
]
},
{
"html": "<h2>Skills Assessment: How job-ready are you?</h2>",
"target": [
".assess > div:nth-child(1) > h2"
]
},
{
"html": "<h3 id=\"scoreTitle\">Complete the assessment</h3>",
"target": [
"#scoreTitle"
]
},
{
"html": "<h2>Advice from people who hire</h2>",
"target": [
"#advice > .container > .sec-head > div > h2"
]
},
{
"html": "<h3 style=\"margin:10px 0\">How to plan a 5-year career trajectory without burning out</h3>",
"target": [
".article:nth-child(1) > div > h3"
]
},
{
"html": "<h3 style=\"margin:10px 0\">Negotiate \u00a38k more: scripts that actually work</h3>",
"target": [
".article:nth-child(2) > div > h3"
]
},
{
"html": "<h3 style=\"margin:10px 0\">References: who to ask (and who to avoid)</h3>",
"target": [
".article:nth-child(3) > div > h3"
]
},
{
"html": "<h2 style=\"font-size:38px;margin:10px 0\">Questions, answered honestly</h2>",
"target": [
".faq > div:nth-child(1) > h2"
]
},
{
"html": "<h2>Ready to move up?</h2>",
"target": [
"#profile > div:nth-child(1) > h2"
]
},
{
"html": "<h4>Jobseekers</h4>",
"target": [
"div:nth-child(2) > h4"
]
},
{
"html": "<h4>Resources</h4>",
"target": [
"div:nth-child(3) > h4"
]
},
{
"html": "<h4>Company</h4>",
"target": [
"div:nth-child(4) > h4"
]
}
],
"impact": "serious",
"message": "Page has a heading"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#cbd5e1",
"bgColor": "#0f2043",
"contrastRatio": 10.81,
"fontSize": "9.8pt (13px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has sufficient color contrast of 10.81"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<span>\ud83d\udd25 <b>12,480 new jobs</b> added this week \u2014 hiring is up 18% in Product & Tech</span>",
"target": [
".container > span:nth-child(1)"
]
}
]
},
{
"id": "document-title",
"impact": null,
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag242",
"TTv5",
"TT12.a",
"EN-301-549",
"EN-9.2.4.2",
"ACT"
],
"description": "Ensure each HTML document contains a non-empty <title> element",
"help": "Documents must have <title> element to aid in navigation",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/document-title?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "doc-has-title",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Document has a non-empty <title> element"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "form-field-multiple-labels",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag332",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.3.3.2"
],
"description": "Ensure form field does not have multiple label elements",
"help": "Form field must not have multiple label elements",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/form-field-multiple-labels?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "multiple-label",
"data": null,
"relatedNodes": [],
"impact": "moderate",
"message": "Form field does not have multiple label elements"
}
],
"impact": null,
"html": "<input id=\"q\" placeholder=\"Job title, skill or company \u2014 e.g. Product Manager\">",
"target": [
"#q"
]
}
]
},
{
"id": "html-has-lang",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure every HTML document has a lang attribute",
"help": "<html> element must have a lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-has-lang?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "The <html> element has a lang attribute"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "html-lang-valid",
"impact": null,
"tags": [
"cat.language",
"wcag2a",
"wcag311",
"TTv5",
"TT11.a",
"EN-301-549",
"EN-9.3.1.1",
"ACT"
],
"description": "Ensure the lang attribute of the <html> element has a valid value",
"help": "<html> element must have a valid value for the lang attribute",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/html-lang-valid?application=axeAPI",
"nodes": [
{
"any": [],
"all": [],
"none": [
{
"id": "valid-lang",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Value of lang attribute is included in the list of valid languages"
}
],
"impact": null,
"html": "<html lang=\"en\">",
"target": [
"html"
]
}
]
},
{
"id": "image-alt",
"impact": "critical",
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has an alt attribute"
}
],
"all": [],
"none": [
{
"id": "alt-space-value",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a valid alt attribute value"
}
],
"impact": null,
"html": "<img src=\"https://placehold.co/52x52/4F46E5/FFFFFF?text=A&font=poppins\" alt=\"Ascendly logo\">",
"target": [
"img[alt=\"Ascendly logo\"]"
]
}
]
},
{
"id": "label",
"impact": null,
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure every form element has a label",
"help": "Form elements must have labels",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/label?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "non-empty-placeholder",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element has a placeholder attribute"
}
],
"all": [],
"none": [
{
"id": "hidden-explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Form element has a visible explicit <label>"
}
],
"impact": null,
"html": "<input id=\"q\" placeholder=\"Job title, skill or company \u2014 e.g. Product Manager\">",
"target": [
"#q"
]
}
]
},
{
"id": "link-in-text-block",
"impact": null,
"tags": [
"cat.color",
"wcag2a",
"wcag141",
"TTv5",
"TT13.a",
"EN-301-549",
"EN-9.1.4.1"
],
"description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
"help": "Links must be distinguishable without relying on color",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-in-text-block?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "link-in-text-block-style",
"data": null,
"relatedNodes": [
{
"html": "<div>",
"target": [
".feature:nth-child(1) > div"
]
}
],
"impact": "serious",
"message": "Links can be distinguished from surrounding text by visual styling"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a href=\"#\" onclick=\"showToast('Resume Checklist downloaded! 27 recruiter-approved tips included.');return false;\">Download Free Checklist \u2192</a>",
"target": [
".feature:nth-child(1) > div > a[href=\"#\"]"
]
}
]
},
{
"id": "link-name",
"impact": "serious",
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element has text that is visible to screen readers"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is not in tab order or has accessible text"
}
],
"impact": null,
"html": "<a class=\"logo\" href=\"#\"><img src=\"https://placehold.co/52x52/4F46E5/FFFFFF?text=A&font=poppins\" alt=\"Ascendly logo\"><div><strong>Ascend<span>ly</span></strong><small>Career \u2022 Accelerated</small></div></a>",
"target": [
".logo[href=\"#\"]"
]
}
]
},
{
"id": "meta-viewport",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT"
],
"description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
"help": "Zooming and scaling must not be disabled",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/meta-viewport?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "meta-viewport",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "<meta> tag does not disable zooming on mobile devices"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">",
"target": [
"meta[name=\"viewport\"]"
]
}
]
},
{
"id": "nested-interactive",
"impact": null,
"tags": [
"cat.keyboard",
"wcag2a",
"wcag412",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.4.1.2"
],
"description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
"help": "Interactive controls must not be nested",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/nested-interactive?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "no-focusable-content",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have focusable descendants"
}
],
"all": [],
"none": [],
"impact": null,
"html": "<img src=\"https://placehold.co/52x52/4F46E5/FFFFFF?text=A&font=poppins\" alt=\"Ascendly logo\">",
"target": [
"img[alt=\"Ascendly logo\"]"
]
}
]
},
{
"id": "target-size",
"impact": null,
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"description": "Ensure touch targets have sufficient size and space",
"help": "All touch targets must be 24px large, or leave sufficient space",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/target-size?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "target-size",
"data": {
"minSize": 24,
"width": 224.7,
"height": 52.6
},
"relatedNodes": [],
"impact": "serious",
"message": "Control has sufficient size (224.7px by 52.6px, should be at least 24px by 24px)"
},
{
"id": "target-offset",
"data": {
"closestOffset": 24,
"minOffset": 24
},
"relatedNodes": [],
"impact": "serious",
"message": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of 24px which is at least 24px."
}
],
"all": [],
"none": [],
"impact": null,
"html": "<a class=\"logo\" href=\"#\"><img src=\"https://placehold.co/52x52/4F46E5/FFFFFF?text=A&font=poppins\" alt=\"Ascendly logo\"><div><strong>Ascend<span>ly</span></strong><small>Career \u2022 Accelerated</small></div></a>",
"target": [
".logo[href=\"#\"]"
]
}
]
}
],
"incomplete": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": null,
"bgColor": null,
"contrastRatio": 0,
"fontSize": "9.8pt (13px)",
"fontWeight": "bold",
"messageKey": "bgGradient",
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"eyebrow\">\u2605 Rated 4.9/5 by 84,000+ professionals</span>",
"target": [
".eyebrow"
]
},
{
"html": "<section class=\"hero\">",
"target": [
".hero"
]
}
],
"impact": "serious",
"message": "Element's background color could not be determined due to a background gradient"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"eyebrow\">\u2605 Rated 4.9/5 by 84,000+ professionals</span>",
"target": [
".eyebrow"
],
"failureSummary": "Fix any of the following:\n Element's background color could not be determined due to a background gradient"
}
]
}
],
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT"
],
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
"help": "Elements must meet minimum color contrast ratio thresholds",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#0fb5a8",
"bgColor": "#ffffff",
"contrastRatio": 2.56,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<header>",
"target": [
"header"
]
},
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.56 (foreground color: #0fb5a8, background color: #ffffff, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<small>Career \u2022 Accelerated</small>",
"target": [
"small"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.56 (foreground color: #0fb5a8, background color: #ffffff, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">NEW</span>",
"target": [
".mini-job:nth-child(2) > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">NEW</span>",
"target": [
".mini-job:nth-child(2) > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#94a3b8",
"bgColor": "#ffffff",
"contrastRatio": 2.56,
"fontSize": "9.0pt (12px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"hero-card\">",
"target": [
".hero-card"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.56 (foreground color: #94a3b8, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p style=\"font-size:12px;color:#94A3B8;text-align:center;margin-top:10px\">No credit card required \u2022 Cancel anytime \u2022 GDPR compliant</p>",
"target": [
".hero-card > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.56 (foreground color: #94a3b8, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#64748b",
"bgColor": "#f6f7fb",
"contrastRatio": 4.44,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.44 (foreground color: #64748b, background color: #f6f7fb, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Every listing is verified by our team. Salaries are transparent, employers respond within 5 working days on average, and your references are only shared with your permission.</p>",
"target": [
"#jobs > .container > .sec-head > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.44 (foreground color: #64748b, background color: #f6f7fb, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(1) > .job-top > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(1) > .job-top > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(2) > .job-top > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(2) > .job-top > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(3) > .job-top > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(3) > .job-top > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(4) > .job-top > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(4) > .job-top > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(5) > .job-top > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(5) > .job-top > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(6) > .job-top > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">\u25cf Hiring now</span>",
"target": [
".job:nth-child(6) > .job-top > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"up\">\u2191 34%</span>",
"target": [
".trend:nth-child(2) > .up"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"up\">\u2191 21%</span>",
"target": [
".trend:nth-child(3) > .up"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"up\">\u2191 19%</span>",
"target": [
".trend:nth-child(4) > .up"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"up\">\u2191 12%</span>",
"target": [
".trend:nth-child(5) > .up"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ffffff",
"contrastRatio": 3.76,
"fontSize": "10.5pt (14px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<div class=\"sidebar-card\">",
"target": [
".sidebar-card:nth-child(1)"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"up\">\u2191 9%</span>",
"target": [
".trend:nth-child(6) > .up"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #059669, background color: #ffffff, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0fb5a8",
"contrastRatio": 2.56,
"fontSize": "11.3pt (15px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-teal\" style=\"width:100%;justify-content:center\" onclick=\"subscribeAlert()\">Create Job Alert</button>",
"target": [
"button[onclick=\"subscribeAlert()\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.56 (foreground color: #ffffff, background color: #0fb5a8, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-teal\" style=\"width:100%;justify-content:center\" onclick=\"subscribeAlert()\">Create Job Alert</button>",
"target": [
"button[onclick=\"subscribeAlert()\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.56 (foreground color: #ffffff, background color: #0fb5a8, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">RESUME GUIDE</span>",
"target": [
".feature:nth-child(1) > div > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">RESUME GUIDE</span>",
"target": [
".feature:nth-child(1) > div > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ea580c",
"bgColor": "#fff7ed",
"contrastRatio": 3.35,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\" style=\"background:#FFF7ED;color:#EA580C\">INTERVIEW PREP</span>",
"target": [
"#interview > div > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.35 (foreground color: #ea580c, background color: #fff7ed, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\" style=\"background:#FFF7ED;color:#EA580C\">INTERVIEW PREP</span>",
"target": [
"#interview > div > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.35 (foreground color: #ea580c, background color: #fff7ed, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ffffff",
"bgColor": "#0fb5a8",
"contrastRatio": 2.56,
"fontSize": "11.3pt (15px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<button class=\"btn btn-teal\" onclick=\"calcScore()\">Calculate My Score \u2192</button>",
"target": [
"button[onclick=\"calcScore()\"]"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 2.56 (foreground color: #ffffff, background color: #0fb5a8, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<button class=\"btn btn-teal\" onclick=\"calcScore()\">Calculate My Score \u2192</button>",
"target": [
"button[onclick=\"calcScore()\"]"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 2.56 (foreground color: #ffffff, background color: #0fb5a8, font size: 11.3pt (15px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">YOUR RESULT</span>",
"target": [
".result > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">YOUR RESULT</span>",
"target": [
".result > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#64748b",
"bgColor": "#f6f7fb",
"contrastRatio": 4.44,
"fontSize": "12.0pt (16px)",
"fontWeight": "normal",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<body>",
"target": [
"body"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 4.44 (foreground color: #64748b, background color: #f6f7fb, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<p>Written by recruiters, hiring managers, and career coaches \u2014 not generic AI content. Practical, honest, and updated for the 2026 job market.</p>",
"target": [
"#advice > .container > .sec-head > div > p"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 4.44 (foreground color: #64748b, background color: #f6f7fb, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#059669",
"bgColor": "#ecfdf5",
"contrastRatio": 3.57,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\">SALARY</span>",
"target": [
".article:nth-child(2) > div > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\">SALARY</span>",
"target": [
".article:nth-child(2) > div > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.57 (foreground color: #059669, background color: #ecfdf5, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
},
{
"any": [
{
"id": "color-contrast",
"data": {
"fgColor": "#ea580c",
"bgColor": "#fff7ed",
"contrastRatio": 3.35,
"fontSize": "8.3pt (11px)",
"fontWeight": "bold",
"messageKey": null,
"expectedContrastRatio": "4.5:1",
"shadowColor": null
},
"relatedNodes": [
{
"html": "<span class=\"badge\" style=\"background:#FFF7ED;color:#EA580C\">REFERENCES</span>",
"target": [
".article:nth-child(3) > div > .badge"
]
}
],
"impact": "serious",
"message": "Element has insufficient color contrast of 3.35 (foreground color: #ea580c, background color: #fff7ed, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
],
"all": [],
"none": [],
"impact": "serious",
"html": "<span class=\"badge\" style=\"background:#FFF7ED;color:#EA580C\">REFERENCES</span>",
"target": [
".article:nth-child(3) > div > .badge"
],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.35 (foreground color: #ea580c, background color: #fff7ed, font size: 8.3pt (11px), font weight: bold). Expected contrast ratio of 4.5:1"
}
]
},
{
"id": "image-alt",
"impact": "critical",
"tags": [
"cat.text-alternatives",
"wcag2a",
"wcag111",
"section508",
"section508.22.a",
"TTv5",
"TT7.a",
"TT7.b",
"EN-301-549",
"EN-9.1.1.1",
"ACT"
],
"description": "Ensure <img> elements have alternative text or a role of none or presentation",
"help": "Images must have alternative text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/image-alt?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/600/360?random=21\">",
"target": [
".feature:nth-child(1) > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/600/360?random=32\">",
"target": [
".feature:nth-child(2) > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/600/360?random=45\">",
"target": [
"#interview > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/700/400?random=8\">",
"target": [
".article:nth-child(1) > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/600/400?random=19\">",
"target": [
".article:nth-child(2) > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/600/400?random=27\">",
"target": [
".article:nth-child(3) > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://i.pravatar.cc/100?u=sophie\">",
"target": [
".testi:nth-child(1) > .person > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://i.pravatar.cc/100?u=marcus\">",
"target": [
".testi:nth-child(2) > .person > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://i.pravatar.cc/100?u=amara\">",
"target": [
".testi:nth-child(3) > .person > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://picsum.photos/600/340?random=55\" style=\"width:100%;border-radius:18px;margin-top:20px;object-fit:cover\">",
"target": [
".faq > div:nth-child(1) > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
},
{
"any": [
{
"id": "has-alt",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an alt attribute"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<img src=\"https://placehold.co/44x44/4F46E5/FFFFFF?text=A&font=poppins\">",
"target": [
".foot > div:nth-child(1) > .logo > img"
],
"failureSummary": "Fix any of the following:\n Element does not have an alt attribute\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
},
{
"id": "link-name",
"impact": "serious",
"tags": [
"cat.name-role-value",
"wcag2a",
"wcag244",
"wcag412",
"section508",
"section508.22.a",
"TTv5",
"TT6.a",
"EN-301-549",
"EN-9.2.4.4",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure links have discernible text",
"help": "Links must have discernible text",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/link-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\"><i class=\"fab fa-linkedin-in\"></i></a>",
"target": [
".social > a[href=\"#\"]:nth-child(1)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\"><i class=\"fab fa-x-twitter\"></i></a>",
"target": [
".social > a[href=\"#\"]:nth-child(2)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\"><i class=\"fab fa-instagram\"></i></a>",
"target": [
".social > a[href=\"#\"]:nth-child(3)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
},
{
"any": [
{
"id": "has-visible-text",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element does not have text that is visible to screen readers"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "serious",
"message": "Element has no title attribute"
}
],
"all": [],
"none": [
{
"id": "focusable-no-name",
"data": null,
"relatedNodes": [],
"impact": "serious",
"message": "Element is in tab order and does not have accessible text"
}
],
"impact": "serious",
"html": "<a href=\"#\"><i class=\"fab fa-youtube\"></i></a>",
"target": [
".social > a[href=\"#\"]:nth-child(4)"
],
"failureSummary": "Fix all of the following:\n Element is in tab order and does not have accessible text\n\nFix any of the following:\n Element does not have text that is visible to screen readers\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute"
}
]
},
{
"id": "select-name",
"impact": "critical",
"tags": [
"cat.forms",
"wcag2a",
"wcag412",
"section508",
"section508.22.n",
"TTv5",
"TT5.c",
"EN-301-549",
"EN-9.4.1.2",
"ACT"
],
"description": "Ensure select element has an accessible name",
"help": "Select element must have an accessible name",
"helpUrl": "https://dequeuniversity.com/rules/axe/4.10/select-name?application=axeAPI",
"nodes": [
{
"any": [
{
"id": "implicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an implicit (wrapped) <label>"
},
{
"id": "explicit-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element does not have an explicit <label>"
},
{
"id": "aria-label",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-label attribute does not exist or is empty"
},
{
"id": "aria-labelledby",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty"
},
{
"id": "non-empty-title",
"data": {
"messageKey": "noAttr"
},
"relatedNodes": [],
"impact": "critical",
"message": "Element has no title attribute"
},
{
"id": "presentational-role",
"data": null,
"relatedNodes": [],
"impact": "critical",
"message": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
],
"all": [],
"none": [],
"impact": "critical",
"html": "<select id=\"loc\"><option>All Locations</option><option>London</option><option>New York</option><option>Remote</option><option>Berlin</option></select>",
"target": [
"#loc"
],
"failureSummary": "Fix any of the following:\n Element does not have an implicit (wrapped) <label>\n Element does not have an explicit <label>\n aria-label attribute does not exist or is empty\n aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n Element has no title attribute\n Element's default semantics were not overridden with role=\"none\" or role=\"presentation\""
}
]
}
],
"coverage": {
"contract": "main-document-vertical-scroll",
"complete": true,
"positions": [
{
"y": 0,
"height": 5994
},
{
"y": 576,
"height": 5994
},
{
"y": 1152,
"height": 5994
},
{
"y": 1728,
"height": 5994
},
{
"y": 2304,
"height": 5994
},
{
"y": 2880,
"height": 5994
},
{
"y": 3456,
"height": 5994
},
{
"y": 4032,
"height": 5994
},
{
"y": 4608,
"height": 5994
},
{
"y": 5184,
"height": 5994
},
{
"y": 5274,
"height": 5994
}
],
"scans": 12,
"max_states": 512,
"settle_ms": 5000,
"page_timeout_seconds": 150,
"layout_stability": "consecutive 100ms size samples within one CSS pixel",
"animation_settling": "finite animations present when scroll resources are ready finish or are cancelled",
"interactive_states": "not exercised",
"horizontal_scroll": "not exercised"
}
}
System Prompt
You are a lead web developer at a top digital agency, tasked with creating a one-page website for a new client based on the given specifications, delivered as an HTML file. First non-whitespace char '<', last non-whitespace char '>'. Use the following services to generate placeholder images where needed:
- placehold.co (text): https://placehold.co/[{w}x{h}|{size}][/{bg-color}/{text-color}]?text={text}&font=[lato|lora|montserrat|noto sans|open sans|oswald|playfair display|poppins|pt sans|raleway|roboto|source sans|source sans pro]
- picsum.photos (photos): https://picsum.photos/[{w}/{h}|{size}]?[grayscale][&blur={1-10}]
- pravatar.cc (avatars): https://i.pravatar.cc/{size}?u={identifier}
Choose sizes appropriate to layout.
User Prompt
Create a **complete, polished, production-quality** primary web page for a new client in the "Careers" sector.
Your goal is to generate the full HTML code for a page that is not just functional but also visually compelling, content-rich, and feels like a finished product ready for launch.
**Client & Category:**
- Industry: "Careers"
- Description: Job boards, career advice, resume tips, and professional resources.
**Your Creative Task:**
1. **Invent:** Create a unique, professional-sounding site name and a strong tagline fitting the "Careers" category.
2. **Define Page:** Determine the most effective primary page type (e.g., homepage, service landing page, category portal) to showcase this fictional entity.
3. **Design:** Develop an opinionated, modern, and professional layout. Make distinct choices about structure and flow.
**Content & Structure Requirements (Deliver a COMPLETE page):**
- **Overall:** The final page must feel substantial and complete, with realistic amounts of text (multiple paragraphs per section where appropriate, avoid single sentences), well-integrated placeholder images, and logical flow. It should look like a real website a business would proudly use.
- **HEADER:** Include the invented site name, tagline, a logo placeholder image, and a primary navigation bar. Ensure the navigation has **at least 5-7 clearly defined, relevant links** including: "Career Advice", "Resources", "Interview Prep".
- **MAIN CONTENT:** Structure this area with **at least 3-4 distinct, well-developed sections**.
- Address key topics relevant to the "Careers" category. Consider themes similar to: "Resume Guide", "Professional Networking", "Salary Insights".
- **Content Depth:** Populate each section with **substantial, realistic text** (multiple sentences/paragraphs). Use authentic industry language and terminology like: "career trajectory", "personal branding", "references".
- **Visuals:** Integrate relevant placeholder images logically within the content sections.
- **Calls to Action:** Include clear and contextually relevant CTAs. Use strong verbs similar to: "Start Application", "Create Profile", "Connect Now".
- **ENGAGEMENT (Recommended):** Strongly consider incorporating **one meaningful interactive element** that would genuinely benefit a user in the "Careers" sector. Ideas similar but not limited to: "skills assessment".
- **SIDEBAR (Optional):** If your design includes a sidebar, populate it with **useful, relevant content**. Ideas: "recent posts", "featured positions", "hiring trends".
- **FOOTER:** Include a professional footer with invented contact details, copyright (current year), social media links, and standard links (Privacy, Terms).
- **MODERN WEB PATTERNS:** Include modern web patterns like testimonial cards, feature grids, or FAQ accordions where appropriate.