SignCoding

Testing

[!NOTE]
Return back to the README.md file.

Code Validation

HTML

I have used the recommended HTML W3C Validator to validate all of my HTML files.

Directory File Screenshot Notes
home index.html screenshot Pass: No error found
tutor tutors.html screenshot Pass: No error found
tutor tutors_profile.html screenshot Pass: No error found
booking booking_create.html screenshot Pass: No error found
booking booking_success.html screenshot Pass: No error found
personaluser my_profile.html screenshot Pass: No error found
personaluser edit_profile.html screenshot Pass: No error found
contact contact_form.html screenshot Pass: No error found
contact contact_success.html screenshot Pass: No error found
templates signup.html.html screenshot Pass: No error found
templates logout.html screenshot Pass: No error found
templates login.html screenshot Pass: No error found
templates password_reset.html screenshot Pass: No error found
templates verification_sent.html screenshot Pass: No error found
templates password_reset_done.html screenshot Pass: No error found
templates error.html screenshot Pass: No error found
templates 403.html screenshot Pass: No error found
templates 404.html screenshot Pass: No error found
templates 500.html screenshot Pass: No error found
templates password_reset_from_key.html screenshot 1 error: The allauth password reset from key form has known HTML validation error
templates password_reset_from_key_done.html screenshot Pass: No error found

CSS

I have used the recommended CSS Jigsaw Validator to validate all of my CSS files.

Directory File Screenshot Notes
static base.css screenshot Pass: No error found
static booking.css screenshot Pass: No error found
static contact.css screenshot Pass: No error found
static error.css screenshot Pass: No error found
static home.css screenshot Pass: No error found
static personaluser.css screenshot Pass: No error found
static tutor.css screenshot Pass: No error found

Python

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 screenshot All clear, no errors found
booking models.py PEP8 CI screenshot All clear, no errors found
booking urls.py PEP8 CI screenshot All clear, no errors found
booking views.py PEP8 CI screenshot All clear, no errors found
booking webhooks.py PEP8 CI screenshot All clear, no errors found
contact admin.py PEP8 CI screenshot All clear, no errors found
contact forms.py PEP8 CI screenshot All clear, no errors found
contact models.py PEP8 CI screenshot All clear, no errors found
contact urls.py PEP8 CI screenshot All clear, no errors found
contact views.py PEP8 CI screenshot All clear, no errors found
home urls.py PEP8 CI screenshot All clear, no errors found
home views.py PEP8 CI screenshot All clear, no errors found
newsletter admin.py PEP8 CI screenshot All clear, no errors found
newsletter forms.py PEP8 CI screenshot All clear, no errors found
newsletter models.py PEP8 CI screenshot All clear, no errors found
newsletter urls.py PEP8 CI screenshot All clear, no errors found
newsletter views.py PEP8 CI screenshot All clear, no errors found
personaluser admin.py PEP8 CI screenshot All clear, no errors found
personaluser forms.py PEP8 CI screenshot All clear, no errors found
personaluser models.py PEP8 CI screenshot All clear, no errors found
personaluser urls.py PEP8 CI screenshot All clear, no errors found
personaluser views.py PEP8 CI screenshot All clear, no errors found
signcoding urls.py PEP8 CI screenshot All clear, no errors found
signcoding views.py PEP8 CI screenshot All clear, no errors found
tutor admin.py PEP8 CI screenshot All clear, no errors found
tutor forms.py PEP8 CI screenshot All clear, no errors found
tutor models.py PEP8 CI screenshot All clear, no errors found
tutor urls.py PEP8 CI screenshot All clear, no errors found
tutor views.py PEP8 CI screenshot All clear, no errors found

Browser Compatibility

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 screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot Works as expected
Firefox screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot X Works as expected
Edge screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot X Works as expected
Safari screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot X Works as expected

Responsiveness

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 screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot Works as expected
Apple iPad Air screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot Works as expected
Google Nexus 4 screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot screenshot Works as expected

Lighthouse Audit

I’ve tested my deployed project using the Lighthouse Audit tool to check for any major issues.

Page Mobile Desktop Notes
Home screenshot screenshot Some minor and warnings
Tutor List screenshot screenshot Some minor and warnings
Tutor Profile screenshot screenshot Some minor and warnings
Tutor Add screenshot screenshot Some minor warnings
Tutor Edit screenshot screenshot Some minor warnings
Booking screenshot screenshot Some minor warnings
Profile screenshot screenshot Some minor warnings
Contact screenshot screenshot Some minor warnings
Sign Out screenshot screenshot Some minor warnings
Register screenshot screenshot Some minor warnings
Login screenshot screenshot Some minor warnings
Reset Password screenshot screenshot Some minor warnings
403 screenshot screenshot Some minor warnings
404 screenshot screenshot Some minor warnings

Defensive Programming

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 screenshot
  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 screenshot
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 screenshot
  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 screenshot
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 screenshot
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 screenshot
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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
  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 screenshot
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 screenshot
  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 screenshot
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 screenshot
  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 screenshot
  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 screenshot

User Story Testing

User Story Screenshot
As a new site user, I would like to create an account, so that I can access tutoring services. screenshot
As a new site user, I would like to browse available tutors, so that I can find the right match for my learning needs. screenshot
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. screenshot
As a returning site user, I would like to view my booking history, so that I can keep track of my past sessions. screenshot
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. screenshot screenshot screenshot
As a returning site user, I would like to update my profile information, so that my details remain current. screenshot
As a site administrator, I should be able to manage user accounts, so that I can ensure a secure and efficient platform. screenshot
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. screenshot
As a site administrator, I should be able to handle booking requests, so that I can ensure smooth scheduling and session management. screenshot

GitHub Issues

Fixed Bugs

GitHub issue custom search

GitHub closed issues

All previously closed/fixed bugs can be tracked here.

Bug Status
Hamburger icon not transforming into X icon when opening the menu Closed
Footer nav links clickable area is full width instead of within text area Closed
Images order stacked incorrectly in smaller screens Closed
Sign Up & Login buttons in the landing page are stacked each other in smaller screens Closed
Element div not allowed as child of element button for menu toggler in the mobile view Closed
End tag h2 seen, but there were open elements in the index.html Closed
Profile picture does not restore to the default image upon the page reload to display the error Closed
Django’s default allauth signup form does not prevent users from submitting the form with the already registered email Closed
[The terminal output shows the error “ SyntaxWarning: invalid escape sequence '\s'"](https://github.com/RoBizMan/SignCoding/issues/36) Closed
[The terminal output shows the error “ UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'tutor.models.Tutor'> QuerySet. paginator = Paginator(tutors_list, 5)"](https://github.com/RoBizMan/SignCoding/issues/37) Closed
Session time slots initialise before picking the date from the session date Closed
Login page does not display the error message Closed
Pagination number displays instead of the actual page number Closed
Today’s date that is already past all available time slots are displaying in the session date datetime picker widget Closed
Fully booked status not displaying properly Closed
Booking form Submit/Cancel button width overflow in the mobile view Closed
Booking Confirmation sends out the email with (no subject) Closed

Open Issues

GitHub issues

Any remaining open issues can be tracked here.

No open issues so far.

Unfixed Bugs

[!NOTE]
There are no remaining bugs that I am aware of.