@@ -114,6 +114,13 @@ import {
114114 AppFooter ,
115115 AppHeader ,
116116 AppLogo ,
117+ AuthorAvatar ,
118+ AuthorList ,
119+ BlogPostListCard ,
120+ BlogPostWrapper ,
121+ BlueskyComment ,
122+ BlueskyComments ,
123+ EmbeddableBlueskyPost ,
117124 BaseCard ,
118125 BuildEnvironment ,
119126 ButtonBase ,
@@ -2491,6 +2498,129 @@ describe('component accessibility audits', () => {
24912498 expect ( results . violations ) . toEqual ( [ ] )
24922499 } )
24932500 } )
2501+
2502+ describe ( 'AuthorAvatar' , ( ) => {
2503+ it ( 'should have no accessibility violations with fallback text' , async ( ) => {
2504+ const component = await mountSuspended ( AuthorAvatar , {
2505+ props : {
2506+ author : {
2507+ name : 'Daniel Roe' ,
2508+ blueskyHandle : 'danielroe.dev' ,
2509+ avatar : null ,
2510+ profileUrl : 'https://bsky.app/profile/danielroe.dev' ,
2511+ } ,
2512+ } ,
2513+ } )
2514+ const results = await runAxe ( component )
2515+ expect ( results . violations ) . toEqual ( [ ] )
2516+ } )
2517+ } )
2518+
2519+ describe ( 'AuthorList' , ( ) => {
2520+ it ( 'should have no accessibility violations' , async ( ) => {
2521+ const component = await mountSuspended ( AuthorList , {
2522+ props : {
2523+ authors : [
2524+ { name : 'Daniel Roe' , blueskyHandle : 'danielroe.dev' } ,
2525+ { name : 'Salma Alam-Naylor' } ,
2526+ ] ,
2527+ } ,
2528+ } )
2529+ const results = await runAxe ( component )
2530+ expect ( results . violations ) . toEqual ( [ ] )
2531+ } )
2532+ } )
2533+
2534+ describe ( 'BlogPostWrapper' , ( ) => {
2535+ it ( 'should have no accessibility violations' , async ( ) => {
2536+ const component = await mountSuspended ( BlogPostWrapper , {
2537+ props : {
2538+ frontmatter : {
2539+ authors : [ { name : 'Daniel Roe' , blueskyHandle : 'danielroe.dev' } ] ,
2540+ title : 'Building Accessible Vue Components' ,
2541+ date : '2024-06-15' ,
2542+ description : 'A guide to building accessible components in Vue.js applications.' ,
2543+ path : '/blog/building-accessible-vue-components' ,
2544+ slug : 'building-accessible-vue-components' ,
2545+ } ,
2546+ } ,
2547+ slots : { default : '<p>Blog post content here.</p>' } ,
2548+ } )
2549+ const results = await runAxe ( component )
2550+ expect ( results . violations ) . toEqual ( [ ] )
2551+ } )
2552+ } )
2553+
2554+ describe ( 'BlueskyComment' , ( ) => {
2555+ it ( 'should have no accessibility violations' , async ( ) => {
2556+ const component = await mountSuspended ( BlueskyComment , {
2557+ props : {
2558+ comment : {
2559+ uri : 'at://did:plc:2gkh62xvzokhlf6li4ol3b3d/app.bsky.feed.post/3mcg7k75fdc2k' ,
2560+ cid : 'bafyreigincphooxt7zox3blbocf6hnczzv36fkuj2zi5iuzpjgq6gk6pju' ,
2561+ author : {
2562+ did : 'did:plc:2gkh62xvzokhlf6li4ol3b3d' ,
2563+ handle : 'patak.dev' ,
2564+ displayName : 'patak' ,
2565+ avatar :
2566+ 'https://cdn.bsky.app/img/avatar/plain/did:plc:2gkh62xvzokhlf6li4ol3b3d/bafkreifgzl4e5jqlakd77ajvnilsb5tufsv24h2sxfwmitkzxrh3sk6mhq@jpeg' ,
2567+ } ,
2568+ text : 'our kids will need these new stories, thanks for writing this Daniel' ,
2569+ createdAt : '2026-01-14T23:22:05.257Z' ,
2570+ likeCount : 13 ,
2571+ replyCount : 0 ,
2572+ repostCount : 0 ,
2573+ replies : [ ] ,
2574+ } ,
2575+ depth : 0 ,
2576+ } ,
2577+ } )
2578+ const results = await runAxe ( component )
2579+ expect ( results . violations ) . toEqual ( [ ] )
2580+ } )
2581+ } )
2582+
2583+ describe ( 'BlueskyComments' , ( ) => {
2584+ it ( 'should have no accessibility violations' , async ( ) => {
2585+ const component = await mountSuspended ( BlueskyComments , {
2586+ props : {
2587+ postUri : 'at://did:plc:jbeaa5kdaladzwq3r7f5xgwe/app.bsky.feed.post/3mcg6svsgsm2k' ,
2588+ } ,
2589+ } )
2590+ const results = await runAxe ( component )
2591+ expect ( results . violations ) . toEqual ( [ ] )
2592+ } )
2593+ } )
2594+
2595+ describe ( 'EmbeddableBlueskyPost' , ( ) => {
2596+ it ( 'should have no accessibility violations' , async ( ) => {
2597+ const component = await mountSuspended ( EmbeddableBlueskyPost , {
2598+ props : {
2599+ url : 'https://bsky.app/profile/patak.dev/post/3mcg7k75fdc2k' ,
2600+ } ,
2601+ } )
2602+ const results = await runAxe ( component )
2603+ expect ( results . violations ) . toEqual ( [ ] )
2604+ } )
2605+ } )
2606+
2607+ describe ( 'BlogPostListCard' , ( ) => {
2608+ it ( 'should have no accessibility violations' , async ( ) => {
2609+ const component = await mountSuspended ( BlogPostListCard , {
2610+ props : {
2611+ authors : [ { name : 'Daniel Roe' , blueskyHandle : 'danielroe.dev' } ] ,
2612+ title : 'Building Accessible Vue Components' ,
2613+ topics : [ 'accessibility' , 'vue' ] ,
2614+ excerpt : 'A guide to building accessible components in Vue.js applications.' ,
2615+ published : '2024-06-15' ,
2616+ path : 'building-accessible-vue-components' ,
2617+ index : 0 ,
2618+ } ,
2619+ } )
2620+ const results = await runAxe ( component )
2621+ expect ( results . violations ) . toEqual ( [ ] )
2622+ } )
2623+ } )
24942624} )
24952625
24962626function applyTheme ( colorMode : string , bgTheme : string | null ) {
0 commit comments