Unit and integration tests

Jest HTML Report

Generated Oct 23, 2026, 9:57:15 AM

92 Test suites
955 Total tests
955 Passed
0 Failed
100.00% Pass rate
762.77s Duration

Test Suites

tests/jest/certificates.test.js passed 52/52 passed 5.13s
Test Status Duration
Certificate Data Validation Certificate Count should have exactly 35 certificates passed 18ms
Certificate Data Validation Certificate Structure all certificates should have required fields passed 130ms
Certificate Data Validation Certificate Structure all certificate IDs should be unique and sequential passed 7ms
Certificate Data Validation Certificate Structure all titles should be non-empty strings passed 28ms
Certificate Data Validation Certificate Structure all categories should be non-empty strings passed 35ms
Certificate Data Validation File Paths all images should start with "images/" passed 35ms
Certificate Data Validation File Paths all thumbs should start with "images/thumbs/" passed 27ms
Certificate Data Validation File Paths image and thumb filenames should match passed 23ms
Certificate Data Validation File Paths all image files should exist passed 18ms
Certificate Data Validation File Paths all thumb files should exist passed 14ms
Certificate Data Validation LinkedIn URL Sources should have certificates from multiple sources passed 70ms
Certificate Data Validation LinkedIn URL Sources Udemy certificates should have correct URL format passed 12ms
Certificate Data Validation LinkedIn URL Sources LinkedIn CDN certificates should have correct URL format passed 19ms
Certificate Data Validation LinkedIn URL Sources Skilljar certificates should have correct URL format passed 1ms
Certificate Data Validation Certificate Title Uniqueness all certificate titles should be unique passed 7ms
Certificate Data Validation Category Distribution should have at least 3 different categories passed 1ms
Certificate Data Validation Category Distribution categories should be properly formatted (capitalized) passed 26ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #1 - Introduction to SQL passed 13ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #2 - Agentic AI for Developers passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #3 - Cybersecurity at Work (2020) passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #4 - Foundations of Building in Board passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #5 - Automated Tests with Cypress - Advanced passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #6 - Design Elements of Automated Tests passed 10ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #7 - Playwright UI + API (10h course) passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #8 - AWS for Developers: DynamoDB passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #9 - Learning Docker passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #10 - Best Practices in Test Automation with Cypress passed 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #11 - E2E Tests With Cypress passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #12 - Playwright Automation passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #13 - GraphQL Essential Training passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #14 - End-to-End JavaScript Testing with Cypress.io passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #15 - API Testing Foundations passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #16 - Gherkin Language - The Master Guide passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #17 - Learning Selenium passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #18 - Test Automation Foundations passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #19 - Working with Difficult People passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #20 - Automation Selenium WebDriver + Java passed 3ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #21 - Mobile Automation: Appium Cucumber Android & iOS + Jenkins passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #22 - Agile Management with Scrum passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #23 - Automation Test with Cypress - Basics passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #24 - Automation Test with Cypress - Intermediary passed 4ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #25 - Web Design for Beginners: Real World Coding in HTML & CSS passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #26 - Software Testing: Becoming an Expert passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #27 - Postman Introduction passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #28 - The Python Bibleā„¢ | Everything You Need to Program in Python passed 9ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #29 - GitHub Intensive Course passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #30 - Regular Expressions passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #31 - Python for Beginners (Python 3) passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #32 - Cypress - Modern Automation Testing from Scratch + Frameworks passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #33 - Swift 5 Programming For Beginners passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #34 - Certified ISTQB Agile Tester Foundation Level passed 15ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #35 - GitHub Ultimate: Master Git and GitHub - Beginner to Expert passed 8ms
tests/jest/js-certificates-unit.test.js passed 52/52 passed 6.30s
Test Status Duration
certificates.js - Unit Tests File Structure and Exports file exists and is readable passed 45ms
certificates.js - Unit Tests File Structure and Exports contains certificate data array passed 9ms
certificates.js - Unit Tests File Structure and Exports contains CertificateModal class definition passed 1ms
certificates.js - Unit Tests File Structure and Exports contains getBasePath function passed 9ms
certificates.js - Unit Tests File Structure and Exports exports to window object passed 1ms
certificates.js - Unit Tests Certificate Data Validation has exactly 35 certificates passed 13ms
certificates.js - Unit Tests Certificate Data Validation all certificates have required properties passed 172ms
certificates.js - Unit Tests Certificate Data Validation all image paths use relative paths without ../ passed 45ms
certificates.js - Unit Tests Certificate Data Validation all thumb paths are in thumbs folder passed 14ms
certificates.js - Unit Tests Certificate Data Validation LinkedIn URLs use HTTPS protocol passed 16ms
certificates.js - Unit Tests Certificate Data Validation all categories are from valid list passed 16ms
certificates.js - Unit Tests Input Sanitization Logic escapeHtml properly handles special characters passed 2ms
certificates.js - Unit Tests Input Sanitization Logic validates inputs before processing passed 0ms
certificates.js - Unit Tests CertificateModal Class Methods has constructor method passed 5ms
certificates.js - Unit Tests CertificateModal Class Methods has all required methods passed 11ms
certificates.js - Unit Tests Navigation Logic uses modulo arithmetic for wrap-around passed 0ms
certificates.js - Unit Tests Navigation Logic handles both forward and backward navigation passed 0ms
certificates.js - Unit Tests Navigation Logic prevents negative index with + certificates.length passed 19ms
certificates.js - Unit Tests Error Handling checks if container exists passed 1ms
certificates.js - Unit Tests Error Handling logs error when container missing passed 13ms
certificates.js - Unit Tests Error Handling has early return on error passed 1ms
certificates.js - Unit Tests Error Handling warns when modal not initialized passed 1ms
certificates.js - Unit Tests Event Handling handles close button click passed 1ms
certificates.js - Unit Tests Event Handling handles navigation buttons passed 0ms
certificates.js - Unit Tests Event Handling implements keyboard navigation passed 1ms
certificates.js - Unit Tests Event Handling closes modal on background click passed 0ms
certificates.js - Unit Tests Accessibility includes ARIA labels for buttons passed 1ms
certificates.js - Unit Tests Accessibility implements lazy loading for images passed 0ms
certificates.js - Unit Tests Accessibility uses semantic button elements passed 13ms
certificates.js - Unit Tests UI State Management (Disabled Modal) clears active class for visibility passed 1ms
certificates.js - Unit Tests UI State Management (Disabled Modal) resets body scroll overflow passed 0ms
certificates.js - Unit Tests UI State Management (Disabled Modal) switches between grid and viewer display passed 9ms
certificates.js - Unit Tests Code Quality uses strict equality (===) passed 0ms
certificates.js - Unit Tests Code Quality uses const for immutable values passed 13ms
certificates.js - Unit Tests Code Quality uses template literals for HTML generation passed 1ms
certificates.js - Unit Tests Code Quality includes code documentation comments passed 12ms
certificates.js - Unit Tests Initialization waits for DOMContentLoaded passed 1ms
certificates.js - Unit Tests Initialization creates global window reference passed 0ms
certificates.js - Unit Tests Initialization provides fallback helper function passed 5ms
certificates.js - Unit Tests Initialization logs initialization messages passed 1ms
certificates.js - Unit Tests Functional Tests - getBasePath returns empty string for root path passed 61ms
certificates.js - Unit Tests Functional Tests - getBasePath returns ../ for /pages/ path passed 11ms
certificates.js - Unit Tests Functional Tests - getBasePath returns ../../ for nested /pages/folder/ path passed 7ms
certificates.js - Unit Tests Functional Tests - escapeHtml escapes HTML special characters passed 17ms
certificates.js - Unit Tests Functional Tests - escapeHtml handles empty string passed 1ms
certificates.js - Unit Tests Functional Tests - escapeHtml handles normal text without special chars passed 1ms
certificates.js - Unit Tests Image Path Handling uses basePath for image sources passed 9ms
certificates.js - Unit Tests Image Path Handling generates correct paths for thumbnails passed 1ms
certificates.js - Unit Tests Image Path Handling generates correct paths for full images passed 0ms
certificates.js - Unit Tests LinkedIn Integration includes LinkedIn verification links passed 15ms
certificates.js - Unit Tests LinkedIn Integration handles certificates with LinkedIn URLs passed 1ms
certificates.js - Unit Tests LinkedIn Integration LinkedIn links open in new tab passed 0ms
src/utils/inBrowserTestRunner.test.js passed 50/50 passed 6.50s
Test Status Duration
createTestSuites structure exposes every suite and test with its translation keys passed 52ms
dom-structure suite root mounted fails when #root is missing passed 177ms
dom-structure suite root mounted fails when #root is empty passed 61ms
dom-structure suite root mounted reports the number of top-level nodes passed 24ms
dom-structure suite landmarks lists every missing landmark passed 66ms
dom-structure suite landmarks reports only the missing one for <header></header><main></main> passed 15ms
dom-structure suite landmarks reports only the missing one for <nav></nav><footer></footer> passed 20ms
dom-structure suite landmarks reports only the missing one for <div role="main"></div><div role="contentinfo"></div> passed 8ms
dom-structure suite landmarks passes when all are present passed 6ms
dom-structure suite safe links accepts noopener or noreferrer in any case passed 17ms
dom-structure suite safe links lists at most three insecure hrefs passed 18ms
dom-structure suite image alt accepts alt or aria-hidden passed 27ms
dom-structure suite image alt fails on images with neither alt nor aria-hidden="true" passed 11ms
a11y suite heading hierarchy requires an h1 passed 19ms
a11y suite heading hierarchy rejects empty or whitespace-only headings passed 24ms
a11y suite heading hierarchy quotes the first 30 trimmed characters of the h1 passed 19ms
a11y suite button labels accepts text, aria-label, aria-labelledby or title passed 50ms
a11y suite button labels treats whitespace-only labels as missing passed 22ms
a11y suite dialog roles requires aria-modal="true" passed 20ms
a11y suite dialog roles passes for modal dialogs passed 11ms
i18n suite initialized fails without a ready instance (null) passed 2ms
i18n suite initialized fails without a ready instance ({"isInitialized": false}) passed 16ms
i18n suite initialized reports the current language passed 5ms
i18n suite supported language accepts en passed 2ms
i18n suite supported language accepts pt-BR passed 1ms
i18n suite supported language accepts es passed 1ms
i18n suite supported language falls back to en without an instance passed 8ms
i18n suite supported language rejects other languages passed 1ms
i18n suite missing keys passes when every sample key resolves passed 7ms
i18n suite missing keys reports keys that echo back or are empty passed 7ms
i18n suite missing keys reports every key without an instance passed 8ms
network suite edge asset simulates a pass when fetch is unavailable passed 1ms
network suite edge asset HEAD-requests the favicon without caching and reports timing passed 16ms
network suite edge asset accepts a 304 response passed 7ms
network suite edge asset rejects failing HTTP statuses passed 10ms
network suite edge asset treats network errors as a completed request passed 1ms
network suite edge asset tolerates errors without a message passed 17ms
network suite secure context passes on localhost passed 8ms
performance suite navigation timing reports TTFB and DOM content loaded passed 1ms
performance suite navigation timing records a baseline without entries ([]) passed 8ms
performance suite navigation timing records a baseline without entries (undefined) passed 2ms
performance suite raf simulates a pass when requestAnimationFrame is unavailable passed 1ms
performance suite raf passes at exactly the 200ms threshold passed 10ms
performance suite raf rounds the healthy frame tick passed 1ms
performance suite raf rejects frames slower than 200ms passed 1ms
executeTest returns a passed result with the run message and rounded duration passed 10ms
executeTest falls back to a default message and a minimum 1ms duration passed 5ms
executeTest returns a failed result with the error message passed 1ms
executeTest uses a default error and minimum duration when the error has no message passed 6ms
executeTest falls back to Date.now when performance is unavailable passed 1ms
src/components/test-results/CiMetrics.test.jsx passed 18/18 passed 9.96s
Test Status Duration
CiMetrics layout renders three cards with icons and titles passed 337ms
CiMetrics layout shows spinners while loading passed 88ms
CiMetrics layout shows empty states without data passed 45ms
Jest card renders stats, computed rate and report link passed 749ms
Jest card lists suites with badges and toggles the list passed 391ms
Jest card prefers an explicit pass rate and falls back on missing counts passed 115ms
Jest card reports 100% for an empty run passed 86ms
Jest card rate 95 uses the success tone passed 137ms
Jest card rate 94.99 uses the warning tone passed 69ms
Jest card rate 80 uses the warning tone passed 89ms
Jest card rate 79.99 uses the error tone passed 77ms
E2E card counts steps across flows passed 248ms
E2E card renders flows with steps that expand individually passed 452ms
E2E card falls back to test counts when no flow has steps passed 121ms
E2E card defaults missing counts and flows to zero passed 77ms
E2E card uses passed counts when only failures are reported passed 78ms
Coverage card renders each metric with tone, fraction and bar passed 199ms
Coverage card scores just below 50% as errors passed 146ms
src/components/Contact.test.jsx passed 11/11 passed 9.71s
Test Status Duration
Contact Component renders contact form with correct access key passed 1.90s
Contact Component renders contact banner and section structure with expected styling and classes passed 178ms
Contact Component handles successful submission passed 790ms
Contact Component prevents submission if too fast (bot check) passed 345ms
Contact Component handles API error (success: false) passed 502ms
Contact Component handles network error passed 425ms
Contact Component prevents submission if honeypot is filled (bot check) passed 244ms
Contact Component logs error when Web3Forms key is not configured passed 44ms
Contact Component blocks submission until the captcha is solved passed 308ms
Contact Component blocks submission when the captcha token expires passed 554ms
Contact Component sends the captcha token and resets the captcha after submitting passed 882ms
src/components/Navbar.test.jsx passed 20/20 passed 11.68s
Test Status Duration
Navbar Component marks the link for the current page as active passed 1.55s
Navbar Component renders brand logo and text passed 217ms
Navbar Component renders navigation links passed 225ms
Navbar Component renders social, theme toggle, and CTA links passed 203ms
Navbar Component toggles theme on click in navbar passed 365ms
Navbar Component switches language from the compact navbar selector passed 833ms
Navbar Component accepts onOpenCertificates callback prop passed 192ms
Navbar Component calls onOpenContact when Send me a message button is clicked passed 146ms
Navbar Component renders mobile menu toggle button passed 130ms
Navbar Component toggles mobile menu on click passed 697ms
Navbar Component closes mobile menu when a nav link is clicked passed 621ms
Navbar Component closes mobile menu when backdrop is clicked passed 573ms
Navbar Component closes mobile menu on Escape key passed 618ms
Navbar Component calculates and sets navigation height passed 241ms
Navbar Component applies correct styles to mobile menu and overlay when open passed 244ms
Navbar Component handles ResizeObserver when available passed 123ms
Navbar Component home link scroll-to-top scrolls to top when already on home and the page is scrolled down passed 230ms
Navbar Component home link scroll-to-top leaves navigation alone when the page is at the top passed 243ms
Navbar Component home link scroll-to-top navigates instead of scrolling when on another route passed 206ms
Navbar Component handles missing ResizeObserver gracefully passed 89ms
src/components/test-results/TrendHistory.test.jsx passed 12/12 passed 7.32s
Test Status Duration
TrendHistory renders nothing while loading and an empty state under two runs passed 288ms
TrendHistory shows the latest run, five sparklines and the unstable list passed 760ms
TrendHistory hovering a sparkline focuses that run in every tile passed 509ms
TrendHistory exposes the same data as a table passed 426ms
TrendHistory details draws exact sparkline paths, areas and markers passed 163ms
TrendHistory details tiles show the latest run with pass/fail tones passed 146ms
TrendHistory details hovering picks the nearest run and draws a cursor where data exists passed 353ms
TrendHistory details ignores hover on a sparkline without layout width passed 128ms
TrendHistory details lists unstable tests by failure count with their layer passed 134ms
TrendHistory details says when nothing failed and renders an empty sparkline without data passed 117ms
TrendHistory details table rows format each metric and date passed 184ms
TrendHistory details a non-array history shows the empty state passed 21ms
src/components/Articles.filters.test.jsx passed 29/29 passed 17.53s
Test Status Duration
Articles stats and listing summarises articles, minutes, venues and tags passed 682ms
Articles stats and listing lists internal posts first and features only the first card passed 196ms
Articles stats and listing renders theme tabs with icons and counts passed 794ms
Articles stats and listing sorts tag pills by priority then alphabetically passed 170ms
Articles card mapping maps an internal post with defaults derived from its tags passed 197ms
Articles card mapping prefers markdown metadata and legacy fields when present passed 132ms
Articles card mapping falls back to Cypress defaults for a bare post passed 175ms
Articles card mapping maps external articles through translation keys passed 134ms
Articles card mapping uses localized post fields for the active language passed 307ms
Articles theme filters Home Assistant tab filters articles and syncs the URL passed 1.37s
Articles theme filters Cypress tab filters articles and syncs the URL passed 725ms
Articles theme filters AI & LLM tab filters articles and syncs the URL passed 730ms
Articles theme filters Architecture & Auth tab filters articles and syncs the URL passed 650ms
Articles tag filters a tag pill filters, opens the disclosure and updates the URL passed 586ms
Articles tag filters a home tag also selects the Home Assistant theme passed 554ms
Articles tag filters cypress tag matches tags containing cypress passed 140ms
Articles tag filters tags match ignoring whitespace passed 108ms
Articles tag filters a home tag in the URL selects the Home Assistant theme passed 160ms
Articles tag filters an explicit theme in the URL wins over a home tag passed 198ms
Articles tag filters toggling the disclosure keeps it open passed 134ms
Articles search query "zigbee" matches html, description, title, tags and theme passed 334ms
Articles search query "SMART" matches html, description, title, tags and theme passed 292ms
Articles search query "bare" matches html, description, title, tags and theme passed 277ms
Articles search query "auth0" matches html, description, title, tags and theme passed 301ms
Articles search query "ai" matches html, description, title, tags and theme passed 220ms
Articles search search is prefilled from the URL and cleared by the clear button passed 235ms
Articles search whitespace-only searches do not filter passed 195ms
Articles search no matches shows the empty state, which clears every filter passed 401ms
Articles search the empty state names the tag when there is no query passed 181ms
tests/jest/js-certificates-modal.test.js passed 39/39 passed 17.91s
Test Status Duration
CertificateModal - Instance Behavior open() method (Disabled) does not add active class to container when modal is disabled passed 700ms
CertificateModal - Instance Behavior open() method (Disabled) does not set body overflow to hidden when modal is disabled passed 448ms
CertificateModal - Instance Behavior open() method (Disabled) does not call showGrid when modal is disabled passed 362ms
CertificateModal - Instance Behavior close() method removes active class from container passed 302ms
CertificateModal - Instance Behavior close() method restores body overflow passed 307ms
CertificateModal - Instance Behavior showGrid() method displays grid element passed 314ms
CertificateModal - Instance Behavior showGrid() method hides viewer element passed 277ms
CertificateModal - Instance Behavior openCertificate(index) method sets currentIndex to provided index passed 295ms
CertificateModal - Instance Behavior openCertificate(index) method hides grid and displays viewer passed 308ms
CertificateModal - Instance Behavior openCertificate(index) method calls updateViewer after setting index passed 428ms
CertificateModal - Instance Behavior navigate(direction) method increments index when direction is 1 passed 314ms
CertificateModal - Instance Behavior navigate(direction) method decrements index when direction is -1 passed 492ms
CertificateModal - Instance Behavior navigate(direction) method wraps forward at end (modulo logic) passed 335ms
CertificateModal - Instance Behavior navigate(direction) method wraps backward at start (modulo logic) passed 297ms
CertificateModal - Instance Behavior navigate(direction) method calls updateViewer after navigation passed 247ms
CertificateModal - Instance Behavior navigate(direction) method handles multiple navigations correctly passed 246ms
CertificateModal - Instance Behavior updateViewer() method updates image src with certificate image path passed 271ms
CertificateModal - Instance Behavior updateViewer() method updates image alt text with certificate title passed 299ms
CertificateModal - Instance Behavior updateViewer() method updates title element with certificate title passed 256ms
CertificateModal - Instance Behavior updateViewer() method updates category element with certificate category passed 300ms
CertificateModal - Instance Behavior updateViewer() method updates currentCert counter passed 386ms
CertificateModal - Instance Behavior updateViewer() method shows LinkedIn button when linkedinUrl exists passed 203ms
CertificateModal - Instance Behavior updateViewer() method hides LinkedIn button when linkedinUrl is missing passed 257ms
CertificateModal - Instance Behavior updateViewer() method updates viewFullBtn href with certificate image path passed 284ms
CertificateModal - Instance Behavior updateViewer() method applies basePath to image src and viewFullBtn passed 405ms
CertificateModal - Instance Behavior Event listener attachment attachEventListeners is called during init passed 461ms
CertificateModal - Instance Behavior Event listener attachment close button triggers close() passed 197ms
CertificateModal - Instance Behavior Event listener attachment next button navigates forward passed 227ms
CertificateModal - Instance Behavior Event listener attachment prev button navigates backward passed 239ms
CertificateModal - Instance Behavior Event listener attachment backToGrid button shows grid passed 203ms
CertificateModal - Instance Behavior Event listener attachment clicking modal background closes modal passed 182ms
CertificateModal - Instance Behavior Event listener attachment Escape key closes active modal passed 215ms
CertificateModal - Instance Behavior Event listener attachment navigate methods work when called directly passed 193ms
CertificateModal - Instance Behavior Event listener attachment showGrid method works when called directly passed 231ms
CertificateModal - Instance Behavior Event listener attachment keyboard events ignored when modal is not active passed 233ms
CertificateModal - Instance Behavior Render grid view grid items are created for certificates passed 225ms
CertificateModal - Instance Behavior Render grid view grid items are clickable to open certificate passed 282ms
CertificateModal - Instance Behavior Constructor edge cases returns early when modal container not found passed 219ms
CertificateModal - Instance Behavior Constructor edge cases initializes certificates array from module passed 253ms
tests/jest/security-improvements.test.js passed 31/31 passed 3.38s
Test Status Duration
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality has file-level JSDoc documentation passed 64ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality defines Certificate typedef passed 10ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality getBasePath has JSDoc with examples passed 7ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality escapeHtml has JSDoc with security note passed 1ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality certificates array has JSDoc passed 2ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality CertificateModal class has JSDoc passed 5ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality constructor has parameter documentation passed 2ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality all major methods have JSDoc passed 8ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality key public methods marked with @public passed 1ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality methods have clear visibility documentation passed 8ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality methods with parameters have @param documentation passed 3ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality methods have @returns documentation passed 1ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality complex methods have @example sections passed 0ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization escapeHtml function is defined passed 1ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization uses createElement for safe escaping passed 7ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization escapeHtml is used in generateCertificateGrid passed 1ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization alt attributes use escapeHtml passed 9ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization updateViewer uses textContent for XSS safety passed 1ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization does not use innerHTML for user content passed 4ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading thumbnail images have loading="lazy" attribute passed 3ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading images have decoding="async" for performance passed 0ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading grid images have both lazy loading and async decoding passed 1ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading main viewer image has lazy loading passed 7ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading main viewer image has async decoding passed 0ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading all img tags use performance attributes passed 0ms
Code Documentation and Security Enhancements Code Quality Standards and Best Practices consistent JSDoc formatting passed 33ms
Code Documentation and Security Enhancements Code Quality Standards and Best Practices no TODO or FIXME comments passed 0ms
Code Documentation and Security Enhancements Code Quality Standards and Best Practices security comments are present passed 1ms
Code Documentation and Security Enhancements Code Quality Standards and Best Practices performance comments are present passed 9ms
Code Documentation and Security Enhancements Overall Documentation Coverage and Completeness all JavaScript files have JSDoc passed 0ms
Code Documentation and Security Enhancements Overall Documentation Coverage and Completeness documentation is comprehensive passed 13ms
src/App.test.jsx passed 13/13 passed 8.21s
Test Status Duration
App Component renders home route components passed 298ms
App Component renders the home page as hero, shipped, stack, then experience with nothing collapsible passed 107ms
App Component renders articles route passed 65ms
App Component renders side-projects route passed 69ms
App Component renders frameworks route passed 131ms
App Component renders test-results route passed 103ms
App Component opens and closes Certificates Modal via Navbar passed 202ms
App Component Background Gradient Effect body has gradient background applied passed 305ms
App Component Background Gradient Effect gradient contains blue-ish colors passed 74ms
App Component Background Gradient Effect background attachment is fixed for all routes passed 114ms
App Component Background Gradient Effect gradient persists across SPA navigation passed 132ms
App Component Background Gradient Effect App component has minimum height of 100vh passed 69ms
App Component Background Gradient Effect gradient effect is applied to all page routes passed 142ms
tests/jest/js-certificates-functional.test.js passed 25/25 passed 5.21s
Test Status Duration
certificates.js - Module Exports getBasePath function exports getBasePath function passed 95ms
certificates.js - Module Exports getBasePath function returns empty string for root path passed 45ms
certificates.js - Module Exports getBasePath function returns ../../ for /pages/something/ path (matches deep regex) passed 24ms
certificates.js - Module Exports getBasePath function returns ../../ for nested /pages/folder/ path passed 25ms
certificates.js - Module Exports getBasePath function returns ../ for /pages/ root listing passed 19ms
certificates.js - Module Exports getBasePath function handles root path with index.html passed 37ms
certificates.js - Module Exports escapeHtml function exports escapeHtml function passed 74ms
certificates.js - Module Exports escapeHtml function escapes < and > characters passed 49ms
certificates.js - Module Exports escapeHtml function escapes complete script tag passed 30ms
certificates.js - Module Exports escapeHtml function escapes ampersands passed 26ms
certificates.js - Module Exports escapeHtml function escapes quotes via textContent semantics passed 19ms
certificates.js - Module Exports escapeHtml function handles empty string passed 32ms
certificates.js - Module Exports escapeHtml function handles regular text without special chars passed 24ms
certificates.js - Module Exports escapeHtml function handles multiple special characters passed 26ms
certificates.js - Module Exports certificates data exports certificates array passed 27ms
certificates.js - Module Exports certificates data has exactly 35 certificates passed 24ms
certificates.js - Module Exports certificates data all certificates have required properties passed 280ms
certificates.js - Module Exports certificates data certificate IDs are sequential from 1 to 35 passed 49ms
certificates.js - Module Exports certificates data all image paths start with images/ passed 87ms
certificates.js - Module Exports certificates data all certificates have valid categories passed 47ms
certificates.js - Module Exports certificates data LinkedURL URLs use HTTPS when present passed 37ms
certificates.js - Module Exports CertificateModal class exports CertificateModal class passed 30ms
certificates.js - Module Exports CertificateModal class can instantiate CertificateModal passed 21ms
certificates.js - Module Exports CertificateModal class CertificateModal has expected methods passed 23ms
certificates.js - Module Exports CertificateModal class CertificateModal initializes currentIndex to 0 passed 24ms
src/components/LiveTestRunner.test.jsx passed 19/19 passed 27.95s
Test Status Duration
LiveTestRunner Component renders in initial idle state with run button and test stats passed 900ms
LiveTestRunner Component shows dashes instead of green zeros before the first run passed 132ms
LiveTestRunner Component executes all tests when run button is clicked passed 5.13s
LiveTestRunner Component filters tests by status pills passed 188ms
LiveTestRunner Component suite list is hidden until revealed passed 544ms
LiveTestRunner Component suites start collapsed and toggle on click passed 396ms
LiveTestRunner Component offers collapse all after a run, then expand all again passed 4.18s
LiveTestRunner Component running the suite expands every suite passed 409ms
LiveTestRunner Component passes WAI-ARIA dialog compliance when CookieConsent banner is active in the DOM passed 67ms
LiveTestRunner with deterministic results idle state shows placeholders, empty progress and the run affordance passed 137ms
LiveTestRunner with deterministic results revealed suites list idle tests with translated names and zero counts passed 214ms
LiveTestRunner with deterministic results a mixed run reports failures everywhere passed 1.55s
LiveTestRunner with deterministic results details panels show output and assertion errors passed 1.81s
LiveTestRunner with deterministic results filters hide non-matching tests and empty suites passed 1.75s
LiveTestRunner with deterministic results passed filter before any run hides every suite but all keeps them passed 218ms
LiveTestRunner with deterministic results an all-green run shows the verified badge and success progress passed 1.17s
LiveTestRunner with deterministic results collapse all toggles the ghost button state passed 1.65s
LiveTestRunner with deterministic results shows the running state while a test is in flight passed 1.85s
LiveTestRunner with deterministic results unmounting mid-run stops executing further tests passed 253ms
src/components/Hero.test.jsx passed 14/14 passed 12.93s
Test Status Duration
Hero Component Profile Section displays profile image with correct attributes passed 481ms
Hero Component Profile Section displays correct name passed 691ms
Hero Component Profile Section displays professional title passed 141ms
Hero Component Profile Section displays location passed 173ms
Hero Component Hero pitch and CTAs renders the portrait without an overlaid stat badge passed 163ms
Hero Component Hero pitch and CTAs renders primary homepage CTAs passed 354ms
Hero Component Hero pitch and CTAs renders proof stats by the numbers passed 227ms
Hero Component Hero pitch and CTAs calls onOpenContact when send message is clicked passed 279ms
Hero Component Hero pitch and CTAs keeps the hero to two columns: claim and portrait passed 201ms
Hero Component CI run log shows the last run as green with real readouts passed 797ms
Hero Component CI run log turns red and counts failures across suites passed 290ms
Hero Component CI run log renders live badge and mutation score row when mutation data is present passed 387ms
Hero portrait follows the document theme uses the white-backdrop headshot when <html data-theme="light"> passed 102ms
Hero portrait follows the document theme swaps the headshot live when the theme toggles passed 276ms
src/components/Articles.test.jsx passed 16/16 passed 14.19s
Test Status Duration
Articles Component displays Articles banner and themes passed 1.78s
Articles Component displays article cards including in-depth markdown and external articles passed 554ms
Articles Component filters by Home Assistant theme passed 514ms
Articles Component filters by Cypress theme passed 854ms
Articles Component filters by search input passed 538ms
Articles Component renders translated follow card copy passed 294ms
Articles Component Hasura GraphQL Medium article link should be correct passed 512ms
Articles Component Auth0 LinkedIn article link should be correct passed 468ms
Articles Component Cyprompt AI Dev.to article link should be correct passed 419ms
Articles Component Cyprompt article card should have correct tags passed 518ms
Articles Component Cyprompt article shows its cover art without the icon plate on top passed 493ms
Articles Component Global Hooks login article link should be correct passed 620ms
Articles Component Global Hooks article card should have correct tags passed 544ms
Articles Component Cypress 16 migration article should render with the correct link and metadata passed 526ms
Articles Component Home Assistant article points directly to dev.to passed 548ms
Articles Component Restored Cypress session article points directly to dev.to passed 464ms
src/components/hooks/useTheme.test.jsx passed 12/12 passed 4.99s
Test Status Duration
useTheme hook defaults to dark theme when no saved preference exists passed 141ms
useTheme hook respects saved light theme from localStorage passed 42ms
useTheme hook follows OS prefers-color-scheme: light when nothing is stored passed 31ms
useTheme hook stays dark when the OS states no preference passed 21ms
useTheme hook a stored choice outranks the OS preference passed 11ms
useTheme hook toggles theme and updates localStorage and DOM passed 43ms
useTheme hook setTheme updates directly to light or dark passed 38ms
useTheme hook applyThemeToDocument updates meta theme-color tag if present passed 8ms
useDocumentTheme reads the theme stamped on <html> passed 77ms
useDocumentTheme falls back to dark when nothing is stamped or stored passed 24ms
useDocumentTheme re-renders when applyThemeToDocument flips the attribute passed 144ms
useDocumentTheme stops observing after unmount passed 24ms
src/components/SideProjects.test.jsx passed 17/17 passed 15.54s
Test Status Duration
SideProjects (tabbed project showcases) renders one tab per project with LoopBeat selected by default passed 861ms
SideProjects (tabbed project showcases) shows only the LoopBeat showcase by default passed 633ms
SideProjects (tabbed project showcases) switches to the QA Forge showcase when its tab is clicked passed 790ms
SideProjects (tabbed project showcases) switches to the HELLGATE showcase when its tab is clicked passed 1.04s
SideProjects (tabbed project showcases) updates the URL hash when switching projects passed 1.29s
SideProjects (tabbed project showcases) opens directly on the project named in the URL hash passed 367ms
SideProjects (tabbed project showcases) moves between projects with arrow keys passed 734ms
SideProjects (tabbed project showcases) renders all 6 LoopBeat architecture pillars passed 508ms
SideProjects (tabbed project showcases) renders all 6 QA Forge tool pillars passed 1.10s
SideProjects (tabbed project showcases) renders all 6 HELLGATE architecture pillars passed 989ms
SideProjects (tabbed project showcases) mentions the key services and details of each project passed 1.51s
SideProjects (tabbed project showcases) renders the LoopBeat live app link opening securely in a new tab passed 278ms
SideProjects (tabbed project showcases) renders the QA Forge live app link opening securely in a new tab passed 416ms
SideProjects (tabbed project showcases) renders the HELLGATE live app link opening securely in a new tab passed 451ms
SideProjects (tabbed project showcases) renders 2 screenshots that fall back to a placeholder on load error passed 357ms
SideProjects (tabbed project showcases) opens the screenshot gallery when a screenshot is clicked passed 268ms
SideProjects (tabbed project showcases) hero preview falls back to a placeholder when the image is missing passed 291ms
src/components/blog/Blog.test.jsx passed 11/11 passed 9.62s
Test Status Duration
Blog Components BlogIndex renders blog header and articles passed 649ms
Blog Components BlogIndex filters articles by search input passed 311ms
Blog Components BlogIndex shows locale month and reading time on cards passed 167ms
Blog Components BlogIndex filters articles by tag button passed 796ms
Blog Components BlogIndex renders brand badges on post cards passed 147ms
Blog Components BlogPost renders single blog post with content and TOC passed 1.65s
Blog Components BlogPost renders Home Assistant blog post with cover image and content passed 334ms
Blog Components BlogPost renders Not Found state for invalid slug or unpublished draft passed 44ms
Blog Components blogIcons returns Home Assistant brand metadata for homeassistant posts passed 11ms
Blog Components blogIcons returns Cypress brand metadata for cypress posts passed 9ms
Blog Components blogIcons returns tag icons for known tags and null for unknown tags passed 1ms
src/components/frameworks/AdvancedTesting.test.jsx passed 19/19 passed 8.15s
Test Status Duration
AdvancedTesting Shared endpoints card renders "Endpoints Tested" label passed 470ms
AdvancedTesting Shared endpoints card renders 3 endpoint badges as links passed 788ms
AdvancedTesting API cards grid renders 3 API cards passed 114ms
AdvancedTesting k6 card renders title and subtitle passed 155ms
AdvancedTesting k6 card renders stats passed 193ms
AdvancedTesting k6 card renders 4 feature tiles passed 192ms
AdvancedTesting k6 card renders GitHub link passed 243ms
AdvancedTesting Jest + Supertest card renders title and subtitle passed 138ms
AdvancedTesting Jest + Supertest card renders stats passed 178ms
AdvancedTesting Jest + Supertest card renders 4 feature tiles passed 152ms
AdvancedTesting Jest + Supertest card renders GitHub link passed 289ms
AdvancedTesting Postman / Newman card renders title and subtitle passed 145ms
AdvancedTesting Postman / Newman card renders stats passed 105ms
AdvancedTesting Postman / Newman card renders 4 feature tiles passed 258ms
AdvancedTesting Postman / Newman card renders GitHub link passed 225ms
AdvancedTesting All CTA links all 3 API links open in new tab securely passed 267ms
AdvancedTesting All CTA links all CTA links have primary hover class passed 331ms
AdvancedTesting All CTA links renders live report links for all API repos passed 155ms
AdvancedTesting Theme CSS variables no card inlines its own accent, so every card reads as one palette passed 72ms
tests/jest/csp-validation.test.js passed 12/12 passed 4.19s
Test Status Duration
CSP Hash Generation should generate csp-hashes.json during build passed 30ms
CSP Hash Generation should generate correct SHA-256 hash for JSON-LD script passed 30ms
CSP Hash Generation should inject CSP hash into _headers file passed 18ms
CSP Hash Generation should NOT contain unsafe-inline in script-src passed 16ms
CSP Hash Generation should contain required CSP directives passed 12ms
CSP Hash Generation should allow required external script sources passed 27ms
CSP Hash Generation should allow hCaptcha for the contact form passed 16ms
CSP Hash Generation should keep fonts and styles first-party passed 1ms
CSP Hash Generation should temporarily allow unsafe-inline for styles passed 10ms
CSP Implementation Files should have gtag-init.js in dist/js/ passed 12ms
CSP Implementation Files should have vite-plugin-csp-hash.js at root passed 1ms
CSP Implementation Files should have generate-csp-headers.js script passed 0ms
tests/jest/gtag-init.test.js passed 13/13 passed 3.27s
Test Status Duration
gtag-init.js - Google Analytics Initialization File Loading and Structure file exists and can be loaded passed 36ms
gtag-init.js - Google Analytics Initialization File Loading and Structure contains CSP compliance comment passed 13ms
gtag-init.js - Google Analytics Initialization DataLayer Initialization initializes window.dataLayer as empty array when undefined passed 43ms
gtag-init.js - Google Analytics Initialization DataLayer Initialization preserves existing dataLayer if already defined passed 24ms
gtag-init.js - Google Analytics Initialization gtag Function creates window.gtag function passed 10ms
gtag-init.js - Google Analytics Initialization gtag Function gtag pushes arguments to dataLayer passed 12ms
gtag-init.js - Google Analytics Initialization gtag Function gtag handles multiple calls passed 16ms
gtag-init.js - Google Analytics Initialization gtag Function gtag preserves all arguments passed to it passed 2ms
gtag-init.js - Google Analytics Initialization Integration with Google Analytics follows Google Analytics initialization pattern passed 8ms
gtag-init.js - Google Analytics Initialization Integration with Google Analytics supports event tracking passed 10ms
gtag-init.js - Google Analytics Initialization Integration with Google Analytics supports custom parameters passed 64ms
gtag-init.js - Google Analytics Initialization CSP Compliance does not use eval or Function constructor passed 13ms
gtag-init.js - Google Analytics Initialization CSP Compliance does not contain inline event handlers passed 10ms
src/components/frameworks/FrameworkCard.test.jsx passed 17/17 passed 6.52s
Test Status Duration
FrameworkCard renders card title and subtitle from i18n passed 407ms
FrameworkCard renders the themed icon for playwright passed 94ms
FrameworkCard renders only the first 3 stats passed 112ms
FrameworkCard renders only the first 6 highlights passed 154ms
FrameworkCard renders CTA link with correct attributes passed 424ms
FrameworkCard renders secondary live report CTA when provided passed 243ms
FrameworkCard does not render live report CTA when secondaryCta is omitted passed 161ms
FrameworkCard renders feature icons from framework metadata passed 74ms
FrameworkCard leaves the accent to the stylesheet instead of inlining a per-card hue passed 73ms
FrameworkCard themes uses cypress theme for cypress id passed 95ms
FrameworkCard themes gives the Cucumber BDD card its own icon passed 68ms
FrameworkCard themes uses selenium theme for selenium id passed 68ms
FrameworkCard themes falls back to playwright theme for unknown id passed 67ms
FrameworkCard icons renders the CTA icon inside the View on GitHub link passed 81ms
FrameworkCard icons renders the secondary CTA icon inside the Live Report link passed 141ms
FrameworkCard icons renders every feature icon from metadata passed 126ms
FrameworkCard icons renders all icons as decorative material icons passed 86ms
src/components/CookieConsent.test.jsx passed 10/10 passed 5.84s
Test Status Duration
CookieConsent Component renders banner when no cookie is present passed 390ms
CookieConsent Component does not render banner when cookie is already set passed 32ms
CookieConsent Component sets cookie and initializes GA on accept passed 213ms
CookieConsent Component sets cookie and does not initialize GA on decline passed 102ms
CookieConsent Component checks if running in production environment passed 79ms
CookieConsent Component tracks consent acceptance event with gtag passed 135ms
CookieConsent Component does not reinitialize analytics if gtag already exists passed 120ms
CookieConsent Component marks the page while the banner is visible so the report FAB can move up passed 33ms
CookieConsent Component clears banner offset styles after accepting cookies passed 77ms
CookieConsent Component clears banner offset styles after declining cookies passed 92ms
src/components/Frameworks.test.jsx passed 40/40 passed 41.17s
Test Status Duration
Frameworks Component renders main title and description passed 1.29s
Frameworks Component Shared saucedemo.com target card renders saucedemo.com badge passed 676ms
Frameworks Component Shared saucedemo.com target card saucedemo.com badge links to the site passed 1.43s
Frameworks Component Shared saucedemo.com target card renders Testing label passed 663ms
Frameworks Component renders correct number of framework cards renders 9 framework cards and 12 total GitHub links across all sections passed 1.38s
Frameworks Component renders correct number of framework cards renders 11 live report links for repos that publish HTML reports passed 1.29s
Frameworks Component renders correct number of framework cards selenium JUnit card omits live report CTA passed 656ms
Frameworks Component Playwright Section renders card title and subtitle passed 650ms
Frameworks Component Playwright Section renders stat badges passed 759ms
Frameworks Component Playwright Section renders all 6 highlights passed 1.12s
Frameworks Component Playwright Section renders View on GitHub CTA link with correct href passed 848ms
Frameworks Component Cypress TypeScript Section renders card title and subtitle passed 542ms
Frameworks Component Cypress TypeScript Section renders stat badges passed 830ms
Frameworks Component Cypress TypeScript Section renders all 6 highlights passed 1.15s
Frameworks Component Cypress TypeScript Section renders CTA link with correct href passed 859ms
Frameworks Component Cypress BDD Section renders card title and subtitle passed 738ms
Frameworks Component Cypress BDD Section renders stat badges passed 819ms
Frameworks Component Cypress BDD Section renders all 6 highlights passed 926ms
Frameworks Component Cypress BDD Section renders CTA link with correct href passed 725ms
Frameworks Component Selenium JUnit Section renders card title and subtitle passed 453ms
Frameworks Component Selenium JUnit Section renders stat badges passed 724ms
Frameworks Component Selenium JUnit Section renders all 6 highlights passed 1.21s
Frameworks Component Selenium JUnit Section renders CTA link with correct href passed 1.02s
Frameworks Component Selenium TestNG Section renders card title and subtitle passed 633ms
Frameworks Component Selenium TestNG Section renders stat badges passed 532ms
Frameworks Component Selenium TestNG Section renders all 6 highlights passed 872ms
Frameworks Component Selenium TestNG Section renders CTA link with correct href passed 981ms
Frameworks Component API & Performance Testing Section renders section header and description passed 624ms
Frameworks Component API & Performance Testing Section renders shared endpoints card with label passed 637ms
Frameworks Component API & Performance Testing Section renders endpoint badges as links with correct hrefs passed 1.35s
Frameworks Component API & Performance Testing Section renders k6 card title, subtitle, stats, and highlights passed 1.10s
Frameworks Component API & Performance Testing Section renders Supertest card title, subtitle, stats, and highlights passed 1.22s
Frameworks Component API & Performance Testing Section renders Postman card title, subtitle, stats, and highlights passed 983ms
Frameworks Component API & Performance Testing Section renders View on GitHub links for all 3 API repos with correct hrefs passed 712ms
Frameworks Component API & Performance Testing Section all API CTA links open in new tab passed 749ms
Frameworks Component AI & LLM Testing Section renders section header and AI LLM cards passed 379ms
Frameworks Component AI & LLM Testing Section renders correct GitHub repository and Live Report links for AI LLM examples passed 947ms
Frameworks Component Contract Testing Section renders section header and Contract Testing cards passed 880ms
Frameworks Component Contract Testing Section renders correct GitHub repository and Live Report links for Contract Testing examples passed 1.34s
Frameworks Component Legacy E2E Testing Examples Section renders Legacy E2E section header and moved Selenium cards passed 878ms
src/components/sideprojects/ScreenshotGallery.test.jsx passed 6/6 passed 7.11s
Test Status Duration
ScreenshotGallery renders screenshots as zoomable buttons passed 727ms
ScreenshotGallery opens a zoomed gallery dialog when a screenshot is clicked passed 410ms
ScreenshotGallery navigates between screenshots in the gallery passed 395ms
ScreenshotGallery supports arrow-key navigation inside the gallery passed 353ms
ScreenshotGallery closes the gallery with Escape, close button, and backdrop click passed 518ms
ScreenshotGallery falls back to a placeholder and removes the zoom button when an image fails passed 124ms
src/components/blog/blogIcons.test.jsx passed 8/8 passed 4.79s
Test Status Duration
blogIcons utility getPostBrand returns Cypress brand when tags, slug, title include cypress or cypressDevTo is true passed 20ms
blogIcons utility getPostBrand returns Home Assistant brand when tags, slug, or title match passed 13ms
blogIcons utility getPostBrand returns TypeScript brand when tags or slug match passed 17ms
blogIcons utility getPostBrand returns Claude brand when tags or slug match passed 35ms
blogIcons utility getPostBrand returns Automation brand when tags include automation passed 6ms
blogIcons utility getPostBrand falls back to QA & Testing brand for unknown topics or empty objects passed 8ms
blogIcons utility getTagIcon returns corresponding icon component for known tag names passed 9ms
blogIcons utility getTagIcon returns null for unrecognized tags or falsy values passed 4ms
src/components/sideprojects/SideProjects.data.test.js passed 19/19 passed 4.37s
Test Status Duration
sideProjectsList lists all showcased projects in order passed 22ms
sideProjectsList LoopBeat exposes the fields the showcase needs passed 81ms
sideProjectsList QA Forge exposes the fields the showcase needs passed 23ms
sideProjectsList HELLGATE exposes the fields the showcase needs passed 62ms
loopBeatStructure exposes core identity fields passed 1ms
loopBeatStructure has a primary external link passed 15ms
loopBeatStructure covers the expected architecture pillars passed 0ms
loopBeatStructure describes the full storage pipeline passed 1ms
loopBeatStructure lists app screenshots under public/images/loopbeat passed 14ms
qaForgeStructure exposes core identity fields passed 1ms
qaForgeStructure has a primary external link to the live app passed 12ms
qaForgeStructure covers the expected tool pillars passed 1ms
qaForgeStructure describes the full URL-to-suite pipeline passed 8ms
qaForgeStructure lists app screenshots under public/images/qaforge passed 1ms
hellGateStructure exposes core identity fields passed 0ms
hellGateStructure has a primary external link to the live app passed 1ms
hellGateStructure covers the expected architecture pillars passed 1ms
hellGateStructure describes the full click-to-play pipeline passed 0ms
hellGateStructure lists app screenshots under public/images/hellgate passed 1ms
src/components/TestResults.test.jsx passed 13/13 passed 37.25s
Test Status Duration
TestResults page renders the page claim and the eight numbered sections passed 3.80s
TestResults page shows the mutation score readout and empty states for the new sections passed 3.82s
TestResults page shows the failing count on the status plate and the run metadata passed 2.60s
TestResults page reports all green when nothing failed passed 2.25s
TestResults page displays Jest metrics and expands the suite list passed 1.82s
TestResults page displays E2E metrics computed from steps and expands flows into steps passed 2.23s
TestResults page displays coverage metrics passed 2.53s
TestResults page links every report to its static HTML page passed 2.49s
TestResults page renders four highlighted code samples labelled with their file paths passed 1.72s
TestResults page falls back to the bundled E2E snapshot when the Gist fetch fails passed 2.41s
TestResults page shows the empty states when neither Gist nor snapshot has data passed 2.44s
TestResults page loads test-data.js when the snapshot is not preloaded passed 2.27s
TestResults page reports a load failure when test-data.js cannot be fetched passed 1.72s
src/components/ErrorBoundary.test.jsx passed 7/7 passed 6.55s
Test Status Duration
ErrorBoundary Component renders children when there is no error passed 157ms
ErrorBoundary Component renders error UI for standard unexpected Error with message and technical details passed 809ms
ErrorBoundary Component renders specific guidance message when an asset load error occurs passed 383ms
ErrorBoundary Component handles Error without message and non-Error objects correctly passed 108ms
ErrorBoundary Component handles reload page button click passed 265ms
ErrorBoundary Component handles return to home button click passed 144ms
ErrorBoundary Component displays componentStack in development mode passed 70ms
src/components/articles/ArticleCard.test.jsx passed 5/5 passed 5.25s
Test Status Duration
ArticleCard Component renders standard article card with metadata, tags, and dev icon passed 694ms
ArticleCard Component renders featured card with cover image and eager loading passed 92ms
ArticleCard Component renders with linkedin icon and custom linkKey passed 51ms
ArticleCard Component handles clicking tags when onTagClick is undefined without errors passed 126ms
ArticleCard Component handles empty or non-array tags gracefully passed 50ms
src/components/ContactModal.test.jsx passed 10/10 passed 4.68s
Test Status Duration
ContactModal Component returns null when isOpen is false passed 138ms
ContactModal Component renders modal dialog when isOpen is true passed 417ms
ContactModal Component locks body overflow to hidden when opened and restores to auto on unmount passed 74ms
ContactModal Component locks body overflow when isOpen toggles to true, restores when toggles to false passed 49ms
ContactModal Component calls onClose when Escape key is pressed passed 48ms
ContactModal Component does not call onClose when other keys are pressed passed 44ms
ContactModal Component removes keydown listener when unmounted passed 47ms
ContactModal Component calls onClose when close button is clicked passed 175ms
ContactModal Component calls onClose when clicking backdrop directly passed 27ms
ContactModal Component does not call onClose when clicking modal content passed 31ms
src/components/frameworks/Frameworks.data.test.js passed 61/61 passed 4.63s
Test Status Duration
Frameworks.data exports an array of 9 frameworks passed 22ms
Frameworks.data llmEval has required fields passed 25ms
Frameworks.data promptfoo has required fields passed 13ms
Frameworks.data playwright has required fields passed 9ms
Frameworks.data cypressTs has required fields passed 9ms
Frameworks.data cypressBdd has required fields passed 13ms
Frameworks.data openapi has required fields passed 10ms
Frameworks.data pact has required fields passed 13ms
Frameworks.data seleniumJunit has required fields passed 1ms
Frameworks.data seleniumTestng has required fields passed 31ms
Frameworks.data llmEval has exactly 6 feature icons passed 1ms
Frameworks.data promptfoo has exactly 6 feature icons passed 8ms
Frameworks.data playwright has exactly 6 feature icons passed 7ms
Frameworks.data cypressTs has exactly 6 feature icons passed 1ms
Frameworks.data cypressBdd has exactly 6 feature icons passed 1ms
Frameworks.data openapi has exactly 6 feature icons passed 10ms
Frameworks.data pact has exactly 6 feature icons passed 7ms
Frameworks.data seleniumJunit has exactly 6 feature icons passed 1ms
Frameworks.data seleniumTestng has exactly 6 feature icons passed 1ms
Frameworks.data llmEval has a valid CTA with href and icon passed 15ms
Frameworks.data promptfoo has a valid CTA with href and icon passed 1ms
Frameworks.data playwright has a valid CTA with href and icon passed 0ms
Frameworks.data cypressTs has a valid CTA with href and icon passed 0ms
Frameworks.data cypressBdd has a valid CTA with href and icon passed 1ms
Frameworks.data openapi has a valid CTA with href and icon passed 0ms
Frameworks.data pact has a valid CTA with href and icon passed 15ms
Frameworks.data seleniumJunit has a valid CTA with href and icon passed 1ms
Frameworks.data seleniumTestng has a valid CTA with href and icon passed 14ms
Frameworks.data framework IDs match recognized frameworks passed 7ms
Frameworks.data contains AI LLM entries passed 10ms
Frameworks.data contains Contract Testing entries passed 3ms
Frameworks.data contains Legacy E2E entries passed 0ms
Frameworks.data all CTA hrefs are unique passed 1ms
Frameworks.data eight frameworks expose a live report link passed 11ms
Frameworks.data icons llmEval uses the shared code icon for the View on GitHub CTA passed 15ms
Frameworks.data icons promptfoo uses the shared code icon for the View on GitHub CTA passed 1ms
Frameworks.data icons playwright uses the shared code icon for the View on GitHub CTA passed 0ms
Frameworks.data icons cypressTs uses the shared code icon for the View on GitHub CTA passed 13ms
Frameworks.data icons cypressBdd uses the shared code icon for the View on GitHub CTA passed 1ms
Frameworks.data icons openapi uses the shared code icon for the View on GitHub CTA passed 0ms
Frameworks.data icons pact uses the shared code icon for the View on GitHub CTA passed 11ms
Frameworks.data icons seleniumJunit uses the shared code icon for the View on GitHub CTA passed 0ms
Frameworks.data icons seleniumTestng uses the shared code icon for the View on GitHub CTA passed 1ms
Frameworks.data icons llmEval uses the shared assessment icon for the Live Report CTA passed 6ms
Frameworks.data icons promptfoo uses the shared assessment icon for the Live Report CTA passed 0ms
Frameworks.data icons playwright uses the shared assessment icon for the Live Report CTA passed 1ms
Frameworks.data icons cypressTs uses the shared assessment icon for the Live Report CTA passed 0ms
Frameworks.data icons cypressBdd uses the shared assessment icon for the Live Report CTA passed 8ms
Frameworks.data icons openapi uses the shared assessment icon for the Live Report CTA passed 0ms
Frameworks.data icons pact uses the shared assessment icon for the Live Report CTA passed 1ms
Frameworks.data icons seleniumTestng uses the shared assessment icon for the Live Report CTA passed 0ms
Frameworks.data icons every CTA icon across all frameworks is identical passed 7ms
Frameworks.data icons llmEval feature icons are lowercase material icon ligatures passed 1ms
Frameworks.data icons promptfoo feature icons are lowercase material icon ligatures passed 9ms
Frameworks.data icons playwright feature icons are lowercase material icon ligatures passed 12ms
Frameworks.data icons cypressTs feature icons are lowercase material icon ligatures passed 2ms
Frameworks.data icons cypressBdd feature icons are lowercase material icon ligatures passed 14ms
Frameworks.data icons openapi feature icons are lowercase material icon ligatures passed 1ms
Frameworks.data icons pact feature icons are lowercase material icon ligatures passed 13ms
Frameworks.data icons seleniumJunit feature icons are lowercase material icon ligatures passed 1ms
Frameworks.data icons seleniumTestng feature icons are lowercase material icon ligatures passed 12ms
src/components/Shipped.test.jsx passed 5/5 passed 6.47s
Test Status Duration
Shipped stages three real project screenshots with their live URL, first one active passed 423ms
Shipped each step carries the project facts and a deep link to its page passed 681ms
Shipped switches the staged frame to QA Forge (step 1) when scrolled into view passed 226ms
Shipped switches the staged frame to HELLGATE (step 2) when scrolled into view passed 202ms
Shipped renders placeholder gracefully when an image fails to load passed 262ms
src/components/test-results/CoverageMap.test.jsx passed 4/4 passed 6.79s
Test Status Duration
CoverageMap renders nothing while loading and an empty state without data passed 245ms
CoverageMap shows totals and one row per module with layer marks passed 862ms
CoverageMap filters modules by layer passed 777ms
CoverageMap hides the mutation column when no mutation data exists passed 176ms
src/components/test-results/A11yScan.test.jsx passed 5/5 passed 5.14s
Test Status Duration
A11yScan renders nothing while loading and an empty state without data passed 216ms
A11yScan shows the issue total, scope, impact breakdown and engine passed 271ms
A11yScan lists the worst pages with their colour scheme passed 475ms
A11yScan links every failing rule to its axe documentation in a safe new tab passed 236ms
A11yScan reports a clean scan without a rules table passed 43ms
src/components/test-results/SectionRail.test.jsx passed 4/4 passed 5.45s
Test Status Duration
SectionRail Component renders navigation rail with sections list and initial active state on first section passed 673ms
SectionRail Component sets up IntersectionObserver with correct rootMargin and observes matching DOM nodes passed 130ms
SectionRail Component handles missing IntersectionObserver gracefully passed 23ms
SectionRail Component handles empty sections gracefully without crashing passed 55ms
src/StaticAssets.test.js passed 12/12 passed 4.47s
Test Status Duration
Static Assets & Configuration index.html Favicons has apple-touch-icon passed 11ms
Static Assets & Configuration index.html Favicons has 32x32 PNG favicon passed 1ms
Static Assets & Configuration index.html Favicons has 16x16 PNG favicon passed 14ms
Static Assets & Configuration index.html Favicons has webmanifest passed 60ms
Static Assets & Configuration Performance Optimizations loads no third-party font or icon CSS passed 1ms
Static Assets & Configuration Performance Optimizations preloads the self-hosted display and icon fonts passed 36ms
Static Assets & Configuration Performance Optimizations does not include CSP meta tag (CSP is enforced via HTTP headers) passed 1ms
Static Assets & Configuration SEO Meta Tags has meta description passed 11ms
Static Assets & Configuration SEO Meta Tags has canonical link passed 0ms
Static Assets & Configuration SEO Meta Tags has Open Graph tags passed 1ms
Static Assets & Configuration SEO Meta Tags has Twitter card tags passed 3ms
Static Assets & Configuration CSS Variables defines core theme colors passed 1ms
src/components/Experience.test.jsx passed 8/8 passed 6.70s
Test Status Duration
Experience Component displays compact section header passed 967ms
Experience Component draws one rail with five year chapters, Board current and first passed 238ms
Experience Component every chapter carries a logo plate, a real metric and its tools passed 308ms
Experience Component counts the metric up once the chapter is in view passed 274ms
Experience Component keeps every row short: no highlight bullets, no tool chips passed 194ms
Experience Component displays Electronic Arts as the earliest role passed 316ms
Experience Component links each company to its site in a new tab, exactly once passed 391ms
Experience Component does not render case study buttons passed 214ms
tests/jest/certificates-min.test.js passed 7/7 passed 3.72s
Test Status Duration
certificates.min.js - Minified Version File Verification minified file exists passed 27ms
certificates.min.js - Minified Version File Verification minified file is smaller than source file passed 16ms
certificates.min.js - Minified Version File Verification contains expected minified patterns passed 1ms
certificates.min.js - Minified Version File Verification contains certificate data passed 12ms
certificates.min.js - Minified Version File Verification contains key functions from source passed 20ms
certificates.min.js - Minified Version Content Integrity does not contain syntax errors passed 12ms
certificates.min.js - Minified Version Content Integrity file is not empty passed 1ms
src/components/test-results/useCountUp.test.js passed 6/6 passed 4.94s
Test Status Duration
useCountUp hook (test-results/useCountUp) returns null when target is null or undefined passed 135ms
useCountUp hook (test-results/useCountUp) returns target directly without animating when active is false passed 60ms
useCountUp hook (test-results/useCountUp) animates progress from 0 to 1 scaling target linearly with eased progress passed 55ms
useCountUp hook (test-results/useCountUp) returns target directly when user prefers reduced motion passed 21ms
useCountUp hook (test-results/useCountUp) returns target directly when requestAnimationFrame is missing passed 14ms
useCountUp hook (test-results/useCountUp) cancels animation frame on unmount passed 41ms
src/components/hooks/useCountUp.test.js passed 6/6 passed 4.81s
Test Status Duration
useCountUp hook (hooks/useCountUp) animates value from 0 to target using cubic easing and completes at 1100ms passed 170ms
useCountUp hook (hooks/useCountUp) defaults active to true and animates passed 23ms
useCountUp hook (hooks/useCountUp) does not animate when active is false passed 14ms
useCountUp hook (hooks/useCountUp) does not animate when user prefers reduced motion passed 15ms
useCountUp hook (hooks/useCountUp) does not animate when requestAnimationFrame is not supported passed 8ms
useCountUp hook (hooks/useCountUp) cancels animation frame on unmount passed 21ms
tests/jest/test-history.test.js passed 5/5 passed 4.28s
Test Status Duration
test history buildHistoryEntry keeps only the compact per-run facts passed 14ms
test history buildHistoryEntry tolerates missing reports passed 10ms
test history appendRun replaces a run for the same commit and caps the window passed 11ms
test history syncHistory only reads when push is off, appends and writes when on passed 27ms
test history syncHistory keeps the previous history when the write fails passed 6ms
src/components/hooks/useFocusTrap.test.jsx passed 5/5 passed 4.95s
Test Status Duration
useFocusTrap should focus the first element when active passed 158ms
useFocusTrap should not focus the first element when inactive passed 24ms
useFocusTrap should trap focus inside the container passed 67ms
useFocusTrap should trap focus when shift-tabbing from first element passed 45ms
useFocusTrap should do nothing if no focusable elements found passed 18ms
src/components/test-results/Ring.test.jsx passed 8/8 passed 3.42s
Test Status Duration
Ring component renders with default muted tone and clamped value passed 160ms
Ring component renders with custom tone passed 23ms
Ring component clamps values below 0 to 0 passed 30ms
Ring component clamps values above 100 to 100 passed 28ms
Ring component handles zero correctly passed 34ms
Ring component handles null, undefined, NaN, and non-numeric values as 0 passed 73ms
Ring component handles string number values correctly passed 15ms
Ring component renders track and fill circles with correct geometry and attributes passed 25ms
tests/jest/a11y-summary.test.js passed 3/3 passed 4.33s
Test Status Duration
a11y summary collectRoutes lists prerendered pages and skips report pages and blog post copies passed 30ms
a11y summary summarizeA11yScans totals elements by impact and ranks rules by severity passed 20ms
a11y summary summarizeA11yScans reports a clean run as zero passed 12ms
tests/jest/mutation-summary.test.js passed 3/3 passed 4.68s
Test Status Duration
mutation summary countMutants follows the Stryker score definition passed 35ms
mutation summary summarizeMutationReport orders files by score and lists survivors passed 19ms
mutation summary summarizeMutationReport survives an empty report passed 4ms
src/components/frameworks/ComingSoonHero.test.jsx passed 3/3 passed 4.91s
Test Status Duration
ComingSoonHero Component renders heading and technologies list passed 856ms
ComingSoonHero Component renders decorative animated elements passed 63ms
ComingSoonHero Component renders the gradient backdrop and decorative layers passed 54ms
tests/jest/coverage-map.test.js passed 5/5 passed 5.04s
Test Status Duration
coverage map e2eSelectorTokens keeps CSS selectors and drops prose, comments and file names passed 33ms
coverage map e2eVisitedRoutes reads goto targets and pathname assertions passed 1ms
coverage map routeIndex maps route components to every path they serve passed 1ms
coverage map importedModules resolves relative imports of a real test file passed 17ms
coverage map buildCoverageMap classifies the real repository passed 188ms
src/components/frameworks/FrameworkHero.test.jsx passed 3/3 passed 5.27s
Test Status Duration
FrameworkHero Component renders framework title, subtitle, and dynamic id class passed 977ms
FrameworkHero Component renders decorative background and animated shapes passed 83ms
FrameworkHero Component renders the decorative layers with their animations passed 60ms
src/components/sideprojects/ProjectShowcase.test.jsx passed 4/4 passed 6.32s
Test Status Duration
ProjectShowcase Component renders loopBeat project showcase with hero metadata, title, links, and sections passed 987ms
ProjectShowcase Component renders gameplay section when project has gameplayGifs passed 662ms
ProjectShowcase Component renders browser mock preview and handles image load failure with placeholder passed 290ms
ProjectShowcase Component renders without gameplay section and without preview when omitted passed 164ms
src/i18n/detection.test.js passed 8/8 passed 6.47s
Test Status Duration
i18n language detection falls back to English when nothing is set passed 174ms
i18n language detection uses the navigator language when supported passed 168ms
i18n language detection maps a regional code onto its base language passed 226ms
i18n language detection a saved localStorage choice wins over the navigator language passed 197ms
i18n language switching changeLanguage persists the choice to localStorage passed 129ms
i18n language switching changeLanguage syncs <html lang> to the base language passed 192ms
i18n language switching <html lang> is set on init from the detected language passed 156ms
i18n language switching falls back to English content for an unsupported language passed 184ms
tests/jest/report-io.test.js passed 3/3 passed 5.16s
Test Status Duration
report-io E2E resolution ensureE2EReportOnDisk copies a discovered summary into the canonical path passed 23ms
report-io E2E resolution readE2EReport returns null when no summary exists in an empty tree passed 6ms
report-io E2E resolution resolveE2EBaseUrl maps CI preview hosts to the public site URL passed 17ms
tests/jest/generate-html-reports.test.js passed 5/5 passed 5.02s
Test Status Duration
generate-html-reports coverage helpers normalizeCoveragePath strips absolute project paths passed 20ms
generate-html-reports coverage helpers getCoverageReport prefers raw coverage with file entries passed 1ms
generate-html-reports coverage helpers getCoverageReport falls back to dashboard coverageFiles when raw files are missing passed 18ms
generate-html-reports coverage helpers collectCoverageFiles normalizes paths and sorts worst-first passed 19ms
generate-html-reports coverage helpers isCoverageLikelyIncomplete detects partial instrumentation runs passed 10ms
tests/jest/blog-generator.test.js passed 5/5 passed 36.02s
Test Status Duration
Blog Generator & Prerender Pipeline slugify converts title to kebab-case slug passed 20ms
Blog Generator & Prerender Pipeline parseFrontmatter parses YAML frontmatter blocks correctly passed 5ms
Blog Generator & Prerender Pipeline parseFrontmatter handles files without frontmatter gracefully passed 4ms
Blog Generator & Prerender Pipeline generateBlogData scans content/blog/*.md, outputs blogPosts.json and updates sitemap.xml passed 678ms
Blog Generator & Prerender Pipeline prerender generates dist/blog and dist/blog/:slug directories when dist exists passed 31.56s
tests/jest/css-variables.test.js passed 3/3 passed 4.87s
Test Status Duration
CSS Variables & Theming should define core theme colors passed 54ms
CSS Variables & Theming should use consistent gradient variables passed 1ms
CSS Variables & Theming should consistency usage of z-index passed 25ms
src/components/Footer.test.jsx passed 5/5 passed 7.38s
Test Status Duration
Footer Component renders footer content passed 580ms
Footer Component renders social links with correct hrefs passed 691ms
Footer Component renders in-site navigation to every top-level route passed 396ms
Footer Component renders social links with correct hrefs passed 195ms
Footer Component back-to-top button scrolls the window to the top passed 172ms
src/App.links.test.jsx passed 7/7 passed 23.16s
Test Status Duration
App Integration Tests - Links & Navigation Navigation Bar renders brand logo with correct text passed 1.84s
App Integration Tests - Links & Navigation Navigation Bar renders main navigation links passed 1.93s
App Integration Tests - Links & Navigation External Links Security all external links have rel="noopener noreferrer" and target="_blank" passed 2.17s
App Integration Tests - Links & Navigation Critical Links Presence contains LinkedIn link passed 1.84s
App Integration Tests - Links & Navigation Critical Links Presence contains Calendly link passed 1.60s
App Integration Tests - Links & Navigation Critical Links Presence contains Medium/Articles links passed 2.81s
App Integration Tests - Links & Navigation Internal Navigation internal anchor links start with # passed 1.61s
src/components/test-results/MutationScore.test.jsx passed 3/3 passed 5.88s
Test Status Duration
MutationScore renders nothing while loading and an empty state without data passed 298ms
MutationScore shows the score, the breakdown and the run link passed 590ms
MutationScore lists lowest-scoring files and surviving mutants passed 162ms
tests/jest/gist.test.js passed 4/4 passed 4.41s
Test Status Duration
gist helpers readGistJson uses the raw URL without a token passed 23ms
gist helpers readGistJson reads file content through the API with a token passed 1ms
gist helpers readGistJson returns null on HTTP errors and network failures passed 1ms
gist helpers writeGistJson refuses without a token and PATCHes with one passed 10ms
src/App.scroll.test.jsx passed 4/4 passed 16.66s
Test Status Duration
App Scroll Integration App scrolls to element defined in location.state.scrollTo on mount passed 2.18s
App Scroll Integration App does NOT scroll if location.state.scrollTo is missing passed 1.27s
App Scroll Integration App does NOT scroll to top when navigating home with scrollTo state passed 1.77s
App Scroll Integration scrolls to top when navigating to a subpage through the navbar passed 1.74s
tests/jest/icon-font-subset.test.js passed 3/3 passed 5.75s
Test Status Duration
Material Icons subset every icon name reachable from src/ ships in the subset passed 209ms
Material Icons subset the font URL carries the hash of the shipped font in every reference passed 10ms
Material Icons subset the served font stays a subset, not the full family passed 1ms
src/components/HomeSectionHeader.test.jsx passed 3/3 passed 5.59s
Test Status Duration
HomeSectionHeader Component renders title, headingId, and rule with minimal props passed 605ms
HomeSectionHeader Component renders icon, subtitle, and badge when provided passed 131ms
HomeSectionHeader Component returns valid JSX when called as a function passed 10ms
tests/jest/env-utils.test.js passed 13/13 passed 5.36s
Test Status Duration
env utilities getEnv returns VITE_WEB3FORMS_KEY from the test environment passed 77ms
env utilities getEnv returns VITE_GIST_USERNAME from the test environment passed 1ms
env utilities getEnv returns VITE_GIST_ID from the test environment passed 1ms
env utilities getEnv returns DEV from the test environment passed 18ms
env utilities getEnv returns PROD from the test environment passed 6ms
env utilities getEnv returns MODE from the test environment passed 1ms
env utilities getEnv returns undefined for unknown keys passed 10ms
env utilities getEnv is case-sensitive for keys passed 1ms
env utilities isDev returns true when DEV is true passed 8ms
env utilities isDev returns false when DEV is false or missing passed 1ms
env utilities isProd returns true when PROD is true passed 9ms
env utilities isProd returns false when PROD is false passed 1ms
env utilities isProd defaults to true when PROD is missing passed 12ms
src/components/subpages.i18n.test.jsx passed 21/21 passed 23.20s
Test Status Duration
Sub-page i18n Experience page renders translated copy in en passed 726ms
Sub-page i18n Experience page renders translated copy in pt passed 290ms
Sub-page i18n Experience page renders translated copy in es passed 239ms
Sub-page i18n Shipped page renders translated copy in en passed 248ms
Sub-page i18n Shipped page renders translated copy in pt passed 205ms
Sub-page i18n Shipped page renders translated copy in es passed 122ms
Sub-page i18n Stack page renders translated copy in en passed 958ms
Sub-page i18n Stack page renders translated copy in pt passed 742ms
Sub-page i18n Stack page renders translated copy in es passed 749ms
Sub-page i18n Articles page renders translated copy in en passed 391ms
Sub-page i18n Articles page renders translated copy in pt passed 406ms
Sub-page i18n Articles page renders translated copy in es passed 459ms
Sub-page i18n Frameworks page renders translated copy in en passed 717ms
Sub-page i18n Frameworks page renders translated copy in pt passed 860ms
Sub-page i18n Frameworks page renders translated copy in es passed 731ms
Sub-page i18n SideProjects page renders translated copy in en passed 270ms
Sub-page i18n SideProjects page renders translated copy in pt passed 195ms
Sub-page i18n SideProjects page renders translated copy in es passed 226ms
Sub-page i18n TestResults page renders translated copy in en passed 1.55s
Sub-page i18n TestResults page renders translated copy in pt passed 1.33s
Sub-page i18n TestResults page renders translated copy in es passed 1.35s
src/components/test-results/historyStats.test.js passed 3/3 passed 4.34s
Test Status Duration
historyStats buildSeries derives rates, seconds and failure indices passed 57ms
historyStats unstableTests counts failures per name across the window passed 1ms
historyStats handles empty and invalid input passed 5ms
src/components/Stack.test.jsx passed 3/3 passed 13.13s
Test Status Duration
Stack lists the production stack by category, every tool with a glyph passed 2.24s
Stack does not repeat the employer timeline: no company names as group titles passed 877ms
Stack carries the LinkedIn competencies: IoT hardware, reporters and CI/CD passed 781ms
tests/jest/mutation-shard.test.js passed 5/5 passed 5.57s
Test Status Duration
splitShards assigns every file to exactly one shard passed 25ms
splitShards balances shards by size passed 39ms
splitShards is deterministic regardless of input order passed 10ms
mutateFiles applies stryker include and exclude patterns passed 231ms
mergeReports unions files and testFiles, keeps metadata from the first shard passed 7ms
src/components/hooks/useFetch.test.jsx passed 3/3 passed 5.19s
Test Status Duration
useFetch should return data when fetch is successful passed 152ms
useFetch should return error when fetch fails passed 95ms
useFetch should return error when fetch throws an exception passed 74ms
src/components/test-results/CodeSample.test.jsx passed 3/3 passed 5.62s
Test Status Duration
CodeSample Component renders code with default javascript syntax highlighting passed 255ms
CodeSample Component renders with custom specified language passed 105ms
CodeSample Component falls back to javascript grammar when unknown language is provided passed 48ms
src/components/Loading.test.jsx passed 2/2 passed 6.79s
Test Status Duration
Loading Component renders loading status message with accessibility attributes passed 928ms
Loading Component returns valid JSX when called directly passed 17ms
tests/jest/main-chunk-reload.test.js passed 4/4 passed 7.70s
Test Status Duration
main.jsx handleChunkError reloads location on first asset load error passed 25ms
main.jsx handleChunkError prevents infinite reloads on consecutive errors within cooldown window passed 12ms
main.jsx handleChunkError does not reload for standard non-chunk runtime errors passed 26ms
main.jsx handleChunkError handles event object with nested error.message passed 1ms
src/i18n/routing.test.js passed 4/4 passed 5.81s
Test Status Duration
language routing helpers reads the language prefix from a path passed 41ms
language routing helpers maps a language onto a router basename passed 17ms
language routing helpers strips the prefix and keeps the rest of the path passed 84ms
language routing helpers localizes a path for a language, replacing any existing prefix passed 12ms
src/components/hooks/useInView.test.jsx passed 2/2 passed 6.58s
Test Status Duration
useInView falls back to visible when IntersectionObserver is missing passed 201ms
useInView starts pending once observed and flips to in on intersection, then disconnects passed 52ms
tests/jest/generate-test-data.test.js passed 3/3 passed 5.21s
Test Status Duration
generate-test-data coverage helpers normalizeCoveragePath returns project-relative paths passed 19ms
generate-test-data coverage helpers generateCoverageData splits totals and per-file metrics passed 20ms
generate-test-data coverage helpers generateCoverageData returns empty shape when report is missing passed 12ms
src/components/Reveal.test.jsx passed 2/2 passed 4.94s
Test Status Duration
Reveal shows everything at once when IntersectionObserver is missing passed 179ms
Reveal moves from pending to in once the node intersects passed 42ms
src/components/blog/blogDate.test.js passed 4/4 passed 5.46s
Test Status Duration
formatPostMonth formats dates in default english locale when lang is not passed passed 48ms
formatPostMonth formats dates with month boundaries correctly passed 17ms
formatPostMonth capitalizes the first letter and preserves the remainder of the formatted string passed 17ms
formatPostMonth formats dates in spanish and portuguese locales passed 15ms
src/components/test-results/runStatus.test.js passed 7/7 passed 5.06s
Test Status Duration
passRate prefers a provided passRate passed 20ms
passRate derives the rate from passed and total counts passed 6ms
passRate returns null without data or tests passed 10ms
runStatus reports loading before data arrives passed 9ms
runStatus reports unknown when neither suite has data passed 11ms
runStatus sums failures across unit and e2e suites passed 1ms
runStatus reports green when nothing failed passed 11ms
src/components/Security.test.jsx passed 2/2 passed 6.97s
Test Status Duration
Security and Performance Checks CertificatesModal renders safely without throwing when disabled/sunsetted passed 117ms
Security and Performance Checks Footer external links have rel="noopener noreferrer" passed 788ms
src/components/FooterNavigation.test.jsx passed 3/3 passed 7.56s
Test Status Duration
Footer Navigation Logic calls onOpenContact when clicking "Send Message" passed 800ms
Footer Navigation Logic makes "Send Message" the only primary call to action passed 126ms
Footer Navigation Logic does not throw when "Send Message" clicked without onOpenContact passed 224ms
src/data/certificates.test.js passed 4/4 passed 5.43s
Test Status Duration
Certificate Data Validation should have exactly 35 certificates passed 15ms
Certificate Data Validation all certificates should have required fields passed 353ms
Certificate Data Validation all certificates should have valid image paths passed 51ms
Certificate Data Validation all certificates should have valid LinkedIn URLs passed 29ms
src/i18n/i18n.test.js passed 5/5 passed 4.46s
Test Status Duration
i18n locale key parity pt has exactly the same keys as en passed 25ms
i18n locale key parity es has exactly the same keys as en passed 20ms
i18n locale key parity en has no empty translation values passed 18ms
i18n locale key parity pt has no empty translation values passed 14ms
i18n locale key parity es has no empty translation values passed 12ms
src/components/CrossPage.test.jsx passed 9/9 passed 20.89s
Test Status Duration
Cross-Page Consistency Home Page renders Navbar with brand logo passed 2.85s
Cross-Page Consistency Home Page renders Footer passed 1.58s
Cross-Page Consistency Home Page renders main navigation links passed 1.49s
Cross-Page Consistency Frameworks Page renders Navbar with brand logo passed 1.20s
Cross-Page Consistency Frameworks Page renders Footer passed 1.36s
Cross-Page Consistency Frameworks Page renders main navigation links passed 959ms
Cross-Page Consistency SideProjects Page renders Navbar with brand logo passed 397ms
Cross-Page Consistency SideProjects Page renders Footer passed 510ms
Cross-Page Consistency SideProjects Page renders main navigation links passed 599ms
tests/jest/navbar-responsive-css.test.js passed 1/1 passed 5.36s
Test Status Duration
Navbar responsive CSS scoping style.css does not apply small-breakpoint nav rules to nav.main-nav passed 24ms
src/components/frameworks/Frameworks.i18n.test.jsx passed 3/3 passed 9.31s
Test Status Duration
Frameworks i18n renders translated page copy in pt passed 1.33s
Frameworks i18n renders translated page copy in es passed 712ms
Frameworks i18n renders translated API section labels in Portuguese passed 1.59s
src/components/CertificatesModal.test.jsx passed 3/3 passed 5.48s
Test Status Duration
CertificatesModal Component (Disabled) returns null and does not render when isOpen is false passed 141ms
CertificatesModal Component (Disabled) returns null and does not render when isOpen is true (modal disabled) passed 17ms
CertificatesModal Component (Disabled) returns literal null when called as a function passed 8ms
src/components/PageHeader.test.jsx passed 2/2 passed 5.89s
Test Status Duration
PageHeader renders icon, heading, subtitle and children passed 484ms
PageHeader omits icon and subtitle when not provided passed 18ms
src/components/hooks/useKeyPress.test.jsx passed 3/3 passed 5.79s
Test Status Duration
useKeyPress should call action when matching key is pressed passed 105ms
useKeyPress should not call action when different key is pressed passed 17ms
useKeyPress should cleanup event listener on unmount passed 48ms
src/components/hooks/useModal.test.jsx passed 3/3 passed 3.55s
Test Status Duration
useModal should initialize with isOpen as false passed 65ms
useModal should set isOpen to true when openModal is called passed 12ms
useModal should set isOpen to false when closeModal is called passed 17ms
src/utils/inBrowserTestRunner.insecure.test.js passed 2/2 passed 3.94s
Test Status Duration
net-secure-context on a remote http host fails when the context is not secure passed 38ms
net-secure-context on a remote http host passes when the browser reports a secure context passed 5ms
src/components/Booking.test.jsx passed 1/1 passed 5.61s
Test Status Duration
Booking Functionality Footer Booking Button renders booking button with correct attributes passed 514ms
src/components/hooks/index.test.js passed 4/4 passed 3.21s
Test Status Duration
hooks index should export useKeyPress passed 5ms
hooks index should export useFetch passed 1ms
hooks index should export useModal passed 9ms
hooks index should export useTheme passed 8ms
src/components/Footer.i18n.test.jsx passed 1/1 passed 3.50s
Test Status Duration
Footer i18n renders Spanish connect copy when language is es passed 251ms