The main types of error:
- Unrecoverable
- Blocking
- Non-blocking
During an exam, errors are treated with the utmost care. On other pages/events, errors are less high-profile.
Unrecoverable errors emit events to Sentry, and either an error page is shown to the Camper, or the app crashes (sometimes this is unavoidable).
Blocking errors prevent further access to the app until the error is resolved.
Non-blocking errors display an inline message about the failure to the Camper. It is up to the user to retry the action.
Example: API returns 500 for generated exam request
After retrying request 3 times, the error page is shown. An event is emitted to Sentry.
The exam attempt is continued, but no more question submissions may be made until the error is resolved.
Example: Connection to API is offline
A modal appears telling Camper to reconnect and rety request. Once the request is able to go through, the modal disappears.
Likely causes:
- Device loses internet connection
Example: Camera is inaccessible
A modal appears requesting access be reinstated.
Likely causes:
- App permissions to media device revoked
- Manually done by Camper
- Manually done by 3rd party
- 3rd party takes priority access to camera. E.g. Google Meet
- Device is disconnected from computer
- Manually done by Camper
- Malfunction
Example: OS secret storage loses access to authorization token
After retrying to get the key from the OS keystore, a modal appears requesting the token be set again.
Likely causes:
- App permissions to keystore revoked
- Manually done by Camper
- Manually done by 3rd party
- Deletion of token from keystore
- Manually done by Camper
- Manually done by 3rd party
- Would require Camper to give the 3rd party permission to access this keystore
Example: API is unable to process screenshots
The app continues sending requests, and the Camper is oblivious to issue. This is entirely handled/logged by the API.