Unit and integration tests

Jest HTML Report

Generated Sep 23, 2026, 9:54:16 AM

62 Test suites
711 Total tests
711 Passed
0 Failed
100.00% Pass rate
637.94s Duration

Test Suites

tests/jest/certificates.test.js passed 52/52 passed 5.58s
Test Status Duration
Certificate Data Validation Certificate Count should have exactly 35 certificates passed 36ms
Certificate Data Validation Certificate Structure all certificates should have required fields passed 202ms
Certificate Data Validation Certificate Structure all certificate IDs should be unique and sequential passed 8ms
Certificate Data Validation Certificate Structure all titles should be non-empty strings passed 31ms
Certificate Data Validation Certificate Structure all categories should be non-empty strings passed 29ms
Certificate Data Validation File Paths all images should start with "images/" passed 24ms
Certificate Data Validation File Paths all thumbs should start with "images/thumbs/" passed 19ms
Certificate Data Validation File Paths image and thumb filenames should match passed 16ms
Certificate Data Validation File Paths all image files should exist passed 26ms
Certificate Data Validation File Paths all thumb files should exist passed 25ms
Certificate Data Validation LinkedIn URL Sources should have certificates from multiple sources passed 78ms
Certificate Data Validation LinkedIn URL Sources Udemy certificates should have correct URL format passed 11ms
Certificate Data Validation LinkedIn URL Sources LinkedIn CDN certificates should have correct URL format passed 6ms
Certificate Data Validation LinkedIn URL Sources Skilljar certificates should have correct URL format passed 2ms
Certificate Data Validation Certificate Title Uniqueness all certificate titles should be unique passed 4ms
Certificate Data Validation Category Distribution should have at least 3 different categories passed 4ms
Certificate Data Validation Category Distribution categories should be properly formatted (capitalized) passed 18ms
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 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #3 - Cybersecurity at Work (2020) passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #4 - Foundations of Building in Board passed 8ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #5 - Automated Tests with Cypress - Advanced passed 11ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #6 - Design Elements of Automated Tests passed 8ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #7 - Playwright UI + API (10h course) passed 9ms
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 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #10 - Best Practices in Test Automation with Cypress passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #11 - E2E Tests With Cypress passed 11ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #12 - Playwright Automation passed 10ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #13 - GraphQL Essential Training passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #14 - End-to-End JavaScript Testing with Cypress.io passed 12ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #15 - API Testing Foundations passed 8ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #16 - Gherkin Language - The Master Guide passed 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #17 - Learning Selenium passed 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #18 - Test Automation Foundations passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #19 - Working with Difficult People passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #20 - Automation Selenium WebDriver + Java passed 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #21 - Mobile Automation: Appium Cucumber Android & iOS + Jenkins passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #22 - Agile Management with Scrum passed 9ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #23 - Automation Test with Cypress - Basics passed 4ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #24 - Automation Test with Cypress - Intermediary passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #25 - Web Design for Beginners: Real World Coding in HTML & CSS passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #26 - Software Testing: Becoming an Expert passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #27 - Postman Introduction passed 7ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #28 - The Python Bibleā„¢ | Everything You Need to Program in Python passed 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #29 - GitHub Intensive Course passed 1ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #30 - Regular Expressions passed 8ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #31 - Python for Beginners (Python 3) passed 5ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #32 - Cypress - Modern Automation Testing from Scratch + Frameworks passed 6ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #33 - Swift 5 Programming For Beginners passed 18ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #34 - Certified ISTQB Agile Tester Foundation Level passed 2ms
Certificate Data Validation Individual Certificates (table-driven) Certificate #35 - GitHub Ultimate: Master Git and GitHub - Beginner to Expert passed 11ms
tests/jest/js-certificates-unit.test.js passed 52/52 passed 5.55s
Test Status Duration
certificates.js - Unit Tests File Structure and Exports file exists and is readable passed 26ms
certificates.js - Unit Tests File Structure and Exports contains certificate data array passed 6ms
certificates.js - Unit Tests File Structure and Exports contains CertificateModal class definition passed 5ms
certificates.js - Unit Tests File Structure and Exports contains getBasePath function passed 1ms
certificates.js - Unit Tests File Structure and Exports exports to window object passed 6ms
certificates.js - Unit Tests Certificate Data Validation has exactly 35 certificates passed 6ms
certificates.js - Unit Tests Certificate Data Validation all certificates have required properties passed 134ms
certificates.js - Unit Tests Certificate Data Validation all image paths use relative paths without ../ passed 33ms
certificates.js - Unit Tests Certificate Data Validation all thumb paths are in thumbs folder passed 23ms
certificates.js - Unit Tests Certificate Data Validation LinkedIn URLs use HTTPS protocol passed 13ms
certificates.js - Unit Tests Certificate Data Validation all categories are from valid list passed 17ms
certificates.js - Unit Tests Input Sanitization Logic escapeHtml properly handles special characters passed 1ms
certificates.js - Unit Tests Input Sanitization Logic validates inputs before processing passed 9ms
certificates.js - Unit Tests CertificateModal Class Methods has constructor method passed 0ms
certificates.js - Unit Tests CertificateModal Class Methods has all required methods passed 12ms
certificates.js - Unit Tests Navigation Logic uses modulo arithmetic for wrap-around passed 1ms
certificates.js - Unit Tests Navigation Logic handles both forward and backward navigation passed 7ms
certificates.js - Unit Tests Navigation Logic prevents negative index with + certificates.length passed 2ms
certificates.js - Unit Tests Error Handling checks if container exists passed 1ms
certificates.js - Unit Tests Error Handling logs error when container missing passed 12ms
certificates.js - Unit Tests Error Handling has early return on error passed 10ms
certificates.js - Unit Tests Error Handling warns when modal not initialized passed 0ms
certificates.js - Unit Tests Event Handling handles close button click passed 9ms
certificates.js - Unit Tests Event Handling handles navigation buttons passed 1ms
certificates.js - Unit Tests Event Handling implements keyboard navigation passed 4ms
certificates.js - Unit Tests Event Handling closes modal on background click passed 1ms
certificates.js - Unit Tests Accessibility includes ARIA labels for buttons passed 3ms
certificates.js - Unit Tests Accessibility implements lazy loading for images passed 1ms
certificates.js - Unit Tests Accessibility uses semantic button elements passed 11ms
certificates.js - Unit Tests UI State Management (Disabled Modal) clears active class for visibility passed 2ms
certificates.js - Unit Tests UI State Management (Disabled Modal) resets body scroll overflow passed 1ms
certificates.js - Unit Tests UI State Management (Disabled Modal) switches between grid and viewer display passed 1ms
certificates.js - Unit Tests Code Quality uses strict equality (===) passed 9ms
certificates.js - Unit Tests Code Quality uses const for immutable values passed 0ms
certificates.js - Unit Tests Code Quality uses template literals for HTML generation passed 6ms
certificates.js - Unit Tests Code Quality includes code documentation comments passed 1ms
certificates.js - Unit Tests Initialization waits for DOMContentLoaded passed 1ms
certificates.js - Unit Tests Initialization creates global window reference passed 1ms
certificates.js - Unit Tests Initialization provides fallback helper function passed 0ms
certificates.js - Unit Tests Initialization logs initialization messages passed 5ms
certificates.js - Unit Tests Functional Tests - getBasePath returns empty string for root path passed 48ms
certificates.js - Unit Tests Functional Tests - getBasePath returns ../ for /pages/ path passed 2ms
certificates.js - Unit Tests Functional Tests - getBasePath returns ../../ for nested /pages/folder/ path passed 1ms
certificates.js - Unit Tests Functional Tests - escapeHtml escapes HTML special characters passed 15ms
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 6ms
certificates.js - Unit Tests Image Path Handling generates correct paths for thumbnails passed 0ms
certificates.js - Unit Tests Image Path Handling generates correct paths for full images passed 12ms
certificates.js - Unit Tests LinkedIn Integration includes LinkedIn verification links passed 2ms
certificates.js - Unit Tests LinkedIn Integration handles certificates with LinkedIn URLs passed 5ms
certificates.js - Unit Tests LinkedIn Integration LinkedIn links open in new tab passed 1ms
tests/jest/security-improvements.test.js passed 31/31 passed 5.92s
Test Status Duration
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality has file-level JSDoc documentation passed 44ms
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 18ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality escapeHtml has JSDoc with security note passed 2ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality certificates array has JSDoc passed 9ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality CertificateModal class has JSDoc passed 1ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality constructor has parameter documentation passed 11ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality all major methods have JSDoc passed 14ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality key public methods marked with @public passed 7ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality methods have clear visibility documentation passed 10ms
Code Documentation and Security Enhancements Certificate Gallery - JSDoc Documentation Quality methods with parameters have @param documentation passed 33ms
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 9ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization escapeHtml function is defined passed 9ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization uses createElement for safe escaping passed 1ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization escapeHtml is used in generateCertificateGrid passed 2ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization alt attributes use escapeHtml passed 15ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization updateViewer uses textContent for XSS safety passed 12ms
Code Documentation and Security Enhancements XSS Attack Prevention and Input Sanitization does not use innerHTML for user content passed 9ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading thumbnail images have loading="lazy" attribute passed 1ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading images have decoding="async" for performance passed 12ms
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 3ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading main viewer image has async decoding passed 9ms
Code Documentation and Security Enhancements Image Performance Optimization - Lazy Loading all img tags use performance attributes passed 1ms
Code Documentation and Security Enhancements Code Quality Standards and Best Practices consistent JSDoc formatting passed 20ms
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 8ms
Code Documentation and Security Enhancements Code Quality Standards and Best Practices performance comments are present passed 0ms
Code Documentation and Security Enhancements Overall Documentation Coverage and Completeness all JavaScript files have JSDoc passed 14ms
Code Documentation and Security Enhancements Overall Documentation Coverage and Completeness documentation is comprehensive passed 10ms
src/App.test.jsx passed 12/12 passed 11.20s
Test Status Duration
App Component renders home route components passed 778ms
App Component renders articles route passed 120ms
App Component renders side-projects route passed 284ms
App Component renders frameworks route passed 118ms
App Component renders test-results route passed 76ms
App Component opens and closes Certificates Modal via Navbar passed 472ms
App Component Background Gradient Effect body has gradient background applied passed 639ms
App Component Background Gradient Effect gradient contains blue-ish colors passed 297ms
App Component Background Gradient Effect background attachment is fixed for all routes passed 242ms
App Component Background Gradient Effect gradient persists across SPA navigation passed 237ms
App Component Background Gradient Effect App component has minimum height of 100vh passed 206ms
App Component Background Gradient Effect gradient effect is applied to all page routes passed 515ms
src/components/Navbar.test.jsx passed 19/19 passed 14.80s
Test Status Duration
Navbar Component renders brand logo and text passed 719ms
Navbar Component renders navigation links passed 343ms
Navbar Component renders social, theme toggle, and CTA links passed 236ms
Navbar Component toggles theme on click in navbar passed 534ms
Navbar Component switches language from the compact navbar selector passed 1.36s
Navbar Component accepts onOpenCertificates callback prop passed 169ms
Navbar Component calls onOpenContact when Send me a message button is clicked passed 188ms
Navbar Component renders mobile menu toggle button passed 240ms
Navbar Component toggles mobile menu on click passed 640ms
Navbar Component closes mobile menu when a nav link is clicked passed 679ms
Navbar Component closes mobile menu when backdrop is clicked passed 741ms
Navbar Component closes mobile menu on Escape key passed 655ms
Navbar Component calculates and sets navigation height passed 262ms
Navbar Component applies correct styles to mobile menu and overlay when open passed 287ms
Navbar Component handles ResizeObserver when available passed 129ms
Navbar Component home link scroll-to-top scrolls to top when already on home and the page is scrolled down passed 316ms
Navbar Component home link scroll-to-top leaves navigation alone when the page is at the top passed 280ms
Navbar Component home link scroll-to-top navigates instead of scrolling when on another route passed 267ms
Navbar Component handles missing ResizeObserver gracefully passed 143ms
tests/jest/js-certificates-functional.test.js passed 25/25 passed 5.13s
Test Status Duration
certificates.js - Module Exports getBasePath function exports getBasePath function passed 126ms
certificates.js - Module Exports getBasePath function returns empty string for root path passed 39ms
certificates.js - Module Exports getBasePath function returns ../../ for /pages/something/ path (matches deep regex) passed 31ms
certificates.js - Module Exports getBasePath function returns ../../ for nested /pages/folder/ path passed 38ms
certificates.js - Module Exports getBasePath function returns ../ for /pages/ root listing passed 30ms
certificates.js - Module Exports getBasePath function handles root path with index.html passed 40ms
certificates.js - Module Exports escapeHtml function exports escapeHtml function passed 40ms
certificates.js - Module Exports escapeHtml function escapes < and > characters passed 30ms
certificates.js - Module Exports escapeHtml function escapes complete script tag passed 37ms
certificates.js - Module Exports escapeHtml function escapes ampersands passed 22ms
certificates.js - Module Exports escapeHtml function escapes quotes via textContent semantics passed 23ms
certificates.js - Module Exports escapeHtml function handles empty string passed 21ms
certificates.js - Module Exports escapeHtml function handles regular text without special chars passed 22ms
certificates.js - Module Exports escapeHtml function handles multiple special characters passed 35ms
certificates.js - Module Exports certificates data exports certificates array passed 21ms
certificates.js - Module Exports certificates data has exactly 35 certificates passed 22ms
certificates.js - Module Exports certificates data all certificates have required properties passed 330ms
certificates.js - Module Exports certificates data certificate IDs are sequential from 1 to 35 passed 55ms
certificates.js - Module Exports certificates data all image paths start with images/ passed 76ms
certificates.js - Module Exports certificates data all certificates have valid categories passed 51ms
certificates.js - Module Exports certificates data LinkedURL URLs use HTTPS when present passed 92ms
certificates.js - Module Exports CertificateModal class exports CertificateModal class passed 67ms
certificates.js - Module Exports CertificateModal class can instantiate CertificateModal passed 55ms
certificates.js - Module Exports CertificateModal class CertificateModal has expected methods passed 30ms
certificates.js - Module Exports CertificateModal class CertificateModal initializes currentIndex to 0 passed 22ms
tests/jest/js-certificates-modal.test.js passed 39/39 passed 21.86s
Test Status Duration
CertificateModal - Instance Behavior open() method (Disabled) does not add active class to container when modal is disabled passed 1.01s
CertificateModal - Instance Behavior open() method (Disabled) does not set body overflow to hidden when modal is disabled passed 611ms
CertificateModal - Instance Behavior open() method (Disabled) does not call showGrid when modal is disabled passed 524ms
CertificateModal - Instance Behavior close() method removes active class from container passed 409ms
CertificateModal - Instance Behavior close() method restores body overflow passed 383ms
CertificateModal - Instance Behavior showGrid() method displays grid element passed 398ms
CertificateModal - Instance Behavior showGrid() method hides viewer element passed 391ms
CertificateModal - Instance Behavior openCertificate(index) method sets currentIndex to provided index passed 288ms
CertificateModal - Instance Behavior openCertificate(index) method hides grid and displays viewer passed 321ms
CertificateModal - Instance Behavior openCertificate(index) method calls updateViewer after setting index passed 534ms
CertificateModal - Instance Behavior navigate(direction) method increments index when direction is 1 passed 321ms
CertificateModal - Instance Behavior navigate(direction) method decrements index when direction is -1 passed 345ms
CertificateModal - Instance Behavior navigate(direction) method wraps forward at end (modulo logic) passed 485ms
CertificateModal - Instance Behavior navigate(direction) method wraps backward at start (modulo logic) passed 446ms
CertificateModal - Instance Behavior navigate(direction) method calls updateViewer after navigation passed 357ms
CertificateModal - Instance Behavior navigate(direction) method handles multiple navigations correctly passed 405ms
CertificateModal - Instance Behavior updateViewer() method updates image src with certificate image path passed 336ms
CertificateModal - Instance Behavior updateViewer() method updates image alt text with certificate title passed 384ms
CertificateModal - Instance Behavior updateViewer() method updates title element with certificate title passed 397ms
CertificateModal - Instance Behavior updateViewer() method updates category element with certificate category passed 358ms
CertificateModal - Instance Behavior updateViewer() method updates currentCert counter passed 342ms
CertificateModal - Instance Behavior updateViewer() method shows LinkedIn button when linkedinUrl exists passed 437ms
CertificateModal - Instance Behavior updateViewer() method hides LinkedIn button when linkedinUrl is missing passed 315ms
CertificateModal - Instance Behavior updateViewer() method updates viewFullBtn href with certificate image path passed 335ms
CertificateModal - Instance Behavior updateViewer() method applies basePath to image src and viewFullBtn passed 791ms
CertificateModal - Instance Behavior Event listener attachment attachEventListeners is called during init passed 713ms
CertificateModal - Instance Behavior Event listener attachment close button triggers close() passed 281ms
CertificateModal - Instance Behavior Event listener attachment next button navigates forward passed 307ms
CertificateModal - Instance Behavior Event listener attachment prev button navigates backward passed 296ms
CertificateModal - Instance Behavior Event listener attachment backToGrid button shows grid passed 348ms
CertificateModal - Instance Behavior Event listener attachment clicking modal background closes modal passed 372ms
CertificateModal - Instance Behavior Event listener attachment Escape key closes active modal passed 267ms
CertificateModal - Instance Behavior Event listener attachment navigate methods work when called directly passed 399ms
CertificateModal - Instance Behavior Event listener attachment showGrid method works when called directly passed 331ms
CertificateModal - Instance Behavior Event listener attachment keyboard events ignored when modal is not active passed 387ms
CertificateModal - Instance Behavior Render grid view grid items are created for certificates passed 296ms
CertificateModal - Instance Behavior Render grid view grid items are clickable to open certificate passed 373ms
CertificateModal - Instance Behavior Constructor edge cases returns early when modal container not found passed 372ms
CertificateModal - Instance Behavior Constructor edge cases initializes certificates array from module passed 314ms
src/components/SideProjects.test.jsx passed 17/17 passed 17.17s
Test Status Duration
SideProjects (tabbed project showcases) renders one tab per project with LoopBeat selected by default passed 1.68s
SideProjects (tabbed project showcases) shows only the LoopBeat showcase by default passed 860ms
SideProjects (tabbed project showcases) switches to the QA Forge showcase when its tab is clicked passed 925ms
SideProjects (tabbed project showcases) switches to the HELLGATE showcase when its tab is clicked passed 895ms
SideProjects (tabbed project showcases) updates the URL hash when switching projects passed 1.08s
SideProjects (tabbed project showcases) opens directly on the project named in the URL hash passed 295ms
SideProjects (tabbed project showcases) moves between projects with arrow keys passed 1.24s
SideProjects (tabbed project showcases) renders all 6 LoopBeat architecture pillars passed 770ms
SideProjects (tabbed project showcases) renders all 6 QA Forge tool pillars passed 1.02s
SideProjects (tabbed project showcases) renders all 6 HELLGATE architecture pillars passed 957ms
SideProjects (tabbed project showcases) mentions the key services and details of each project passed 1.52s
SideProjects (tabbed project showcases) renders the LoopBeat live app link opening securely in a new tab passed 263ms
SideProjects (tabbed project showcases) renders the QA Forge live app link opening securely in a new tab passed 605ms
SideProjects (tabbed project showcases) renders the HELLGATE live app link opening securely in a new tab passed 431ms
SideProjects (tabbed project showcases) renders 2 screenshots that fall back to a placeholder on load error passed 446ms
SideProjects (tabbed project showcases) opens the screenshot gallery when a screenshot is clicked passed 522ms
SideProjects (tabbed project showcases) hero preview falls back to a placeholder when the image is missing passed 274ms
src/components/Contact.test.jsx passed 7/7 passed 7.70s
Test Status Duration
Contact Component renders contact form with correct access key passed 1.40s
Contact Component handles successful submission passed 596ms
Contact Component prevents submission if too fast (bot check) passed 215ms
Contact Component handles API error (success: false) passed 494ms
Contact Component handles network error passed 627ms
Contact Component prevents submission if honeypot is filled (bot check) passed 262ms
Contact Component logs error when Web3Forms key is not configured passed 105ms
src/components/Articles.test.jsx passed 16/16 passed 19.68s
Test Status Duration
Articles Component displays Articles banner and themes passed 2.51s
Articles Component displays article cards including in-depth markdown and external articles passed 1.13s
Articles Component filters by Home Assistant theme passed 1.18s
Articles Component filters by Cypress theme passed 1.40s
Articles Component filters by search input passed 977ms
Articles Component renders translated follow card copy passed 728ms
Articles Component Hasura GraphQL Medium article link should be correct passed 1.00s
Articles Component Auth0 LinkedIn article link should be correct passed 785ms
Articles Component Cyprompt AI Dev.to article link should be correct passed 892ms
Articles Component Cyprompt article card should have correct tags passed 920ms
Articles Component Cyprompt article should have psychology icon passed 667ms
Articles Component Global Hooks login article link should be correct passed 1.05s
Articles Component Global Hooks article card should have correct tags passed 747ms
Articles Component Cypress 16 migration article should render with the correct link and metadata passed 736ms
Articles Component Home Assistant article points directly to dev.to passed 573ms
Articles Component Restored Cypress session article points directly to dev.to passed 689ms
src/components/frameworks/AdvancedTesting.test.jsx passed 19/19 passed 9.54s
Test Status Duration
AdvancedTesting Shared endpoints card renders "Endpoints Tested" label passed 646ms
AdvancedTesting Shared endpoints card renders 3 endpoint badges as links passed 892ms
AdvancedTesting API cards grid renders 3 API cards passed 241ms
AdvancedTesting k6 card renders title and subtitle passed 229ms
AdvancedTesting k6 card renders stats passed 257ms
AdvancedTesting k6 card renders 4 feature tiles passed 208ms
AdvancedTesting k6 card renders GitHub link passed 242ms
AdvancedTesting Jest + Supertest card renders title and subtitle passed 178ms
AdvancedTesting Jest + Supertest card renders stats passed 272ms
AdvancedTesting Jest + Supertest card renders 4 feature tiles passed 120ms
AdvancedTesting Jest + Supertest card renders GitHub link passed 185ms
AdvancedTesting Postman / Newman card renders title and subtitle passed 231ms
AdvancedTesting Postman / Newman card renders stats passed 181ms
AdvancedTesting Postman / Newman card renders 4 feature tiles passed 198ms
AdvancedTesting Postman / Newman card renders GitHub link passed 314ms
AdvancedTesting All CTA links all 3 API links open in new tab securely passed 246ms
AdvancedTesting All CTA links all CTA links have primary hover class passed 290ms
AdvancedTesting All CTA links renders live report links for all API repos passed 218ms
AdvancedTesting Theme CSS variables no card inlines its own accent, so every card reads as one palette passed 135ms
src/components/hooks/useTheme.test.jsx passed 12/12 passed 4.34s
Test Status Duration
useTheme hook defaults to dark theme when no saved preference exists passed 155ms
useTheme hook respects saved light theme from localStorage passed 33ms
useTheme hook follows OS prefers-color-scheme: light when nothing is stored passed 22ms
useTheme hook stays dark when the OS states no preference passed 22ms
useTheme hook a stored choice outranks the OS preference passed 26ms
useTheme hook toggles theme and updates localStorage and DOM passed 47ms
useTheme hook setTheme updates directly to light or dark passed 23ms
useTheme hook applyThemeToDocument updates meta theme-color tag if present passed 8ms
useDocumentTheme reads the theme stamped on <html> passed 70ms
useDocumentTheme falls back to dark when nothing is stamped or stored passed 22ms
useDocumentTheme re-renders when applyThemeToDocument flips the attribute passed 149ms
useDocumentTheme stops observing after unmount passed 39ms
src/components/frameworks/FrameworkCard.test.jsx passed 16/16 passed 5.96s
Test Status Duration
FrameworkCard renders card title and subtitle from i18n passed 432ms
FrameworkCard renders the themed icon for playwright passed 172ms
FrameworkCard renders only the first 3 stats passed 135ms
FrameworkCard renders only the first 6 highlights passed 120ms
FrameworkCard renders CTA link with correct attributes passed 369ms
FrameworkCard renders secondary live report CTA when provided passed 220ms
FrameworkCard does not render live report CTA when secondaryCta is omitted passed 144ms
FrameworkCard renders feature icons from framework metadata passed 79ms
FrameworkCard leaves the accent to the stylesheet instead of inlining a per-card hue passed 51ms
FrameworkCard themes uses cypress theme for cypress id passed 55ms
FrameworkCard themes uses selenium theme for selenium id passed 80ms
FrameworkCard themes falls back to playwright theme for unknown id passed 76ms
FrameworkCard icons renders the CTA icon inside the View on GitHub link passed 117ms
FrameworkCard icons renders the secondary CTA icon inside the Live Report link passed 86ms
FrameworkCard icons renders every feature icon from metadata passed 165ms
FrameworkCard icons renders all icons as decorative material icons passed 102ms
tests/jest/csp-validation.test.js passed 11/11 passed 4.50s
Test Status Duration
CSP Hash Generation should generate csp-hashes.json during build passed 31ms
CSP Hash Generation should generate correct SHA-256 hash for JSON-LD script passed 23ms
CSP Hash Generation should inject CSP hash into _headers file passed 10ms
CSP Hash Generation should NOT contain unsafe-inline in script-src passed 13ms
CSP Hash Generation should contain required CSP directives passed 24ms
CSP Hash Generation should allow required external script sources passed 2ms
CSP Hash Generation should keep fonts and styles first-party passed 13ms
CSP Hash Generation should temporarily allow unsafe-inline for styles passed 7ms
CSP Implementation Files should have gtag-init.js in dist/js/ passed 1ms
CSP Implementation Files should have vite-plugin-csp-hash.js at root passed 11ms
CSP Implementation Files should have generate-csp-headers.js script passed 9ms
tests/jest/gtag-init.test.js passed 13/13 passed 4.05s
Test Status Duration
gtag-init.js - Google Analytics Initialization File Loading and Structure file exists and can be loaded passed 21ms
gtag-init.js - Google Analytics Initialization File Loading and Structure contains CSP compliance comment passed 10ms
gtag-init.js - Google Analytics Initialization DataLayer Initialization initializes window.dataLayer as empty array when undefined passed 28ms
gtag-init.js - Google Analytics Initialization DataLayer Initialization preserves existing dataLayer if already defined passed 31ms
gtag-init.js - Google Analytics Initialization gtag Function creates window.gtag function passed 14ms
gtag-init.js - Google Analytics Initialization gtag Function gtag pushes arguments to dataLayer passed 14ms
gtag-init.js - Google Analytics Initialization gtag Function gtag handles multiple calls passed 35ms
gtag-init.js - Google Analytics Initialization gtag Function gtag preserves all arguments passed to it passed 5ms
gtag-init.js - Google Analytics Initialization Integration with Google Analytics follows Google Analytics initialization pattern passed 4ms
gtag-init.js - Google Analytics Initialization Integration with Google Analytics supports event tracking passed 12ms
gtag-init.js - Google Analytics Initialization Integration with Google Analytics supports custom parameters passed 8ms
gtag-init.js - Google Analytics Initialization CSP Compliance does not use eval or Function constructor passed 12ms
gtag-init.js - Google Analytics Initialization CSP Compliance does not contain inline event handlers passed 2ms
src/components/blog/Blog.test.jsx passed 11/11 passed 10.88s
Test Status Duration
Blog Components BlogIndex renders blog header and articles passed 705ms
Blog Components BlogIndex filters articles by search input passed 692ms
Blog Components BlogIndex shows locale month and reading time on cards passed 288ms
Blog Components BlogIndex filters articles by tag button passed 788ms
Blog Components BlogIndex renders brand badges on post cards passed 204ms
Blog Components BlogPost renders single blog post with content and TOC passed 1.71s
Blog Components BlogPost renders Home Assistant blog post with cover image and content passed 465ms
Blog Components BlogPost renders Not Found state for invalid slug or unpublished draft passed 83ms
Blog Components blogIcons returns Home Assistant brand metadata for homeassistant posts passed 15ms
Blog Components blogIcons returns Cypress brand metadata for cypress posts passed 25ms
Blog Components blogIcons returns tag icons for known tags and null for unknown tags passed 11ms
src/components/TestResults.test.jsx passed 12/12 passed 33.69s
Test Status Duration
TestResults page renders the page claim and the four numbered sections passed 3.10s
TestResults page shows the failing count on the status plate and the run metadata passed 4.48s
TestResults page reports all green when nothing failed passed 1.86s
TestResults page displays Jest metrics and expands the suite list passed 2.26s
TestResults page displays E2E metrics computed from steps and expands flows into steps passed 2.89s
TestResults page displays coverage metrics passed 2.17s
TestResults page links every report to its static HTML page passed 2.02s
TestResults page renders four highlighted code samples labelled with their file paths passed 1.31s
TestResults page falls back to the bundled E2E snapshot when the Gist fetch fails passed 1.62s
TestResults page shows the empty states when neither Gist nor snapshot has data passed 2.18s
TestResults page loads test-data.js when the snapshot is not preloaded passed 2.02s
TestResults page reports a load failure when test-data.js cannot be fetched passed 1.19s
src/components/CookieConsent.test.jsx passed 10/10 passed 5.61s
Test Status Duration
CookieConsent Component renders banner when no cookie is present passed 723ms
CookieConsent Component does not render banner when cookie is already set passed 72ms
CookieConsent Component sets cookie and initializes GA on accept passed 193ms
CookieConsent Component sets cookie and does not initialize GA on decline passed 82ms
CookieConsent Component checks if running in production environment passed 71ms
CookieConsent Component tracks consent acceptance event with gtag passed 109ms
CookieConsent Component does not reinitialize analytics if gtag already exists passed 163ms
CookieConsent Component marks the page while the banner is visible so the report FAB can move up passed 82ms
CookieConsent Component clears banner offset styles after accepting cookies passed 140ms
CookieConsent Component clears banner offset styles after declining cookies passed 194ms
src/components/Skills.test.jsx passed 16/16 passed 31.40s
Test Status Duration
Skills Component displays blended What I Do & Tech Stack heading passed 2.17s
Skills Component groups skills into capability bands when "All Capabilities" tab is active passed 1.69s
Skills Component does NOT display WebAssembly category anywhere passed 1.37s
Skills Component filters bands when clicking tab buttons including "How I lead" passed 3.65s
Skills Component shows capability outcome lines alongside the tools passed 884ms
Skills Component lists Cursor in the GenAI section passed 980ms
Skills Component shows non-technical Team Leadership & Strategy chips with rich management skills passed 1.91s
Skills Component displays Programming Languages section passed 1.34s
Skills Component lists Next.js in the Programming Languages section passed 1.13s
Skills Component displays E2E Test Automation section passed 1.41s
Skills Component groups SQL validation under API Testing passed 1.26s
Skills Component displays CI/CD & DevOps section with Git passed 1.37s
Skills Component keeps Test Reporting focused on report outputs passed 1.24s
Skills Component displays Shell & Environment section passed 1.27s
Skills Component renders skill tiles with brand logos inside color-themed category cards passed 1.03s
Skills Component renders tablist accessibility container and tab roles correctly passed 903ms
src/components/sideprojects/SideProjects.data.test.js passed 19/19 passed 4.55s
Test Status Duration
sideProjectsList lists all showcased projects in order passed 13ms
sideProjectsList LoopBeat exposes the fields the showcase needs passed 60ms
sideProjectsList QA Forge exposes the fields the showcase needs passed 41ms
sideProjectsList HELLGATE exposes the fields the showcase needs passed 74ms
loopBeatStructure exposes core identity fields passed 1ms
loopBeatStructure has a primary external link passed 12ms
loopBeatStructure covers the expected architecture pillars passed 5ms
loopBeatStructure describes the full storage pipeline passed 15ms
loopBeatStructure lists app screenshots under public/images/loopbeat passed 10ms
qaForgeStructure exposes core identity fields passed 3ms
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 0ms
qaForgeStructure lists app screenshots under public/images/qaforge passed 9ms
hellGateStructure exposes core identity fields passed 3ms
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 9ms
hellGateStructure lists app screenshots under public/images/hellgate passed 1ms
src/components/sideprojects/ScreenshotGallery.test.jsx passed 6/6 passed 7.09s
Test Status Duration
ScreenshotGallery renders screenshots as zoomable buttons passed 615ms
ScreenshotGallery opens a zoomed gallery dialog when a screenshot is clicked passed 389ms
ScreenshotGallery navigates between screenshots in the gallery passed 357ms
ScreenshotGallery supports arrow-key navigation inside the gallery passed 228ms
ScreenshotGallery closes the gallery with Escape, close button, and backdrop click passed 581ms
ScreenshotGallery falls back to a placeholder and removes the zoom button when an image fails passed 190ms
src/StaticAssets.test.js passed 12/12 passed 2.88s
Test Status Duration
Static Assets & Configuration index.html Favicons has apple-touch-icon passed 24ms
Static Assets & Configuration index.html Favicons has 32x32 PNG favicon passed 1ms
Static Assets & Configuration index.html Favicons has 16x16 PNG favicon passed 11ms
Static Assets & Configuration index.html Favicons has webmanifest passed 8ms
Static Assets & Configuration Performance Optimizations loads no third-party font or icon CSS passed 10ms
Static Assets & Configuration Performance Optimizations preloads the self-hosted display and icon fonts passed 11ms
Static Assets & Configuration Performance Optimizations does not include CSP meta tag (CSP is enforced via HTTP headers) passed 9ms
Static Assets & Configuration SEO Meta Tags has meta description passed 0ms
Static Assets & Configuration SEO Meta Tags has canonical link passed 1ms
Static Assets & Configuration SEO Meta Tags has Open Graph tags passed 12ms
Static Assets & Configuration SEO Meta Tags has Twitter card tags passed 1ms
Static Assets & Configuration CSS Variables defines core theme colors passed 2ms
src/components/LiveTestRunner.test.jsx passed 8/8 passed 17.81s
Test Status Duration
LiveTestRunner Component renders in initial idle state with run button and test stats passed 890ms
LiveTestRunner Component executes all tests when run button is clicked passed 5.63s
LiveTestRunner Component filters tests by status pills passed 251ms
LiveTestRunner Component suite list is hidden until revealed passed 745ms
LiveTestRunner Component suites start collapsed and toggle on click passed 438ms
LiveTestRunner Component offers collapse all after a run, then expand all again passed 5.12s
LiveTestRunner Component running the suite expands every suite passed 508ms
LiveTestRunner Component passes WAI-ARIA dialog compliance when CookieConsent banner is active in the DOM passed 58ms
src/components/frameworks/Frameworks.data.test.js passed 61/61 passed 4.44s
Test Status Duration
Frameworks.data exports an array of 9 frameworks passed 26ms
Frameworks.data llmEval has required fields passed 37ms
Frameworks.data promptfoo has required fields passed 35ms
Frameworks.data playwright has required fields passed 80ms
Frameworks.data cypressTs has required fields passed 21ms
Frameworks.data cypressBdd has required fields passed 9ms
Frameworks.data openapi has required fields passed 11ms
Frameworks.data pact has required fields passed 12ms
Frameworks.data seleniumJunit has required fields passed 27ms
Frameworks.data seleniumTestng has required fields passed 21ms
Frameworks.data llmEval has exactly 6 feature icons passed 14ms
Frameworks.data promptfoo has exactly 6 feature icons passed 12ms
Frameworks.data playwright has exactly 6 feature icons passed 11ms
Frameworks.data cypressTs has exactly 6 feature icons passed 16ms
Frameworks.data cypressBdd has exactly 6 feature icons passed 2ms
Frameworks.data openapi has exactly 6 feature icons passed 43ms
Frameworks.data pact has exactly 6 feature icons passed 12ms
Frameworks.data seleniumJunit has exactly 6 feature icons passed 2ms
Frameworks.data seleniumTestng has exactly 6 feature icons passed 10ms
Frameworks.data llmEval has a valid CTA with href and icon passed 9ms
Frameworks.data promptfoo has a valid CTA with href and icon passed 0ms
Frameworks.data playwright has a valid CTA with href and icon passed 13ms
Frameworks.data cypressTs has a valid CTA with href and icon passed 1ms
Frameworks.data cypressBdd has a valid CTA with href and icon passed 14ms
Frameworks.data openapi has a valid CTA with href and icon passed 1ms
Frameworks.data pact has a valid CTA with href and icon passed 1ms
Frameworks.data seleniumJunit has a valid CTA with href and icon passed 12ms
Frameworks.data seleniumTestng has a valid CTA with href and icon passed 0ms
Frameworks.data framework IDs match recognized frameworks passed 12ms
Frameworks.data contains AI LLM entries passed 2ms
Frameworks.data contains Contract Testing entries passed 16ms
Frameworks.data contains Legacy E2E entries passed 1ms
Frameworks.data all CTA hrefs are unique passed 1ms
Frameworks.data eight frameworks expose a live report link passed 20ms
Frameworks.data icons llmEval uses the shared code icon for the View on GitHub CTA passed 1ms
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 14ms
Frameworks.data icons cypressTs uses the shared code icon for the View on GitHub CTA passed 0ms
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 14ms
Frameworks.data icons pact uses the shared code icon for the View on GitHub CTA passed 16ms
Frameworks.data icons seleniumJunit uses the shared code icon for the View on GitHub CTA passed 1ms
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 0ms
Frameworks.data icons promptfoo uses the shared assessment icon for the Live Report CTA passed 1ms
Frameworks.data icons playwright uses the shared assessment icon for the Live Report CTA passed 10ms
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 1ms
Frameworks.data icons openapi uses the shared assessment icon for the Live Report CTA passed 4ms
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 1ms
Frameworks.data icons every CTA icon across all frameworks is identical passed 16ms
Frameworks.data icons llmEval feature icons are lowercase material icon ligatures passed 10ms
Frameworks.data icons promptfoo feature icons are lowercase material icon ligatures passed 14ms
Frameworks.data icons playwright feature icons are lowercase material icon ligatures passed 1ms
Frameworks.data icons cypressTs feature icons are lowercase material icon ligatures passed 13ms
Frameworks.data icons cypressBdd feature icons are lowercase material icon ligatures passed 2ms
Frameworks.data icons openapi feature icons are lowercase material icon ligatures passed 9ms
Frameworks.data icons pact feature icons are lowercase material icon ligatures passed 12ms
Frameworks.data icons seleniumJunit feature icons are lowercase material icon ligatures passed 2ms
Frameworks.data icons seleniumTestng feature icons are lowercase material icon ligatures passed 11ms
src/components/Hero.test.jsx passed 12/12 passed 8.93s
Test Status Duration
Hero Component Profile Section displays profile image with correct attributes passed 574ms
Hero Component Profile Section displays correct name passed 657ms
Hero Component Profile Section displays professional title passed 200ms
Hero Component Profile Section displays location passed 191ms
Hero Component Hero pitch and CTAs renders the portrait without an overlaid stat badge passed 240ms
Hero Component Hero pitch and CTAs renders primary homepage CTAs passed 507ms
Hero Component Hero pitch and CTAs calls onOpenContact when send message is clicked passed 479ms
Hero Component Hero pitch and CTAs renders live test links that lead to the Test Results page passed 373ms
Hero Component Quick Impact Metrics displays Quick Impact Metrics heading passed 190ms
Hero Component Quick Impact Metrics displays supporting metrics passed 198ms
Hero portrait follows the document theme uses the white-backdrop headshot when <html data-theme="light"> passed 86ms
Hero portrait follows the document theme swaps the headshot live when the theme toggles passed 251ms
src/components/Frameworks.test.jsx passed 40/40 passed 43.41s
Test Status Duration
Frameworks Component renders main title and description passed 1.70s
Frameworks Component Shared saucedemo.com target card renders saucedemo.com badge passed 804ms
Frameworks Component Shared saucedemo.com target card saucedemo.com badge links to the site passed 1.74s
Frameworks Component Shared saucedemo.com target card renders Testing label passed 683ms
Frameworks Component renders correct number of framework cards renders 9 framework cards and 12 total GitHub links across all sections passed 1.17s
Frameworks Component renders correct number of framework cards renders 11 live report links for repos that publish HTML reports passed 1.07s
Frameworks Component renders correct number of framework cards selenium JUnit card omits live report CTA passed 944ms
Frameworks Component Playwright Section renders card title and subtitle passed 896ms
Frameworks Component Playwright Section renders stat badges passed 893ms
Frameworks Component Playwright Section renders all 6 highlights passed 1.09s
Frameworks Component Playwright Section renders View on GitHub CTA link with correct href passed 888ms
Frameworks Component Cypress TypeScript Section renders card title and subtitle passed 661ms
Frameworks Component Cypress TypeScript Section renders stat badges passed 819ms
Frameworks Component Cypress TypeScript Section renders all 6 highlights passed 1.11s
Frameworks Component Cypress TypeScript Section renders CTA link with correct href passed 1.16s
Frameworks Component Cypress BDD Section renders card title and subtitle passed 614ms
Frameworks Component Cypress BDD Section renders stat badges passed 652ms
Frameworks Component Cypress BDD Section renders all 6 highlights passed 972ms
Frameworks Component Cypress BDD Section renders CTA link with correct href passed 984ms
Frameworks Component Selenium JUnit Section renders card title and subtitle passed 646ms
Frameworks Component Selenium JUnit Section renders stat badges passed 566ms
Frameworks Component Selenium JUnit Section renders all 6 highlights passed 859ms
Frameworks Component Selenium JUnit Section renders CTA link with correct href passed 814ms
Frameworks Component Selenium TestNG Section renders card title and subtitle passed 476ms
Frameworks Component Selenium TestNG Section renders stat badges passed 697ms
Frameworks Component Selenium TestNG Section renders all 6 highlights passed 1.30s
Frameworks Component Selenium TestNG Section renders CTA link with correct href passed 1.13s
Frameworks Component API & Performance Testing Section renders section header and description passed 697ms
Frameworks Component API & Performance Testing Section renders shared endpoints card with label passed 539ms
Frameworks Component API & Performance Testing Section renders endpoint badges as links with correct hrefs passed 1.08s
Frameworks Component API & Performance Testing Section renders k6 card title, subtitle, stats, and highlights passed 1.13s
Frameworks Component API & Performance Testing Section renders Supertest card title, subtitle, stats, and highlights passed 925ms
Frameworks Component API & Performance Testing Section renders Postman card title, subtitle, stats, and highlights passed 1.64s
Frameworks Component API & Performance Testing Section renders View on GitHub links for all 3 API repos with correct hrefs passed 525ms
Frameworks Component API & Performance Testing Section all API CTA links open in new tab passed 539ms
Frameworks Component AI & LLM Testing Section renders section header and AI LLM cards passed 649ms
Frameworks Component AI & LLM Testing Section renders correct GitHub repository and Live Report links for AI LLM examples passed 1.26s
Frameworks Component Contract Testing Section renders section header and Contract Testing cards passed 800ms
Frameworks Component Contract Testing Section renders correct GitHub repository and Live Report links for Contract Testing examples passed 1.06s
Frameworks Component Legacy E2E Testing Examples Section renders Legacy E2E section header and moved Selenium cards passed 516ms
tests/jest/certificates-min.test.js passed 7/7 passed 3.82s
Test Status Duration
certificates.min.js - Minified Version File Verification minified file exists passed 16ms
certificates.min.js - Minified Version File Verification minified file is smaller than source file passed 12ms
certificates.min.js - Minified Version File Verification contains expected minified patterns passed 7ms
certificates.min.js - Minified Version File Verification contains certificate data passed 1ms
certificates.min.js - Minified Version File Verification contains key functions from source passed 12ms
certificates.min.js - Minified Version Content Integrity does not contain syntax errors passed 6ms
certificates.min.js - Minified Version Content Integrity file is not empty passed 5ms
src/components/hooks/useFocusTrap.test.jsx passed 5/5 passed 3.92s
Test Status Duration
useFocusTrap should focus the first element when active passed 194ms
useFocusTrap should not focus the first element when inactive passed 22ms
useFocusTrap should trap focus inside the container passed 77ms
useFocusTrap should trap focus when shift-tabbing from first element passed 44ms
useFocusTrap should do nothing if no focusable elements found passed 15ms
tests/jest/report-io.test.js passed 3/3 passed 3.15s
Test Status Duration
report-io E2E resolution ensureE2EReportOnDisk copies a discovered summary into the canonical path passed 42ms
report-io E2E resolution readE2EReport returns null when no summary exists in an empty tree passed 13ms
report-io E2E resolution resolveE2EBaseUrl maps CI preview hosts to the public site URL passed 17ms
src/i18n/detection.test.js passed 8/8 passed 5.55s
Test Status Duration
i18n language detection falls back to English when nothing is set passed 122ms
i18n language detection uses the navigator language when supported passed 135ms
i18n language detection maps a regional code onto its base language passed 144ms
i18n language detection a saved localStorage choice wins over the navigator language passed 259ms
i18n language switching changeLanguage persists the choice to localStorage passed 165ms
i18n language switching changeLanguage syncs <html lang> to the base language passed 234ms
i18n language switching <html lang> is set on init from the detected language passed 206ms
i18n language switching falls back to English content for an unsupported language passed 159ms
src/components/skills/skillsData.test.js passed 6/6 passed 8.58s
Test Status Duration
skillsData exports a non-empty array of skill categories passed 17ms
skillsData does not contain the WebAssembly (wasm) category passed 10ms
skillsData contains expanded non-technical Team Leadership & Strategy category passed 24ms
skillsData ensures all category i18nKeys are unique passed 9ms
skillsData validates structure of each category passed 181ms
skillsData validates structure and icons of each skill item passed 429ms
tests/jest/generate-html-reports.test.js passed 5/5 passed 4.75s
Test Status Duration
generate-html-reports coverage helpers normalizeCoveragePath strips absolute project paths passed 28ms
generate-html-reports coverage helpers getCoverageReport prefers raw coverage with file entries passed 8ms
generate-html-reports coverage helpers getCoverageReport falls back to dashboard coverageFiles when raw files are missing passed 3ms
generate-html-reports coverage helpers collectCoverageFiles normalizes paths and sorts worst-first passed 12ms
generate-html-reports coverage helpers isCoverageLikelyIncomplete detects partial instrumentation runs passed 3ms
tests/jest/css-variables.test.js passed 3/3 passed 4.22s
Test Status Duration
CSS Variables & Theming should define core theme colors passed 61ms
CSS Variables & Theming should use consistent gradient variables passed 1ms
CSS Variables & Theming should consistency usage of z-index passed 23ms
src/components/Footer.test.jsx passed 5/5 passed 7.67s
Test Status Duration
Footer Component renders footer content passed 609ms
Footer Component renders social links with correct hrefs passed 645ms
Footer Component renders in-site navigation to every top-level route passed 414ms
Footer Component renders social links with correct hrefs passed 293ms
Footer Component back-to-top button scrolls the window to the top passed 218ms
tests/jest/env-utils.test.js passed 13/13 passed 4.16s
Test Status Duration
env utilities getEnv returns VITE_WEB3FORMS_KEY from the test environment passed 20ms
env utilities getEnv returns VITE_GIST_USERNAME from the test environment passed 6ms
env utilities getEnv returns VITE_GIST_ID from the test environment passed 5ms
env utilities getEnv returns DEV from the test environment passed 3ms
env utilities getEnv returns PROD from the test environment passed 2ms
env utilities getEnv returns MODE from the test environment passed 5ms
env utilities getEnv returns undefined for unknown keys passed 20ms
env utilities getEnv is case-sensitive for keys passed 3ms
env utilities isDev returns true when DEV is true passed 3ms
env utilities isDev returns false when DEV is false or missing passed 3ms
env utilities isProd returns true when PROD is true passed 39ms
env utilities isProd returns false when PROD is false passed 9ms
env utilities isProd defaults to true when PROD is missing passed 7ms
src/components/UnifiedShowcase.test.jsx passed 6/6 passed 20.83s
Test Status Duration
UnifiedShowcase Component renders unified showcase title and subtitle passed 2.61s
UnifiedShowcase Component renders all master navigation tabs passed 1.23s
UnifiedShowcase Component switches active tab when clicked passed 2.02s
UnifiedShowcase Component renders accordion dropdown triggers for all sections passed 1.90s
UnifiedShowcase Component toggles accordion section on click passed 1.80s
UnifiedShowcase Component toggles all sections via the Expand/Collapse all button passed 2.08s
src/App.scroll.test.jsx passed 4/4 passed 18.68s
Test Status Duration
App Scroll Integration App scrolls to element defined in location.state.scrollTo on mount passed 2.73s
App Scroll Integration App does NOT scroll if location.state.scrollTo is missing passed 2.01s
App Scroll Integration App does NOT scroll to top when navigating home with scrollTo state passed 2.66s
App Scroll Integration scrolls to top when navigating to a subpage through the navbar passed 2.71s
src/components/Experience.test.jsx passed 6/6 passed 7.01s
Test Status Duration
Experience Component displays compact section header passed 1.05s
Experience Component renders a timeline with Board International first passed 152ms
Experience Component displays Board International experience passed 166ms
Experience Component displays Electronic Arts as the earliest role passed 274ms
Experience Component links each company to its site in a new tab passed 313ms
Experience Component does not render case study buttons passed 200ms
src/App.links.test.jsx passed 7/7 passed 26.88s
Test Status Duration
App Integration Tests - Links & Navigation Navigation Bar renders brand logo with correct text passed 2.70s
App Integration Tests - Links & Navigation Navigation Bar renders main navigation links passed 1.54s
App Integration Tests - Links & Navigation External Links Security all external links have rel="noopener noreferrer" and target="_blank" passed 2.32s
App Integration Tests - Links & Navigation Critical Links Presence contains LinkedIn link passed 2.31s
App Integration Tests - Links & Navigation Critical Links Presence contains Calendly link passed 2.40s
App Integration Tests - Links & Navigation Critical Links Presence contains Medium/Articles links passed 3.78s
App Integration Tests - Links & Navigation Internal Navigation internal anchor links start with # passed 2.44s
src/components/skills/SkillCategory.test.jsx passed 2/2 passed 6.32s
Test Status Duration
SkillCategory & SkillTile Subcomponents renders category header, outcome, and list of skill tiles passed 575ms
SkillCategory & SkillTile Subcomponents renders skill-category--soft when skills array is empty passed 9ms
src/components/subpages.i18n.test.jsx passed 15/15 passed 22.66s
Test Status Duration
Sub-page i18n Skills page renders translated copy in en passed 2.17s
Sub-page i18n Skills page renders translated copy in pt passed 1.56s
Sub-page i18n Skills page renders translated copy in es passed 1.41s
Sub-page i18n Articles page renders translated copy in en passed 809ms
Sub-page i18n Articles page renders translated copy in pt passed 423ms
Sub-page i18n Articles page renders translated copy in es passed 577ms
Sub-page i18n Frameworks page renders translated copy in en passed 822ms
Sub-page i18n Frameworks page renders translated copy in pt passed 858ms
Sub-page i18n Frameworks page renders translated copy in es passed 656ms
Sub-page i18n SideProjects page renders translated copy in en passed 341ms
Sub-page i18n SideProjects page renders translated copy in pt passed 335ms
Sub-page i18n SideProjects page renders translated copy in es passed 458ms
Sub-page i18n TestResults page renders translated copy in en passed 1.42s
Sub-page i18n TestResults page renders translated copy in pt passed 1.04s
Sub-page i18n TestResults page renders translated copy in es passed 677ms
src/components/hooks/useFetch.test.jsx passed 3/3 passed 4.91s
Test Status Duration
useFetch should return data when fetch is successful passed 234ms
useFetch should return error when fetch fails passed 67ms
useFetch should return error when fetch throws an exception passed 71ms
tests/jest/main-chunk-reload.test.js passed 4/4 passed 10.60s
Test Status Duration
main.jsx handleChunkError reloads location on first asset load error passed 55ms
main.jsx handleChunkError prevents infinite reloads on consecutive errors within cooldown window passed 10ms
main.jsx handleChunkError does not reload for standard non-chunk runtime errors passed 4ms
main.jsx handleChunkError handles event object with nested error.message passed 5ms
tests/jest/icon-font-subset.test.js passed 2/2 passed 5.45s
Test Status Duration
Material Icons subset every icon name reachable from src/ ships in the subset passed 281ms
Material Icons subset the served font stays a subset, not the full family passed 10ms
tests/jest/blog-generator.test.js passed 5/5 passed 39.90s
Test Status Duration
Blog Generator & Prerender Pipeline slugify converts title to kebab-case slug passed 25ms
Blog Generator & Prerender Pipeline parseFrontmatter parses YAML frontmatter blocks correctly passed 13ms
Blog Generator & Prerender Pipeline parseFrontmatter handles files without frontmatter gracefully passed 22ms
Blog Generator & Prerender Pipeline generateBlogData scans content/blog/*.md, outputs blogPosts.json and updates sitemap.xml passed 1.34s
Blog Generator & Prerender Pipeline prerender generates dist/blog and dist/blog/:slug directories when dist exists passed 33.89s
src/i18n/routing.test.js passed 4/4 passed 5.61s
Test Status Duration
language routing helpers reads the language prefix from a path passed 63ms
language routing helpers maps a language onto a router basename passed 4ms
language routing helpers strips the prefix and keeps the rest of the path passed 3ms
language routing helpers localizes a path for a language, replacing any existing prefix passed 11ms
tests/jest/generate-test-data.test.js passed 3/3 passed 5.36s
Test Status Duration
generate-test-data coverage helpers normalizeCoveragePath returns project-relative paths passed 29ms
generate-test-data coverage helpers generateCoverageData splits totals and per-file metrics passed 33ms
generate-test-data coverage helpers generateCoverageData returns empty shape when report is missing passed 2ms
src/components/ErrorBoundary.test.jsx passed 3/3 passed 6.08s
Test Status Duration
ErrorBoundary renders children when there is no error passed 219ms
ErrorBoundary renders error UI when there is an error passed 1.09s
ErrorBoundary error UI contains error icon passed 149ms
src/components/Security.test.jsx passed 2/2 passed 6.45s
Test Status Duration
Security and Performance Checks CertificatesModal renders safely without throwing when disabled/sunsetted passed 60ms
Security and Performance Checks Footer external links have rel="noopener noreferrer" passed 960ms
src/data/certificates.test.js passed 4/4 passed 6.46s
Test Status Duration
Certificate Data Validation should have exactly 35 certificates passed 19ms
Certificate Data Validation all certificates should have required fields passed 425ms
Certificate Data Validation all certificates should have valid image paths passed 61ms
Certificate Data Validation all certificates should have valid LinkedIn URLs passed 34ms
src/i18n/i18n.test.js passed 5/5 passed 4.74s
Test Status Duration
i18n locale key parity pt has exactly the same keys as en passed 49ms
i18n locale key parity es has exactly the same keys as en passed 36ms
i18n locale key parity en has no empty translation values passed 25ms
i18n locale key parity pt has no empty translation values passed 12ms
i18n locale key parity es has no empty translation values passed 12ms
tests/jest/navbar-responsive-css.test.js passed 1/1 passed 5.82s
Test Status Duration
Navbar responsive CSS scoping style.min.css does not apply small-breakpoint nav rules to nav.main-nav passed 26ms
src/components/skills/brandColor.test.js passed 4/4 passed 5.81s
Test Status Duration
brandColor - toDarkSurface returns high contrast hex values unchanged passed 18ms
brandColor - toDarkSurface lifts pure black and near-black colors to neutral light grey for dark surface visibility passed 10ms
brandColor - toDarkSurface handles 3-digit hex format correctly passed 1ms
brandColor - toDarkSurface returns original string when input is invalid hex passed 8ms
src/components/frameworks/Frameworks.i18n.test.jsx passed 3/3 passed 10.40s
Test Status Duration
Frameworks i18n renders translated page copy in pt passed 1.44s
Frameworks i18n renders translated page copy in es passed 817ms
Frameworks i18n renders translated API section labels in Portuguese passed 1.65s
src/components/hooks/useKeyPress.test.jsx passed 3/3 passed 5.05s
Test Status Duration
useKeyPress should call action when matching key is pressed passed 140ms
useKeyPress should not call action when different key is pressed passed 46ms
useKeyPress should cleanup event listener on unmount passed 36ms
src/components/CrossPage.test.jsx passed 9/9 passed 24.39s
Test Status Duration
Cross-Page Consistency Home Page renders Navbar with brand logo passed 4.06s
Cross-Page Consistency Home Page renders Footer passed 1.82s
Cross-Page Consistency Home Page renders main navigation links passed 2.06s
Cross-Page Consistency Frameworks Page renders Navbar with brand logo passed 1.38s
Cross-Page Consistency Frameworks Page renders Footer passed 1.61s
Cross-Page Consistency Frameworks Page renders main navigation links passed 1.05s
Cross-Page Consistency SideProjects Page renders Navbar with brand logo passed 804ms
Cross-Page Consistency SideProjects Page renders Footer passed 554ms
Cross-Page Consistency SideProjects Page renders main navigation links passed 568ms
src/components/FooterNavigation.test.jsx passed 2/2 passed 5.92s
Test Status Duration
Footer Navigation Logic calls onOpenContact when clicking "Send Message" passed 811ms
Footer Navigation Logic does not throw when "Send Message" clicked without onOpenContact passed 251ms
src/components/hooks/useModal.test.jsx passed 3/3 passed 4.71s
Test Status Duration
useModal should initialize with isOpen as false passed 71ms
useModal should set isOpen to true when openModal is called passed 19ms
useModal should set isOpen to false when closeModal is called passed 13ms
src/components/Booking.test.jsx passed 1/1 passed 5.75s
Test Status Duration
Booking Functionality Footer Booking Button renders booking button with correct attributes passed 602ms
src/components/Footer.i18n.test.jsx passed 1/1 passed 4.78s
Test Status Duration
Footer i18n renders Spanish connect copy when language is es passed 522ms
src/components/CertificatesModal.test.jsx passed 2/2 passed 4.37s
Test Status Duration
CertificatesModal Component (Disabled) returns null and does not render when isOpen is false passed 174ms
CertificatesModal Component (Disabled) returns null and does not render when isOpen is true (modal disabled) passed 19ms
src/components/hooks/index.test.js passed 4/4 passed 3.52s
Test Status Duration
hooks index should export useKeyPress passed 5ms
hooks index should export useFetch passed 1ms
hooks index should export useModal passed 3ms
hooks index should export useTheme passed 0ms