Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 2 additions & 26 deletions docs/developing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ in `local-module-development <https://github.com/openedx/frontend-app-learning#l
How does the proctoring system work?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

See `system overview`_ for a description of the proctoring system and it's components.
See `System Overview`_ for a description of the proctoring system and it's components.


Email Templates
Expand Down Expand Up @@ -251,36 +251,12 @@ The contents of ``EDXAPP_PROCTORING_BACKENDS`` will depend on which
backend(s) you're interested in testing. It's necessary to provide a
``DEFAULT`` backend.

Proctortrack
""""""""""""

As will be the case with all REST backends implementing `our spec`_, one
doesn't need to configure much to get Proctortrack working on a
sandbox, e.g.::

EDXAPP_PROCTORING_BACKENDS:
DEFAULT: 'proctortrack'
proctortrack:
client_id: "<you'll need to fill these in with credentials from Proctortrack>"
client_secret: "<you'll need to fill these in with credentials from Proctortrack>"
base_url: 'https://prestaging.verificient.com'
integration_specific_email: "proctortrack-support@edx.org"

In addition to adding these configurations, you'll also need to set up
a user which PT can authenticate as.

* Create a user group called ``proctortrack_review`` in Django admin
* Create a user, and associate it with that group
* Create an OAuth application
(``/admin/oauth2_provider/application/``) pointing to the user
you've created, and share the client_id with folks on the other end
of the integration.

.. _our spec: ./backends.rst
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This link is not visible in the preview page

Copy link
Copy Markdown
Contributor Author

@santhosh-apphelix-2u santhosh-apphelix-2u Jul 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the deleted code so it wont be visible.
Check with the exact line number in Raw and then in preview

.. _system overview: ./system-overview.rst
.. _generate a public JWK keypair: https://mkjwk.org/
.. _More on that here.: https://openedx.atlassian.net/wiki/spaces/EdxOps/pages/13960183/Sandboxes#Sandboxes-Updatingcode


RPNow
"""""

Expand Down
32 changes: 11 additions & 21 deletions docs/system-overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,10 @@ This can exist as a Python module or be committed directly into edx-proctoring a

`More information on configuring backends <https://github.com/openedx/edx-proctoring/blob/master/docs/backends.rst>`_

We have two real backends used in production:
We have one real backend currently used in production:

1. RPNow: https://github.com/openedx/edx-proctoring/blob/447c0bf49f31fa4df2aa2b0339137ccfd173f237/edx_proctoring/backends/software_secure.py

#. Proctortrack: https://github.com/joshivj/edx-proctoring-proctortrack
#. RPNow: https://github.com/openedx/edx-proctoring/blob/447c0bf49f31fa4df2aa2b0339137ccfd173f237/edx_proctoring/backends/software_secure.py

For testing backends see `mockprock <https://github.com/openedx/edx-proctoring/blob/master/docs/developing.rst#using-mockprock-as-a-backend>`_

Expand All @@ -70,41 +70,31 @@ are required for each of these messages to keep the exam from entering an error

Message Interface: `exam_action_handler.js <https://github.com/openedx/edx-proctoring/blob/master/edx_proctoring/static/proctoring/js/exam_action_handler.js>`_

JavaScript Worker
^^^^^^^^^^^^^^^^^
This is an optional component currently used by Proctortrack and our Mockprock provider.

A JavaScript worker included as part of the the provider's python plugin. This will
handle any messages emitted by the edX web application and interface directly with the
proctoring software running on the learner's machine.

Example worker: `proctortrack_custom.js <https://github.com/joshivj/edx-proctoring-proctortrack/blob/master/edx_proctoring_proctortrack/static/proctortrack_custom.js>`_

See `Example Action Sequence`_ for how this interface fits into the exam process.

Exam States
-----------

When a learner first enters a proctored exam subsection an exam attempt is created
in the edX system. User actions and the proctoring provider will update the status of
this attempt as the exam is completed and reviewed. The following diagram describes the
flow through those status updates.

Detailed descriptions of each potential attempt state can be found below. It should be noted that there
are minor differences in the review process between RPNow and Proctortrack exams.
Detailed descriptions of each potential attempt state can be found below.

- `Proctortrack status values <https://docs.openedx.org/en/latest/educators/how-tos/proctored_exams/review_pt_results.html>`_
- `RPNow status values <https://docs.openedx.org/en/latest/educators/how-tos/proctored_exams/review_rpnow_results.html>`_

