Skip to content

Commit 1c3f75d

Browse files
committed
✏️ Add Evie accessibility audit
1 parent 39542d8 commit 1c3f75d

File tree

4 files changed

+226
-0
lines changed

4 files changed

+226
-0
lines changed
16.8 KB
Loading
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
---
2+
layout: generic.njk
3+
title: Evie On-line accessibility audit
4+
metadata:
5+
noRobots: true
6+
cssComponents:
7+
- code
8+
- figure
9+
---
10+
11+
This is a brief overview of accessibility issues that I identified with the ewie.online [sic] website on 26th September 2025.
12+
13+
This is a follow-up to a more ad-hoc conversation that took place on 2nd September which identified some a small number of accessibility failures. These have since been rectified.
14+
15+
## About this report
16+
17+
Issues were identified using a combination of automated and manual tests using common web browsers and assistive technologies (AT).
18+
19+
The audit is not intended to be completely thorough or authoritative, and by nature is limited by time and resources. It is here as a starter guide to issues that exist and improvements that could be made.
20+
21+
The issues listed are mapped to [version 2.2 of the Web Content Accessibility Guidelines (WCAG)](https://www.w3.org/TR/WCAG22/), a set of accessibility criteria curated by the Web Accessibility Initiative (WAI) at the W3C. WCAG criteria are split into three ‘levels’ of compliance:
22+
23+
- Level A: Considered to be the bare minimum necessary for accessibility compliance.
24+
- Level AA: An ‘acceptable’ level of compliance. This level is specifically referenced by various governments (including those of the US and UK) as their baseline for compliance with equality legislation.
25+
- Level AAA: Maximum compliance. This is generally only considered necessary for services that explicitly cater to disabled and special needs individuals, though some aspects of Level AAA are fairly easy to achieve and provide wider benefits.
26+
27+
Each higher level must additionally meet _all_ criteria of the previous level to be considered passing.
28+
29+
Today, I primarily checked for compliance against levels A and AA. This doesn’t mean that the website wouldn’t benefit from also incorporating aspects of level AAA, just that I did not consider the majority of level AAA criteria in the audit process.
30+
31+
It’s important to note that WCAG is a set of guidelines. There may be situations where technical limitations or the nature of how something is intended to work makes it impossible to make accessible. In these situations it’s recommended to list these as known issues in an accessibility statement on your website.
32+
33+
Finally, I ask that you please take this report in the constructive manner it’s intended in. I’m not attempting to discredit the website or yourself. Websites of all scales and resources can do things wrong sometimes. I also don’t expect anything to be fixed in any sort of timeframe, so don’t worry about it.
34+
35+
If you have any further comments or questions about the content of this report, feel free to [contact me](https://beeps.website/contact/) through whatever means you prefer. I’m happy to try and help rectify any of the issues identified here.
36+
37+
## Recommendations to meet WCAG
38+
39+
These are issues that appear to directly violate one or more of the WCAG Level A or AA criteria.
40+
41+
### Add meaningful titles to pages
42+
43+
Many pages currently lack unique or descriptive titles, with several pages being titled as 'Evie On-line'.
44+
45+
Unique page titles helps all users to understand where they are on the website, and to know which pages are available if they have multiple tabs open.
46+
47+
This would be particularly beneficial to voice control users, who will need to refer to tabs by name, and screen reader users, who will otherwise have to navigate through the content of each page before understanding if the page is the one they were intending to navigate to.
48+
49+
Related WCAG criterion: [2.4.2 Page Titled (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/page-titled.html)
50+
51+
### Add an accessible label to the website logo
52+
53+
The website logo link (with the class name `home-link`) does not have a text alternative associated to it, rendering it invisible to assistive technologies.
54+
55+
There are multiple ways you could resolve this issue:
56+
57+
1. Add [inclusively hidden text](https://css-tricks.com/inclusively-hidden/) within the link.
58+
2. Add an `aria-label` attribute to the link or SVG.
59+
3. Add an `aria-labelledby` attribute to the link or SVG, which connects to the `id` of an element containing the accessible label.
60+
4. Add a `title` attribute to the link.
61+
62+
Related WCAG criteria:
63+
64+
- [2.4.4 Link Purpose (In Context) (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/link-purpose-in-context.html)
65+
- [4.1.2 Name, Role, Value (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html)
66+
67+
### Add focus styles to theme and colour scheme switches
68+
69+
The theme and colour scheme switches on [the menu page](https://ewie.online/menu/) lack focus styles when navigating by keyboard.
70+
71+
These styles are necessary so that users who navigate using a keyboard (or other cursorless hardware) know where they're currently located on the page.
72+
73+
You may want to read [2.4.13 Focus Appearance (Level AAA)](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance.html) for guidance on creating an accessible focus state, but meeting the requirements of that criterion isn't necessary for Level AA, you just need some sort of visible indicator.
74+
75+
Related WCAG criterion: [2.4.7 Focus Visible (Level AA)](https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html)
76+
77+
### Increase the contrast of the search 'load more results' button
78+
79+
The 'load more results' button that appears below search results lacks sufficient text contrast to be accessible.
80+
81+
Currently, the text is `#808080` and button background is `#fcfcfc`, creating a contrast ratio of 3.83:1. The size of this text is the equivalent of 12 points.
82+
83+
To meet WCAG, text below 18 points in size must have a minimum contrast ratio of 4.5:1. To rectify this, either:
84+
85+
- Darken the colour of the text within the button until there's a 4.5:1 minimum contrast ratio.
86+
- Increase the size of the button text to 18 points (equivalent to 24 pixels) or larger.
87+
88+
The same grey on the border of the button is already sufficiently contrasting to meet [1.4.11 Non-text Contrast (Level AA)](https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast.html), so doesn't need changing.
89+
90+
Related WCAG criterion: [1.4.3 Contrast (Minimum) (Level AA)](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html)
91+
92+
### Ensure that non-text content has meaningful alternative text
93+
94+
This is a bit more piecemeal, but I noticed that whilst most images have `alt` text defined, some of them lack alternate text that accurately describes the content of the image. To pull a few examples:
95+
96+
- The images in these posts lack alternate text: [1](https://ewie.online/posts/20250811-i-went-to-a-small-lo/), [2](https://ewie.online/posts/20250514-oki-i-did-it-here-s-/), [3](https://ewie.online/posts/20241221-link-it-s-fiber-opti/)
97+
- The images in these posts have alternate text including the speech in the image, but do not describe the rest of the image: [1](https://ewie.online/posts/20250425-magdalene-keino-chem/), [2](https://ewie.online/posts/20250505-i-m-playing-umineko-/)
98+
- The images in this post appear to have humorous observations about the image for alt text, instead of describing the images: [1](https://ewie.online/posts/20250801-netrunner-mentioned-/)
99+
100+
I didn't trawl through every blog post, so there may be other cases not listed above.
101+
102+
Related WCAG criterion: [1.1.1 Non-text Content (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html)
103+
104+
Alternate text also applies to video and audio content, and as such is also lacking from [posts containing video](https://ewie.online/posts/20250911-remember-that-moment/). For videos you may want to explore captioning, but for audiovisual content it's often easiest to provide a transcript alongside the embedded media.
105+
106+
Related WCAG criteria:
107+
108+
- [1.2.1 Audio-only and Video-only (Prerecorded) (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/audio-only-and-video-only-prerecorded.html)
109+
- [1.2.2 Captions (Prerecorded) (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/captions-prerecorded.html)
110+
- [1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/audio-description-or-media-alternative-prerecorded.html)
111+
112+
### Add borders or outlines to content areas in forced colours mode
113+
114+
Currently, blog posts and sections of a page are separated from one another by use of background colour and drop shadows.
115+
116+
These visual elements are not present when forced colours are enabled, making it harder to distinguish sections from one another.
117+
118+
You can rectify this by adding a transparent border around each section, which will become visible when forced colours mode is active, or using the `forced-colors: active` media query to add the border explicitly for forced colour users.
119+
120+
```css
121+
@media (forced-colors: active) {
122+
.shadow-med {
123+
border: 1px solid;
124+
}
125+
}
126+
```
127+
128+
Related WCAG criterion: [1.4.1 Use of Color (Level A)]
129+
130+
### Colour theme selection is not visible in forced colours mode
131+
132+
The selected states of the accent colour and theme options are not visible in forced colours mode.
133+
134+
Additionally, the accent colour swatches are not visible either.
135+
136+
{% responsiveImage "./src/accessibility-for-furries/audits/evie/forced-color-themes.png", "Screenshot of the colour scheme settings in forced colours mode. The accent colour options are entirely invisible, whilst the light/dark options are visible but the currently selected option is not." %}
137+
138+
You could potentially rectify this by adding forced colour-specific styles for the selection state, using the same technique described above.
139+
140+
For the accent colour swatches, you can add `forced-color-adjust: none` to the previews to override forced colours mode. (In my testing I wasn't able to make this work due to how you currently set the `background-color`, however.)
141+
142+
Not sure how handy this all is, given forced colour users cannot make use of the theme options in the first place, but figured I should bring it up as it's probably a technical fail regardless.
143+
144+
Related WCAG criterion: [1.4.1 Use of Color (Level A)]
145+
146+
### Allow the card-frame component to be operated by keyboard
147+
148+
The 'flipping' aspect of the card-frame web component (on pages such as [this blog post](https://ewie.online/posts/20250427-knickknack-o-brian/)) is not operable by keyboard.
149+
150+
Although I notice that efforts have been made to make this component accessible to screen readers, this does not automatically make it possible to use by a sighted user who uses a keyboard or other cursorless device for page navigation.
151+
152+
Currently, the card element is not focusable by keyboard and there is no obvious operation to 'flip' the card over.
153+
154+
Related WCAG criterion: [2.1.1 Keyboard (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html)
155+
156+
### Explicitly mark card-frame images as having no alternate text
157+
158+
The card graphics presented in the card-frame component lack alternate text but are still accessible to screen readers. Unlike other parts of the component, they have not been marked with `aria-hidden="true"`.
159+
160+
You should either mark these images with the same attribute, or alternatively, [apply an empty `alt` attribute](https://www.w3.org/WAI/tutorials/images/decorative/), as a text alternate is already provided after the images.
161+
162+
Related WCAG criterion: [1.1.1 Non-text content (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html)
163+
164+
## Advisory changes
165+
166+
These are issues that do not necessarily violate WCAG Level A or AA, but may violate Level AAA, or are considered best practices that can improve overall accessibility.
167+
168+
### Don’t have multiple `<h1>` elements on a page
169+
170+
Pages should only have a single `<h1>` element that acts as the title for the entire page.
171+
172+
{% figure caption="Multiple level 1 headings in VoiceOver's heading navigation.", float="right" %}
173+
{% responsiveImage "./src/accessibility-for-furries/audits/evie/vo-rotor-headings.png", "Screenshot of VoiceOver's rotor, showing multiple level 1 headings on the homepage." %}
174+
{% endfigure %}
175+
176+
On blog archive pages, the `<h1>` element is used for the titles of each post. Ideally, the `<h1>` should be a unique and descriptive heading for the page (such as 'Post archive, page 3') and the post headings be `<h2>` elements, with each subsequent heading 'knocked down' a level.
177+
178+
Although WCAG does not strictly require there to be a single `<h1>`, as the `<h1>` precedes all other headings on the page in the content hierarchy, it is considered best practice to only have one.
179+
180+
I realise that this is difficult to achieve when emulating a Cohost/Tumblr style post feed and including portions of each post in the archive, however, so I don't think this is absolutely necessary. It may be beneficial to put the typical `<h1>` content into the page's `<title>` instead.
181+
182+
Related WCAG criterion: [1.3.1 Info and relationships (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships)
183+
184+
### Consider adding visually hidden headings for posts without titles
185+
186+
For posts that lack configured titles, consider adding an inclusively hidden heading that contains some sort of unique identifier, such as the date and time of the post or a snippet of the post's content.
187+
188+
This makes it easier for screen reader users to get an idea of the page's structure, as currently these heading-less posts are not visible when navigating the page with certain tools.
189+
190+
Related WCAG criterion: [1.3.1 Info and relationships (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships)
191+
192+
### Don't include non-operative links or buttons in the interface
193+
194+
The 'tags', 'ask', 'about', and 'feed' links in the navigation currently redirect to the homepage, as these sections have not yet been implemented.
195+
196+
Ideally, do not include links to pages that don't yet exist, as it can confuse users and make them think they've made a mistake when navigating.
197+
198+
### Add labels to navigation landmarks
199+
200+
Post archive pages currently include two `<nav>` elements, with the potential for a third being added in future.
201+
202+
When there are multiple `<nav>` elements on a page, it can be difficult for screen reader users to know which one they need to navigate to in order to find the information they want. We can help by giving the `<nav>` elements accessible labels describing the kind of navigation they are.
203+
204+
For example, the navigation for moving between archive pages could be marked up like this:
205+
206+
```html
207+
<nav class="post-wrapper pagination shadow-med" aria-label="Pagination">
208+
[...]
209+
</nav>
210+
```
211+
212+
This label will then be exposed in the landmark navigation tools provided by screen readers.
213+
214+
{% responsiveImage "./src/accessibility-for-furries/audits/evie/vo-rotor-landmarks.png", "Screenshot of VoiceOver's rotor, showing a list of landmarks, with the last one specifically named as 'Pagination navigation'." %}
215+
216+
### Use appropriate form input types
217+
218+
A tiny thing: the search form uses `<input type="text">` for the search query. This could be `<input type="search">` instead, which would enable some user agent features such as search query history and enabling `enterkeyhint="search"` implicitly.
219+
220+
### Consider adding a skip link to bypass repeated page content
221+
222+
Skip links allow assistive technology users to bypass content that is repeated at the top of every page, such as the heading and navigation links, and jump immediately to the main content.
223+
224+
As ewie.online currently only has a minimal header (two links and the logo), I don't consider this to currently fail the relevant WCAG criterion. However, having a skip link would also not be detrimental.
225+
226+
Related WCAG criterion: [2.4.1 Bypass Blocks (Level A)](https://www.w3.org/WAI/WCAG22/Understanding/bypass-blocks.html)
130 KB
Loading
78.7 KB
Loading

0 commit comments

Comments
 (0)