diff --git a/Universal-Design.md b/Universal-Design.md index 2183a5e..8903214 100644 --- a/Universal-Design.md +++ b/Universal-Design.md @@ -1,7 +1,90 @@ -## Measures to comply with Universal Designs will be added once product is closer to a finished state +Good universal design is very important for any product. Particularly with web applications like ours, it can be critical to achieving good user experiences. + +__To achieve great Universal Design, we followed Don Norman's seven fundamental design principles.__ + +#### 1. Discoverability (Visibility) +Discoverability offered a certain challenge to us, as we set ambitious goals for our product and wanted to include all functionality we and the user deemed necessary. This meant that the front page needed options for editing or viewing each tournament, creating new tournaments, viewing tournament history, user profiles and logging out. For discoverability we could have added all these functions to the front page of the application, however, this would go against other principles. +We decided that the most important functions that would see the most use were creating, editing and viewing tournaments. For this reason, we added obvious functionality for performing these functions on the front page, and placed the history, profile and logout functions in a hamburger menu. We feel that this gives good discoverability as it is easy to understand what the web application is meant to be used for, while also having all the functionality available. +All the other pages also have good discoverability, with all functionalities clearly visible and labeled as soon as the page is open. The user will also have an expectation of what a page is used for, as they have clicked a clearly labeled button to get there. + +#### 2. Feedback +We are using Material UI snackbars throughout the web application to provide continuous feedback to users. The snackbars have been color-coded (i.e., red for error), to provide the user with an instant understanding of the purpose of the message. When tournaments are created successfully, the user will be notified, and when a tournament creation form is submitted with errors, the user will be informed about this. When a user copies the discord invite link through the edit tournament page, they are notified that the link has been copied to their clipboard, because without this information it would be impossible to see if the button had any function. + +#### 3. Affordance +On each functional component in our web application, there is text to describe its function. This is our way of achieving high affordance. For certain components, we have added symbols to further describe their functions. We also use colors to describe what components do. For delete buttons, we have trash can symbols and red color. For the create tournament, there is a green button with a plus symbol. We have text in addition to symbols on any component with a symbol to avoid unfortunate cultural misunderstandings. + +#### 4. Mapping +Our best example of natural mapping exists on the view tournament page, where each time a winner of a match is selected, it automatically updates the bracket and you can see the changes in real-time. For other changes to tournaments, such as editing tournaments and managing teams, a user is immediately directed to the tournament page where they can see their changes. On the front page, we have clearly placed edit and view tournament buttons in the same visual cards as the tournament they belong to, to distinguish them from edit and view buttons for different tournaments. + +#### 5. Constraints +Our way of providing the user with constraints is closely linked to what was mentioned in part 1; discoverability. We have avoided cluttering our pages with too many functional components at the same time, to make clear to the user what options they have. On each page except the front page and create tournament page we have a navigation page that greys out the page the user is currently on. This informs the user about which page they are on and which pages they can navigate to while remaining in the same tournament. Each button that leaves a page clearly states so, to avoid leaving pages you don’t wish to leave. + +#### 6. Consistency +We have used React components with material styling to ensure that components with similar functionalities have similar styles throughout the application. Buttons for generation or creation are green, while buttons for deleting are red. Neutral buttons that navigate to pages within a tournament are blue. Big, filled buttons consistently represent more significant actions while smaller, outlined buttons represent smaller changes. All tournaments on the front page have the same size and style, no matter what it contains. All teams look the same, both on the team manager page and tournament overview. All input components also have the same styling with titles and placeholders. + +#### 7. Signifiers +Our solution to providing the user with information about where they should perform specific actions, goes hand in hand with our solution for affordance. All buttons have text, and the most significant ones also have symbols. The most important buttons are also bigger and clearly located on a card with a specific team or tournament or at the bottom of a form. + +In addition to following Don Norman’s seven fundamental design principles, we know that following principle 1 of WCAG 2.1 (perceivable) can significantly improve certain users’ experiences. +Our steps to follow this principle include, but are not limited to: +- 1 +- 2 +- 3
-## Tests will be added here +## UD Testing +### Microsoft's "Accessibility Insights for Web" Tests +#### First test of web application using Microsoft “Accessibility Insights for Web” – MVP +__Purpose__ + +- Check that each page meets the requirements for WCAG 2.1 – 1 Perceivable + +__Method__ + +Used the “Accessibility Insights for Web” tool by Microsoft to run automatic, partially-automatic and manual tests on each page. + +__Results__ + +##### “Tournaments” page +- All checks passed + + +##### “Create tournament” page +Issues: +- The “Upload” button on the page did not meet the contrast ratio requirement + - Color-contrast – Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds + - Resources: WCAG 1.4.3 +- Select-name – The select (dropdown) element did not have an accessible name + - Ensures select element has an accessible name + - Recourses: WCAG 1.3.1 And 4.1.2 +- All other tests passed +Solutions: +- Changed background color to increase contrast +- Removed select element in favor of a slider + + +##### “Manage tournaments” page +- All checks passed + + +##### "View tournament” page +Issue: +- The “Manage teams” button on the page did not meet the contrast ratio requirement + - Color-contrast – Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds + - Resources: WCAG 1.4.3 +Solution: +- Changed button color to increase contrast +“Manage teams” page +- All checks passed + + +##### “Edit teams” page +Issues: +- Duplicate-id-aria – two elements had the aria id of “teamNameInput” + - Ensures every id attribute value used in ARIA and in labels is unique + - Recourses: WCAG 4.1.1 +- All other tests passed +Solutions: +- Changed the ARIA id attribute on one of the elements -### "Accessibility Insights for Web" Tests