This figure does not include error states or display of unmet prerequite requirements.
This figure does not include error states or display of unmet prerequisite requirements.

.. image:: images/attempt_states.png


Example Action Sequence
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 95 has Proctrotrack reference. Is this need to be handled along with the below image?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have changed the text slightly

-------------------------

The diagrams below describes the happy-path of interactions between components to
sucessfully begin a proctored exam. These examples matches Proctortrack's backend
implementation and includes any JavaScript events handled by the proctoring app.
The diagram below describes the happy-path of interactions between components to
successfully begin a proctored exam. These examples match the backend
implementation of a typical proctoring provider and include any JavaScript events
handled by the proctoring app.

Old Sequence
^^^^^^^^^^^^
Expand Down
15 changes: 3 additions & 12 deletions docs/testing/test_plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ This document should serve as a catalogue of key features included in the procto
## Resources

#### Test Courses in Stage
- [course-v1:edX+cheating101+2018T3](https://learning.stage.edx.org/course/course-v1:edX+cheating101+2018T3/home) (Proctortrack)
- [course-v1:edX+StageProctortrack+2019](https://learning.stage.edx.org/course/course-v1:edX+StageProctortrack+2019/home) (Proctortrack)
- [course-v1:Proctoring2+Proctoring2+Proctoring2](https://learning.stage.edx.org/course/course-v1:Proctoring2+Proctoring2+Proctoring2/home) (RPNow)

#### Django Admin Models
Expand All @@ -30,7 +28,7 @@ This document should serve as a catalogue of key features included in the procto
- [ ] A button or link to start the exam
- [ ] Click the link to start the exam
- [ ] You should see the first unit in the exam
- [ ] The exam timer is shown and functions properly. [Exam Timer](#exam-timer)
- [ ] The exam timer is shown and functions properly. [Exam Timer](#exam-timer)
- [ ] Click end my exam using the timer banner
- [ ] You should see an interstitial confirming if you want to submit
- [ ] Submit the exam
Expand Down Expand Up @@ -96,12 +94,11 @@ This document should serve as a catalogue of key features included in the procto
- [ ] There should be a functioning link to the support docs four proctored exam rules
- [ ] Click start my exam
- [ ] You should see the first unit in the exam
- [ ] The exam timer is shown and functions properly. [Exam Timer](#exam-timer)
- [ ] The exam timer is shown and functions properly. [Exam Timer](#exam-timer)
- [ ] Click end my exam on the banner
- [ ] Click submit on the confirmation page
- [ ] You should see an interstitial confirming the exam has been submitted and is waiting on review
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 102 has Proctrotrack reference? Is this to be handled?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I have removed.

- [ ] You should receive an email stating your exam has been submitted for review
- [ ] This test has been completed with a Proctortrack exam
- [ ] This test has been completed with a RPNow exam

#### <a name="error"></a> Learners are removed from the exam if connectivity to the proctoring software is not maintained
Expand Down Expand Up @@ -197,7 +194,7 @@ This document should serve as a catalogue of key features included in the procto
- [ ] Get the `external_id` of both the resumed and submitted attempts from [Django Admin](#django-admin-models)
- [ ] As an admin user use the external id of the resumed attempt to send a POST request to the exam review endpoint with a status of `passed`
- [ ] An alternative is to wait for this review to come back organically (may take 24hrs)
- [ ] As an admin user use the external id of the submitted attempt to send a POST request to the exam review endpoint with a status of `suspicious`
- [ ] As an admin user use the external id of the submitted attempt to send a POST request to the exam review endpoint with a status of `suspicious`
- [ ] Update the review from `suspicious` to `rules violation` in [Django Admin](#django-admin-models)
- [ ] Validate the exam grade has been overridden to zero using gradebook (tab in instructor dashboard)
- [ ] Query read replica to validate the certificate has been marked `unavailable` [Useful Queries](#useful-queries)
Expand Down Expand Up @@ -244,11 +241,5 @@ This document should serve as a catalogue of key features included in the procto
- [ ] Filtering by "Not Started" it includes the learner(s) who has not started onboarding
- [ ] Filtering by multiple statuses functions as expected

#### Proctortrack review dashboard is rendered for the correct course
This is only applicable to Proctortrack courses
- [ ] Navigate to the special exams tab within the instructor dashboard
- [ ] Expand the "Review Dashboard" dropdown
- [ ] The Proctortrack UI is rendered for the correct course

#### Additional Features
- [ ] Allowances