Test Coverage
This document tracks the testing status of all components, loaders, and platform services in the Next.js monorepo. It provides visibility into what has been tested and what still requires test coverage.
Column Definitions
Axe
Runs Deque's axe-core integrated automated accessibility testing of web components. This integration uses the jest-axe library, which provides a Jest matcher (toHaveNoViolations) to assert that rendered components have no accessibility issues detected by axe-core.
SnapShots
Renders a UI component, takes a snapshot, then compares it to a reference snapshot file stored alongside the test.
DataLayer
Renders a UI component and asserts that all required data layer attributes are present with expected attribute values.
Render
Renders a UI component and makes component specific assertions ensuring that all critical elements have been rendered as expected without errors.
Focus
Renders a UI component and tests the ability or inability to focus on rendered elements for all potential component states. These tests may also include tab sequence testing when applicable.
Click
Renders a UI component and tests the ability or inability to click on rendered elements for all potential component states. These tests should also assert that expected onClick methods were called with the expected arguments as well.
Event
Renders a UI component and executes an action. Event tests will then assert that expected events have been fired.
Keydown
Renders a UI component and executes keydowns and makes assertions on the expected response or results.
Device
Renders a UI component emulating each supported Schwab breakpoint, then makes assertions that the expected results have been rendered for each simulated device (mobile, tablet, laptop, desktop).
Utility
Renders a UI component or executes a method and asserts that all expected utility functions have been called.
Flags
Tests the evaluation of feature flags and if applicable, asserts that all permutations of supported feature flags are rendered based on feature flag values passed.
EnvVar
Tests assert that all permutations of supported process.env vars are rendered based on the env var conditions.
No...props
Unnecessary Re-renders: If you pass a large object as a prop and only a small part of that object is used by the child component, and the entire object changes, the child component will re-render even if the specific part it uses has not changed. This can lead to inefficient re-renders, especially if the child component is complex or expensive to render.
NoTodos
Indicates whether the test file contains TODO comments that need to be addressed.
NoSkips
Indicates whether the test file contains skipped tests (.skip) that need to be re-enabled or removed.
Legend
| 🟢 | ✅ | ⚫ | 💥 | ⚪ | 🔍 |
|---|---|---|---|---|---|
| Tested | Confirmed | Test Required | Tested + Observations | Not Applicable | Audit Required |
UI Components
This table scrolls to the right
| Name | Axe | SnapShots | DataLayer | Render | Focus | Click | Event | Keydown | Device | Utility | Flags | EnvVar | No...props | NoTodos | NoSkips | 💥 Observations 💥 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Accordion | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | ✅ | ✅ | |
| AppVersion | ⚪ | ⚪ | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ✅ | ✅ | ✅ | |
| ArticleTile | 🟢 | 🟢 | 💥 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ❌ | ❌ | If the optional 'link.dataLayer' prop is undefined, the article tile "dataLayer['data-dl-link']?.name" appears as the data-dl-link.name. |
| Audio | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | ⚪ | ✅ | ✅ | ✅ | |
| Button | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ✅ | ✅ | ✅ | |
| CaptureQueryParams | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Card | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Collection | 🟢 | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ❌ | |
| Command | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Container | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| ContentRenderEngine | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| CtaPanel | 🟢 | 🟢 | 🟢 | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Debug | ⚫ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚫ | 🔍 | ✅ | ✅ | |
| Deck | 🟢 | 🟢 | 🟢 | 🟢 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| DeckTile | 🟢 | 🟢 | ⚪ | 🟢 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Dialog | 🔍 | 🔍 | ⚪ | 🔍 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Divider | 🟢 | 🟢 | ⚪ | 🟢 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Footnote | 🟢 | 🟢 | ⚪ | 🟢 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| GlobalFooter | 🟢 | 🟢 | ⚪ | 🟢 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| GoogleMaps | ⚫ | ⚫ | ⚪ | 💥 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ❌ | ❌ | Testing env issues. |
| Heading | 🟢 | 🟢 | 🟢 | 🟢 | 🔍 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| HighChart | ⚫ | ⚫ | 🔍 | ⚫ | 🔍 | 🔍 | 🔍 | 🔍 | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | ||
| Iframe | ⚪ | ⚪ | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ❌ | |
| Image | 🟢 | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Link | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Lockup | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| LockupPerson | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| MapMarker | ⚫ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🟢 | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Marquee | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - Logo | 🟢 | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - PrimaryMenu | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - PrimaryMobileMenu | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - SearchUtilityForm | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ❌ | ❌ | |
| Meganav - SearchUtils | ⚪ | ⚪ | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - SectionMenu | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - Spotlight | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - UtilityMenu | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - UtilityMenuDropdown | 🟢 | 🟢 | ⚪ | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - Utilities - get-focusable | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Meganav - Utilities - prefers-reduced-motion | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Modal | 🟢 | 🟢 | ⚪ | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Mosaic | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| NavContainer | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| NavItem | 🟢 | 🟢 | ⚪ | 🟢 | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| PageFooter | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Pagination | 🟢 | 🟢 | ⚪ | 🟢 | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Panel | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| PatternLandingPage | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 | ✅ | ✅ | |
| 🟢 | 🟢 | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | ||
| Person | 🟢 | 🟢 | 🟢 | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| PersonRelatedContent | ⚫ | ⚫ | ? | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Podcast | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| PodcastLink | 🟢 | 🟢 | 🟢 | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Popover | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| PrivacyLink | ⚫ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| PullQuote | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| QuerySet | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| ReactPortal | ⚪ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| RichText | ⚪ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SchwabDataLayer - DataLayerContext | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SchwabDataLayer - SchwabDataLayerReact | ⚪ | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SchwabDataLayer - SchwabDataLayer | ⚪ | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SchwabDataLayer - SchwabDataLayer.with-next-env | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SearchBar | 🟢 | 🟢 | 🟢 | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SeriesHeader | 🟢 | 🟢 | ⚪ | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Shadcn - TabsWrapper | ⚫ | ⚫ | ⚪ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Sheet | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Skeleton | ⚫ | ⚫ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SocialLinks | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| SocialShare | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ❌ | ✅ | ✅ | |
| Story | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| StoryHeader | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| StoryRelatedContent | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Table | 🟢 | 🟢 | ⚫ | 🟢 | ⚫ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ❌ | ✅ | |
| TermList | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Tile | 🟢 | 🟢 | ⚪ | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Toast | ⚫ | ⚫ | ⚪ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| Topic | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| TopicRelatedContent | 🟢 | 🟢 | ⚫ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| VercelEnvOutput | ⚪ | ⚪ | ⚪ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| VerifyHuman | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ✅ | ❌ | ✅ | |
| Video | 🟢 | 🟢 | 🟢 | 🟢 | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ | |
| ZodErrorOutput | ⚫ | ⚫ | ⚪ | ⚫ | ⚫ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | 🔍 | ✅ | ✅ |
UI JsonLD Components
| Name | DataLayer | Axe | SnapShots |
|---|---|---|---|
| SchemaArticle | ? | ||
| SchemaAuthor | ? | ||
| SchemaFinancialProduct | ? | ||
| SchemaNewsArticle | ? | ||
| SchemaOrganization | ? |
UI Loaders
This table scrolls to the right
| Name | DataLayer | Render | Utility | Flags | Draft Mode | EnvVar | 💥 Observations 💥 |
|---|---|---|---|---|---|---|---|
| CollectionLoader | 🟢 | 🟢 | 💥 | 🟢 | 🟢 | ⚪ | In the components ArticleTileSchema, the "url" property is optional, generate-collection-layer.ts assumes that it will be present and breaks if it is omitted. |
| DynamicCtaLoader | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | |
| GlobalFooterLoader | ⚪ | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | |
| MegaNavLoader | ⚪ | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | |
| PatternLandingPageLoader | |||||||
| PersonLoader | ⚫ | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | |
| QuerySetLoader | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | |
| Search | |||||||
| StoryLoader | 🟢 | 🟢 | ⚪ | 🟢 | 🟢 | ⚪ | |
| TopicLoader | ⚪ | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ |
UI Platform Services (UPS)
| Name | DataLayer | Axe | SnapShots |
|---|---|---|---|
| AltoBundle | 🔍 | 🔍 | 🔍 |
| ClientFooter | 🔍 | 🔍 | 🔍 |
| ClientMeganav | 🔍 | 🔍 | 🔍 |
| irawizard | 🔍 | 🔍 | 🔍 |
| QuickQuote | 🔍 | 🔍 | 🔍 |