Skip to content
Learnomy

Exam Integrity Report

When you grade a quiz attempt, Learnomy shows a short integrity readout at the top of the Grade attempt screen. It gathers the honest-effort signals recorded during the exam - the tab-switch count, the submission IP address, and a late-submission signal - in one place so a suspicious attempt stands out while you review it. Every signal is advisory, not proof of misconduct.

What you can do

  • See how many times the student left the quiz tab during the attempt, shown right on the Grade attempt screen.
  • Spot a flagged attempt at a glance: once the tab-switch count reaches the threshold the signal turns to a warning shield instead of a check.
  • See the IP address the attempt was submitted from, so submissions from an unexpected location are visible.
  • See a "submitted after the time limit" signal, with the number of minutes over, when a timed attempt came in late.
  • Read a built-in reminder that these signals are advisory only and not proof of misconduct, so the readout is never mistaken for a verdict.
  • Tune how many tab switches count as suspicious with a developer filter, or turn the flag styling off entirely.

The Grade attempt screen showing the integrity readout with IP, tab switches, and a late-submission signal

How to use it

  1. Go to Learnomy > Grading.
  2. Open a submitted attempt from the list to reach the Grade attempt screen.
  3. Read the integrity row directly under the student and quiz title. It shows up to three signals:
    • IP: the address the attempt was submitted from. Always shown when an address was recorded.
    • Tab switches: how many times the student left the quiz tab. Shown when tab tracking is on. A flagged count shows a warning shield; a count under the threshold shows a check shield.
    • Submitted after the time limit: shown only for a timed attempt that came in late, with the minutes over.
  4. When a signal is flagged, a short line reminds you it is advisory only, not proof of misconduct. Treat it as a prompt to look closer, not as a decision.
  5. Grade the attempt as normal. The integrity row is context for your review - it does not change the score on its own.

The tab-switch count only appears when the tab-switch recorder is turned on. To turn it on and set the auto-submit limit, see Quiz Proctoring.

Settings & options

The integrity report has no settings of its own - it reads signals recorded during the exam. The one setting that controls whether the tab-switch signal appears lives on the Quiz settings tab:

Setting What it does
Track Tab Switches (learnomy_settings[quiz_track_tabs]) When on, the tab-switch count is recorded on every attempt and the Tab switches signal appears on the Grade attempt screen. When off, that signal is hidden.
Auto-submit after N tab switches (learnomy_settings[quiz_tab_switch_limit]) Optional. How many switches are allowed before the quiz submits itself. See Quiz Proctoring. Does not change the report, only the enforcement.

The IP address and late-submission signals need no setting - they are recorded automatically. The IP is stored on the attempt (ip_address), and the late signal comes from the attempt's saved runner state (late_submission and seconds_over).

For developers

Filter:

  • learnomy_tab_switch_flag_threshold - the switch count at or above which the tab-switch signal is flagged. Default 3. Passed the threshold, the attempt row, and the quiz. Return 0 to disable the flag styling entirely (the count still shows, just never flagged).

Where the report is assembled (Learnomy\Admin\Admin::render_quiz_grading_detail()):

  • Learnomy\Services\Quiz_Defaults::is_tab_tracking_enabled() - whether the tab-switch recorder is on; gates the Tab switches signal.
  • $attempt->tab_switches - the recorded switch count.
  • $attempt->ip_address - the submission IP shown in the readout.
  • QuizAttempt::get_runner_state( $attempt_id ) - returns the saved runner state; late_submission and seconds_over drive the late signal.

The signals render in includes/admin/views/quiz-grading-detail.php (the lrn-grading-meta header row).

REST:

  • POST /learnomy/v1/quiz-attempts/{id}/tab-switch - records a tab-switch event during the attempt; this is the count the report later reads. Fired by the quiz player, not called by graders.

Related