[!NOTE]
Return back to the README.md file.
I have used the recommended HTML W3C Validator to validate all of my HTML files.
Directory | File | Screenshot | Notes |
---|---|---|---|
home | index.html | Pass: No error found | |
tutor | tutors.html | Pass: No error found | |
tutor | tutors_profile.html | Pass: No error found | |
booking | booking_create.html | Pass: No error found | |
booking | booking_success.html | Pass: No error found | |
personaluser | my_profile.html | Pass: No error found | |
personaluser | edit_profile.html | Pass: No error found | |
contact | contact_form.html | Pass: No error found | |
contact | contact_success.html | Pass: No error found | |
templates | signup.html.html | Pass: No error found | |
templates | logout.html | Pass: No error found | |
templates | login.html | Pass: No error found | |
templates | password_reset.html | Pass: No error found | |
templates | verification_sent.html | Pass: No error found | |
templates | password_reset_done.html | Pass: No error found | |
templates | error.html | Pass: No error found | |
templates | 403.html | Pass: No error found | |
templates | 404.html | Pass: No error found | |
templates | 500.html | Pass: No error found | |
templates | password_reset_from_key.html | 1 error: The allauth password reset from key form has known HTML validation error | |
templates | password_reset_from_key_done.html | Pass: No error found |
I have used the recommended CSS Jigsaw Validator to validate all of my CSS files.
Directory | File | Screenshot | Notes |
---|---|---|---|
static | base.css | Pass: No error found | |
static | booking.css | Pass: No error found | |
static | contact.css | Pass: No error found | |
static | error.css | Pass: No error found | |
static | home.css | Pass: No error found | |
static | personaluser.css | Pass: No error found | |
static | tutor.css | Pass: No error found |
I have used the recommended PEP8 CI Python Linter to validate all of my Python files.
Directory | File | CI URL | Screenshot | Notes |
---|---|---|---|---|
booking | admin.py | PEP8 CI | All clear, no errors found | |
booking | models.py | PEP8 CI | All clear, no errors found | |
booking | urls.py | PEP8 CI | All clear, no errors found | |
booking | views.py | PEP8 CI | All clear, no errors found | |
booking | webhooks.py | PEP8 CI | All clear, no errors found | |
contact | admin.py | PEP8 CI | All clear, no errors found | |
contact | forms.py | PEP8 CI | All clear, no errors found | |
contact | models.py | PEP8 CI | All clear, no errors found | |
contact | urls.py | PEP8 CI | All clear, no errors found | |
contact | views.py | PEP8 CI | All clear, no errors found | |
home | urls.py | PEP8 CI | All clear, no errors found | |
home | views.py | PEP8 CI | All clear, no errors found | |
newsletter | admin.py | PEP8 CI | All clear, no errors found | |
newsletter | forms.py | PEP8 CI | All clear, no errors found | |
newsletter | models.py | PEP8 CI | All clear, no errors found | |
newsletter | urls.py | PEP8 CI | All clear, no errors found | |
newsletter | views.py | PEP8 CI | All clear, no errors found | |
personaluser | admin.py | PEP8 CI | All clear, no errors found | |
personaluser | forms.py | PEP8 CI | All clear, no errors found | |
personaluser | models.py | PEP8 CI | All clear, no errors found | |
personaluser | urls.py | PEP8 CI | All clear, no errors found | |
personaluser | views.py | PEP8 CI | All clear, no errors found | |
signcoding | urls.py | PEP8 CI | All clear, no errors found | |
signcoding | views.py | PEP8 CI | All clear, no errors found | |
tutor | admin.py | PEP8 CI | All clear, no errors found | |
tutor | forms.py | PEP8 CI | All clear, no errors found | |
tutor | models.py | PEP8 CI | All clear, no errors found | |
tutor | urls.py | PEP8 CI | All clear, no errors found | |
tutor | views.py | PEP8 CI | All clear, no errors found |
I’ve tested my deployed project on multiple browsers to check for compatibility issues.
Browser | Home | Tutor List | Tutor Profile | Tutor Add | Tutor Edit | Booking | Booking Success | Profile | Profile Edit | Contact | Contact Success | Register | Login | Sign Out | Email Verification | Email Verification Success | Reset Password | Reset Password Confirmation | Reset Password Key | Reset Password Key Success | Error | 403 | 404 | 500 | Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Works as expected | ||||||||||||||||||||||||
Firefox | X | Works as expected | |||||||||||||||||||||||
Edge | X | Works as expected | |||||||||||||||||||||||
Safari | X | Works as expected |
I’ve tested my deployed project on multiple devices to check for responsiveness issues.
Browser | Home | Tutor List | Tutor Profile | Tutor Add | Tutor Edit | Booking | Booking Success | Profile | Profile Edit | Contact | Contact Success | Register | Login | Sign Out | Email Verification | Email Verification Success | Reset Password | Reset Password Confirmation | Reset Password Key | Reset Password Key Success | Error | 403 | 404 | 500 | Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Apple MacMini | Works as expected | ||||||||||||||||||||||||
Apple iPad Air | Works as expected | ||||||||||||||||||||||||
Google Nexus 4 | Works as expected |
I’ve tested my deployed project using the Lighthouse Audit tool to check for any major issues.
Page | Mobile | Desktop | Notes |
---|---|---|---|
Home | Some minor and warnings | ||
Tutor List | Some minor and warnings | ||
Tutor Profile | Some minor and warnings | ||
Tutor Add | Some minor warnings | ||
Tutor Edit | Some minor warnings | ||
Booking | Some minor warnings | ||
Profile | Some minor warnings | ||
Contact | Some minor warnings | ||
Sign Out | Some minor warnings | ||
Register | Some minor warnings | ||
Login | Some minor warnings | ||
Reset Password | Some minor warnings | ||
403 | Some minor warnings | ||
404 | Some minor warnings |
Defensive programming was manually tested with the below user acceptance testing:
Page | Expectation | Test | Result | Fix | Screenshot |
---|---|---|---|---|---|
Home | |||||
The page is expected to reload after submitting an incorrect email address and display the alert message stating, “Invalid email address. Please enter a valid email.” | Deliberately input test@test without .com. | The feature behaved as expected, reloading and displaying the error alert message. | Test concluded and passed | ||
The page is expected to reload after submitting an already subscribed email address and display the alert message stating, “You have already subscribed to our newsletter!” | Deliberately input test@test.com, which was already previously subscribed. | The feature behaved as expected, reloading and displaying the error alert message. | Test concluded and passed | ||
Register | |||||
The page is expected to redirect the logged user back to the Home page when attempting to brute force the URL of the Register page. | Brute forces the URL of the Register page when logged in. | The feature behaved as expected and redirected the logged user/superuser back to the Home page. | Test concluded and passed | ||
The signup form is expected to display the illegible first name, illegible last name, and incorrect email address inline error messages and prevent the form from submitting. | Deliberately input the illegible first name, illegible last name, and incorrect email address. | The feature behaved as expected and displayed the inline errors. Apostrophes and hyphens are allowed because some name may contain, for example, Ava-May and O’Shea. | Test concluded and passed | ||
Login | |||||
The page is expected to redirect the logged user back to the Home page when attempting to brute force the URL of the Login page. | Brute forces the URL of the Login page when logged in. | The feature behaved as expected and redirected the logged user/superuser back to the Home page. | Test concluded and passed | ||
Sign Out | |||||
The page is expected to redirect the logged-out user or guest back to the Home page when attempting to brute force the Sign Out page URL. | Brute forces the URL of the Sign Out page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest back to the Home page. | Test concluded and passed | ||
User Profile | |||||
The page is expected to redirect the logged-out user or guest to the Login page when attempting to brute force the User Profile page URL. | Brute forces the URL of the User Profile page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the Login page. If the login is validated, it redirects the logged-in user to the User Profile page. | Test concluded and passed | ||
The change name form is expected to display the illegible first name and illegible last name inline error messages and prevent the form from submitting. | Deliberately input the illegible first name and illegible last name. | The feature behaved as expected and reloaded the page to display inline error messages instead of submitting the form. | Test concluded and passed | ||
The page is expected to redirect the logged-out user or guest to the Login page when attempting to brute force the User Profile’s edit name page URL. | Brute forces the URL of the User Profile’s edit name page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the Login page. If the login is validated, it redirects the logged-in user to the User Profile’s edit name page. | Test concluded and passed | ||
The page is expected to redirect the logged-out user or guest to the Login page when attempting to brute force the User Profile’s the delete user modal URL. | Brute forces the URL of the User Profile’s the delete user modal page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the Login page. If the login is validated, it redirects the logged-in user to the User Profile’s page instead of deleting the account to prevent accidental deletion through brute forcing the account deletion URL. | Test concluded and passed | ||
Tutor | |||||
The page is expected to redirect the logged-out user or guest to the 403 forbidden page when attempting to brute force the Add a New Tutor page URL. | Brute forces the URL of the Add a New Tutor page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the 403 forbidden page and offered the logged-out user/guest a button to return back to the Home page. | Test concluded and passed | ||
The page is expected to redirect the logged-out user or guest to the 403 forbidden page when attempting to brute force the Edit a Tutor page URL. | Brute forces the URL of the Edit Tutor page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the 403 forbidden page and offered the logged-out user/guest a button to return back to the Home page. | Test concluded and passed | ||
The page is expected to redirect the logged-out user or guest to the 403 forbidden page when attempting to brute force the Delete a Tutor modal URL. | Brute forces the URL of the Delete Tutor modal when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the 403 forbidden page and offered the logged-out user/guest a button to return back to the Home page. | Test concluded and passed | ||
The page is expected to redirect the logged-in non-superuser user to the 403 forbidden page when attempting to brute force the Add a New Tutor page URL. | Brute forces the URL of the Add a New Tutor page from the logged-in non-superuser user. | The feature behaved as expected and redirected the logged-in non-superuser user to the 403 forbidden page and offered the logged-in non-superuser user a button to return back to the Home page. | Test concluded and passed | ||
The page is expected to redirect the logged-in non-superuser user to the 403 forbidden page when attempting to brute force the Edit Tutor page URL. | Brute forces the URL of the Edit Tutor page from the logged-in non-superuser user. | The feature behaved as expected and redirected the logged-in non-superuser user to the 403 forbidden page and offered the logged-in non-superuser user a button to return back to the Home page. | Test concluded and passed | ||
The page is expected to redirect the logged-in non-superuser user to the 403 forbidden page when attempting to brute force the Delete a Tutor modal URL. | Brute forces the URL of the Delete a Tutor modal from the logged-in non-superuser user. | The feature behaved as expected and redirected the logged-in non-superuser user to the 403 forbidden page and offered the logged-in non-superuser user a button to return back to the Home page. | Test concluded and passed | ||
The Add a New Tutor form is expected to display the illegible first name, illegible last name, and incorrect email address inline error messages and prevent the form from submitting. | Deliberately input the illegible first name, illegible last name, and incorrect email address. | The feature behaved as expected, displayed the inline errors and prevented the superuser from adding a new tutor. Apostrophes and hyphens are allowed because some names may contain, for example, Ava-May and O’Shea. | Test concluded and passed | ||
The Edit Tutor form is expected to display the illegible first name, illegible last name, and incorrect email address inline error messages and prevent the form from submitting. | Deliberately input the illegible first name, illegible last name, and incorrect email address. | The feature behaved as expected, displayed the inline errors and prevented the superuser from updating the tutor. Apostrophes and hyphens are allowed because some names may contain, for example, Ava-May and O’Shea. | Test concluded and passed | ||
Booking | |||||
The page is expected to redirect the logged-out user or guest to the Login page when attempting to brute force the booking success page URL. | Brute forces the URL of the booking success page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the Login page. | Test concluded and passed | ||
The page is expected to display the error page after the logged-out user is logged back in and attempts to brute force the URL of someone’s booking confirmation (success) page. | Brute forces the URL of someone’s booking success page while the user is logged in, but the booking is not theirs. | The feature behaved as expected and displayed the error message stating, “Booking not found”. | Test concluded and passed | ||
The page is expected to display the error page after the logged-in user attempts to brute force the URL of someone’s booking confirmation (success) page. | Brute forces the URL of someone’s booking success page while the logged-in user attempts to view someone else’s booking. | The feature behaved as expected and displayed the error message stating, “Booking not found”. | Test concluded and passed | ||
The page is expected to display the error page after the logged-in superuser user attempts to brute force the URL of someone’s booking confirmation (success) page. | Brute forces the URL of someone’s booking success page while the logged-in superuser attempts to view someone else’s booking. | The feature behaved as expected and displayed the error message stating, “Booking not found”. | Test concluded and passed | ||
The page is expected to redirect the logged-out user or guest to the Login page when attempting to brute force the booking create page URL. | Brute forces the URL of the booking creation page when logged out or guest access. | The feature behaved as expected and redirected the logged-out user/guest to the Login page. | Test concluded and passed | ||
The page is expected to display the error page after the logged-out non-superuser or superuser is logged back in after the Login redirection and attempts to brute force the URL of the booking creation page directly without viewing the tutor profile and booking from there first. | Brute forces the URL of the booking creation page after successfully signing in on the Login redirection page. | The feature behaved as expected and displayed the error message stating, “No tutor selected. Please select a tutor first”. | Test concluded and passed | ||
The page is expected to display the error page after the non-superuser or superuser who has already logged in attempts to brute force the URL of the booking creation page directly from the Home page without viewing the tutor profile and booking from there first. | Brute forces the URL of the booking creation page directly from the Home page without viewing the tutor profile and booking from there first. | The feature behaved as expected and displayed the error message stating, “No tutor selected. Please select a tutor first”. | Test concluded and passed | ||
Contact | |||||
The contact form is expected to display the illegible full name and incorrect email address inline error messages and prevent the form from submitting. | Deliberately input the illegible full name and incorrect email address. | The feature behaved as expected, displayed the inline errors and prevented the superuser from submitting the form. Apostrophes and hyphens are allowed because some names may contain, for example, Ava-May and O’Shea. | Test concluded and passed | ||
The contact form message is expected to stop inputting after the character limit hits 1,000 characters. | Deliberately input the message to reach the 1,000 characters limit and attempt to continue typing thereafter. | The feature behaved as expected and stopped inputting any more characters after hitting the 1,000 characters limit. | Test concluded and passed | ||
Django admin panel | |||||
The page is expected to display the normal login page when the logged-out user or guest attempts to brute force the URL of the Django admin panel. | Brute forces the URL of the Django admin panel. | The feature behaved as expected and displayed the normal login page. | Test concluded and passed | ||
The login page is expected to display the error message when the non-superuser user attempts to log in to the Django admin panel, preventing the non-superuser user from logging in to the Django admin panel. | Log in to the Django admin panel using non-superuser login credentials. | The feature behaved as expected, prevented the non-superuser from logging in to the Django admin panel, and displayed the error message. | Test concluded and passed | ||
The login page is expected to display the error message and stop the logged-in non-superuser user from accessing the Django admin panel when attempting to brute force the URL of the Django admin panel. | Brute forces the URL of the Django admin panel while logged in as a non-superuser user. | The feature behaved as expected, prevented the non-superuser from accessing the Django admin panel, and displayed the error message. | Test concluded and passed |
User Story | Screenshot |
---|---|
As a new site user, I would like to create an account, so that I can access tutoring services. | |
As a new site user, I would like to browse available tutors, so that I can find the right match for my learning needs. | |
As a new site user, I would like to book a tutoring session, so that I can start learning programming with a sign language tutor. | |
As a returning site user, I would like to view my booking history, so that I can keep track of my past sessions. | |
As a returning site user, I would like to check tutor profiles’ date and time availability, so that I can book new sessions as per my schedule. | |
As a returning site user, I would like to update my profile information, so that my details remain current. | |
As a site administrator, I should be able to manage user accounts, so that I can ensure a secure and efficient platform. | |
As a site administrator, I should be able to monitor tutor availability, so that I can maintain an up-to-date list of available sessions. | |
As a site administrator, I should be able to handle booking requests, so that I can ensure smooth scheduling and session management. |
Fixed Bugs
All previously closed/fixed bugs can be tracked here.
Open Issues
Any remaining open issues can be tracked here.
No open issues so far.
[!NOTE]
There are no remaining bugs that I am aware of.