diff --git a/mod/h5pactivity/tests/behat/grading_attempts.feature b/mod/h5pactivity/tests/behat/grading_attempts.feature
index 14f9e7a8f7d..15d532b469b 100644
--- a/mod/h5pactivity/tests/behat/grading_attempts.feature
+++ b/mod/h5pactivity/tests/behat/grading_attempts.feature
@@ -24,26 +24,18 @@ Feature: Change grading options in an H5P activity
       | course          | C1                                         |
       | name            | Awesome H5P package                        |
       | packagefilepath | h5p/tests/fixtures/multiple-choice-2-6.h5p |
-    And I am on the "Awesome H5P package" "h5pactivity activity" page logged in as student1
-    And I switch to "h5p-player" class iframe
-    And I switch to "h5p-iframe" class iframe
-    And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
-    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
-    And I click on "Retry" "button" in the ".h5p-question-buttons" "css_element"
-    And I click on "Correct one" "text" in the ".h5p-question-content" "css_element"
-    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
-    And I switch to the main frame
-    # H5P does not allow to Retry if the user checks the correct answer, we need to refresh the page.
-    And I reload the page
-    And I switch to "h5p-player" class iframe
-    And I switch to "h5p-iframe" class iframe
-    And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
-    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
-    And I switch to the main frame
+    And the following "mod_h5pactivity > attempts" exist:
+      | user     | h5pactivity         | attempt | interactiontype   | rawscore | maxscore | duration | completion | success |
+      | student1 | Awesome H5P package | 1       | choice            | 0        | 1        | 4        | 1          | 0       |
+      | student1 | Awesome H5P package | 2       | choice            | 1        | 1        | 4        | 1          | 1       |
+      | student1 | Awesome H5P package | 3       | choice            | 0        | 1        | 4        | 1          | 0       |
 
   @javascript
   Scenario: Default grading is max attempt grade
-    Given I am on the "Course 1" course page logged in as teacher1
+    Given I am on the "Awesome H5P package" "h5pactivity activity editing" page logged in as teacher1
+    And I expand all fieldsets
+    And the field "Grading method" matches value "Highest grade"
+    And I click on "Save and return to course" "button"
     When I navigate to "View > User report" in the course gradebook
     And I set the field "Select all or one user" to "Student 1"
     Then the following should exist in the "user-grade" table:
@@ -63,7 +55,7 @@ Feature: Change grading options in an H5P activity
       | Awesome H5P package | 0.00  | 0.00 %     |
 
   @javascript
-  Scenario: Change setting to first attempt
+  Scenario: Change setting to last attempt
     Given I am on the "Awesome H5P package" "h5pactivity activity editing" page logged in as teacher1
     When I set the following fields to these values:
       | Grading method | Last attempt |
diff --git a/mod/h5pactivity/tests/behat/sending_attempt.feature b/mod/h5pactivity/tests/behat/sending_attempt.feature
index 29400702477..c810e4fda22 100644
--- a/mod/h5pactivity/tests/behat/sending_attempt.feature
+++ b/mod/h5pactivity/tests/behat/sending_attempt.feature
@@ -2,7 +2,7 @@
 Feature: Do a H5P attempt
   In order to let students do a H5P attempt
   As a teacher
-  I need to list students attempts on the log report
+  I need to list students attempts on various reports
 
   Background:
     Given the following "users" exist:
@@ -24,6 +24,7 @@ Feature: Do a H5P attempt
       | course          | C1                                         |
       | name            | Awesome H5P package                        |
       | packagefilepath | h5p/tests/fixtures/multiple-choice-2-6.h5p |
+      | grademethod     | 2                                          |
 
   Scenario: View an H5P as a teacher
     When I am on the "Awesome H5P package" "h5pactivity activity" page logged in as teacher1
@@ -31,7 +32,7 @@ Feature: Do a H5P attempt
     Then I should see "This content is displayed in preview mode"
 
   @javascript
-  Scenario: To an attempts and check on course log report
+  Scenario: Do an attempt and check on course log report
     When I am on the "Awesome H5P package" "h5pactivity activity" page logged in as student1
     And I wait until the page is ready
     And I should not see "This content is displayed in preview mode"
@@ -46,3 +47,45 @@ Feature: Do a H5P attempt
     And I follow "Student 1"
     Then I follow "Today's logs"
     And I should see "xAPI statement received"
+
+  @javascript
+  Scenario: Do various attempts and check them with the attempts and user grades reports
+    Given I am on the "Awesome H5P package" "h5pactivity activity" page logged in as student1
+    And I wait until the page is ready
+    And I should not see "This content is displayed in preview mode"
+    And I switch to "h5p-player" class iframe
+    And I switch to "h5p-iframe" class iframe
+    And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
+    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
+    And I click on "Retry" "button" in the ".h5p-question-buttons" "css_element"
+    # We need to wait 1 second here because, in very quick environments, the 2nd
+    # attempts happen too close to the 1st one and it's not sent properly. See MDL-76010.
+    And I wait "1" seconds
+    And I click on "Correct one" "text" in the ".h5p-question-content" "css_element"
+    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
+    # H5P does not allow to Retry if the user checks the correct answer, we need to refresh the page.
+    And I switch to the main frame
+    And I reload the page
+    And I switch to "h5p-player" class iframe
+    And I switch to "h5p-iframe" class iframe
+    # Because of the steps above, the 2nd and 3rd attempts are enough "separated" and we don't
+    # need to add any wait here.
+    And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
+    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
+    And I click on "Retry" "button" in the ".h5p-question-buttons" "css_element"
+    # Again, the wait between 3rd and 4th attempt, to separate them a little bit.
+    And I wait "1" seconds
+    And I click on "Correct one" "text" in the ".h5p-question-content" "css_element"
+    And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
+    And I switch to the main frame
+    When I navigate to "Attempts report" in current page administration
+    And "1" row "Score" column of "table" table should contain "0"
+    And "2" row "Score" column of "table" table should contain "1"
+    And "3" row "Score" column of "table" table should contain "0"
+    And "4" row "Score" column of "table" table should contain "1"
+    And I am on the "Course 1" course page logged in as teacher1
+    And I navigate to "View > User report" in the course gradebook
+    And I set the field "Select all or one user" to "Student 1"
+    Then the following should exist in the "user-grade" table:
+      | Grade item          | Grade | Percentage  |
+      | Awesome H5P package | 50.00 | 50.00 %     |
diff --git a/mod/h5pactivity/tests/generator/lib.php b/mod/h5pactivity/tests/generator/lib.php
index 161d59caba8..212da1599b3 100644
--- a/mod/h5pactivity/tests/generator/lib.php
+++ b/mod/h5pactivity/tests/generator/lib.php
@@ -191,6 +191,7 @@ class mod_h5pactivity_generator extends testing_module_generator {
      * @param array $data the attempts data array
      */
     public function create_attempt(array $data): void {
+        global $DB;
 
         if (!isset($data['h5pactivityid'])) {
             throw new coding_exception('Must specify h5pactivityid when creating a H5P attempt.');
@@ -218,6 +219,12 @@ class mod_h5pactivity_generator extends testing_module_generator {
         }
 
         $this->insert_statement($data, $this->$method($data));
+
+        // If the activity has tracking enabled, try to recalculate grades.
+        $activity = $DB->get_record('h5pactivity', ['id' => $data['h5pactivityid']]);
+        if ($activity->enabletracking) {
+            h5pactivity_update_grades($activity, $data['userid']);
+        }
     }
 
     /**