MDL-51101 behat: Fixed wrong hover step usage
authorRajesh Taneja <rajesh@moodle.com>
Thu, 13 Aug 2015 08:28:12 +0000 (16:28 +0800)
committerrajesh Taneja <rajesh@moodle.com>
Thu, 10 Sep 2015 06:46:12 +0000 (14:46 +0800)
Hover step was being mis-used for checking activity completion
This is replaced with proper step which check for img element

completion/tests/behat/behat_completion.php
mod/choice/tests/behat/publish_results_anonymously.feature
mod/forum/tests/behat/completion_condition_number_discussions.feature
mod/lesson/tests/behat/completion_condition_end_reached.feature
mod/lesson/tests/behat/completion_condition_time_spent.feature
mod/quiz/tests/behat/completion_condition_attempts_used.feature
mod/quiz/tests/behat/completion_condition_passing_grade.feature

index 6790dbf..3762290 100644 (file)
@@ -122,4 +122,40 @@ class behat_completion extends behat_base {
             new Given('I press "'.get_string('savechangesanddisplay').'"')
         );
     }
+
+    /**
+     * Checks if the activity with specified name is maked as complete.
+     *
+     * @Given /^the "(?P<activityname_string>(?:[^"]|\\")*)" "(?P<activitytype_string>(?:[^"]|\\")*)" activity with "(manual|auto)" completion should be marked as complete$/
+     * @return array
+     */
+    public function activity_marked_as_complete($activityname, $activitytype, $completiontype) {
+        if ($completiontype == "manual") {
+            $imgalttext = get_string("completion-alt-manual-y", 'core_completion', $activityname);
+        } else {
+            $imgalttext = get_string("completion-alt-auto-y", 'core_completion', $activityname);
+        }
+        $csselementforactivitytype = "li.modtype_".strtolower($activitytype);
+
+        return new Given('"//img[contains(@alt, \''.$imgalttext.'\')]" "xpath_element" ' .
+            'should exist in the "'.$csselementforactivitytype.'" "css_element"');
+    }
+
+    /**
+     * Checks if the activity with specified name is maked as complete.
+     *
+     * @Given /^the "(?P<activityname_string>(?:[^"]|\\")*)" "(?P<activitytype_string>(?:[^"]|\\")*)" activity with "(manual|auto)" completion should be marked as not complete$/
+     * @return array
+     */
+    public function activity_marked_as_not_complete($activityname, $activitytype, $completiontype) {
+        if ($completiontype == "manual") {
+            $imgalttext = get_string("completion-alt-manual-n", 'core_completion', $activityname);
+        } else {
+            $imgalttext = get_string("completion-alt-auto-n", 'core_completion', $activityname);
+        }
+        $csselementforactivitytype = "li.modtype_".strtolower($activitytype);
+
+        return new Given('"//img[contains(@alt, \''.$imgalttext.'\')]" "xpath_element" ' .
+            'should exist in the "'.$csselementforactivitytype.'" "css_element"');
+    }
 }
index f195b0f..374f97d 100644 (file)
@@ -22,7 +22,6 @@ Feature: A teacher can choose whether to publish choice activity results anonymo
     And I follow "Course 1"
     And I turn editing mode on
 
-  @javascript
   Scenario: Publish anonymous results
     Given I add a "Choice" to section "1" and I fill the form with:
       | Choice name | Choice 1 |
@@ -41,9 +40,8 @@ Feature: A teacher can choose whether to publish choice activity results anonymo
     And I follow "Choice 1"
     Then I should not see "Student 1"
     And I should not see "Users who chose this option"
-    And I hover ".results .graph img" "css_element"
+    And ".results .graph img" "css_element" should exist
 
-  @javascript
   Scenario: Publish full results
     Given I add a "Choice" to section "1" and I fill the form with:
       | Choice name | Choice 1 |
index 586d4ff..ce20f61 100644 (file)
@@ -4,7 +4,6 @@ Feature: Set a certain number of discussions as a completion condition for a for
   As a teacher
   I need to set a minimum number of discussions to mark the forum activity as completed
 
-  @javascript
   Scenario: Set X number of discussions as a condition
     Given the following "users" exist:
       | username | firstname | lastname | email |
@@ -36,7 +35,7 @@ Feature: Set a certain number of discussions as a completion condition for a for
     And I log out
     And I log in as "student1"
     And I follow "Course 1"
-    Then I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_forum ')]/descendant::img[@alt='Not completed: Test forum name']" "xpath_element"
+    Then the "Test forum name" "forum" activity with "auto" completion should be marked as not complete
     And I add a new discussion to "Test forum name" forum with:
       | Subject | Post 1 subject |
       | Message | Body 1 content |
@@ -44,7 +43,7 @@ Feature: Set a certain number of discussions as a completion condition for a for
       | Subject | Post 2 subject |
       | Message | Body 2 content |
     And I follow "Course 1"
-    And I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_forum ')]/descendant::img[contains(@alt, 'Completed: Test forum name')]" "xpath_element"
+    Then the "Test forum name" "forum" activity with "auto" completion should be marked as complete
     And I log out
     And I log in as "teacher1"
     And I follow "Course 1"
index f563080..ac44d5b 100644 (file)
@@ -4,7 +4,6 @@ Feature: Set end of lesson reached as a completion condition for a lesson
   As a teacher
   I need to set end of lesson reached to mark the lesson activity as completed
 
-  @javascript
   Scenario: Set end reached as a condition
     Given the following "users" exist:
       | username | firstname | lastname | email |
@@ -39,7 +38,7 @@ Feature: Set end of lesson reached as a completion condition for a lesson
       | id_answer_editor_0 | Next page |
       | id_jumpto_0 | Next page |
     And I press "Save page"
-    And I set the field "qtype" to "Add a content page"
+    And I select "Add a content page" from the "qtype" singleselect
     And I set the following fields to these values:
       | Page title | Second page name |
       | Page contents | Second page contents |
@@ -51,11 +50,11 @@ Feature: Set end of lesson reached as a completion condition for a lesson
     And I log out
     When I log in as "student1"
     And I follow "Course 1"
-    Then I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_lesson ')]/descendant::img[@alt='Not completed: Test lesson']" "xpath_element"
+    Then the "Test lesson" "lesson" activity with "auto" completion should be marked as not complete
     And I follow "Test lesson"
     And I press "Next page"
     And I follow "Course 1"
-    And I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_lesson ')]/descendant::img[@alt='Not completed: Test lesson']" "xpath_element"
+    Then the "Test lesson" "lesson" activity with "auto" completion should be marked as not complete
     And I follow "Course 1"
     And I follow "Test lesson"
     And I should see "You have seen more than one page of this lesson already."
@@ -64,7 +63,7 @@ Feature: Set end of lesson reached as a completion condition for a lesson
     And I press "Next page"
     And I press "Next page"
     And I follow "Course 1"
-    And I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_lesson ')]/descendant::img[@alt='Completed: Test lesson']" "xpath_element"
+    Then the "Test lesson" "lesson" activity with "auto" completion should be marked as complete
     And I log out
     And I log in as "teacher1"
     And I follow "Course 1"
index e3c6cb1..821b152 100644 (file)
@@ -41,7 +41,7 @@ Feature: Set time spent as a completion condition for a lesson
       | id_answer_editor_0 | Next page |
       | id_jumpto_0 | Next page |
     And I press "Save page"
-    And I set the field "qtype" to "Add a content page"
+    And I select "Add a content page" from the "qtype" singleselect
     And I set the following fields to these values:
       | Page title | Second page name |
       | Page contents | Second page contents |
@@ -53,14 +53,14 @@ Feature: Set time spent as a completion condition for a lesson
     And I log out
     When I log in as "student1"
     And I follow "Course 1"
-    Then I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_lesson ')]/descendant::img[@alt='Not completed: Test lesson']" "xpath_element"
+    Then the "Test lesson" "lesson" activity with "auto" completion should be marked as not complete
     And I follow "Test lesson"
     And I press "Next page"
     And I press "Next page"
     And I should see "You completed this lesson in"
     And I should see ", which is less than the required time of 1 min. You might need to attempt the lesson again."
     And I follow "Course 1"
-    And I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_lesson ')]/descendant::img[@alt='Not completed: Test lesson']" "xpath_element"
+    And the "Test lesson" "lesson" activity with "auto" completion should be marked as not complete
     And I follow "Course 1"
     And I follow "Test lesson"
     And I press "Next page"
@@ -68,7 +68,7 @@ Feature: Set time spent as a completion condition for a lesson
     And I press "Next page"
     And I should not see "You might need to attempt the lesson again."
     And I follow "Course 1"
-    And I hover "//li[contains(concat(' ', normalize-space(@class), ' '), ' modtype_lesson ')]/descendant::img[@alt='Completed: Test lesson']" "xpath_element"
+    And the "Test lesson" "lesson" activity with "auto" completion should be marked as complete
     And I log out
     And I log in as "teacher1"
     And I follow "Course 1"
index 405d714..2e9ff0a 100644 (file)
@@ -35,14 +35,14 @@ Feature: Set a quiz to be marked complete when the student uses all attempts all
   Scenario: student1 uses up both attempts without passing
     When I log in as "student1"
     And I follow "Course 1"
-    And "//img[contains(@alt, 'Not completed: Test quiz name')]" "xpath_element" should exist in the "li.modtype_quiz" "css_element"
+    And the "Test quiz name" "quiz" activity with "auto" completion should be marked as not complete
     And I follow "Test quiz name"
     And I press "Attempt quiz now"
     And I set the field "False" to "1"
     And I press "Next"
     And I press "Submit all and finish"
     And I follow "C1"
-    And "//img[contains(@alt, 'Not completed: Test quiz name')]" "xpath_element" should exist in the "li.modtype_quiz" "css_element"
+    And the "Test quiz name" "quiz" activity with "auto" completion should be marked as not complete
     And I follow "Test quiz name"
     And I press "Re-attempt quiz"
     And I set the field "False" to "1"
index ba735c1..1d781e6 100644 (file)
@@ -35,7 +35,7 @@ Feature: Set a quiz to be marked complete when the student passes
   Scenario: student1 passes on the first try
     When I log in as "student1"
     And I follow "Course 1"
-    And "//img[contains(@alt, 'Not completed: Test quiz name')]" "xpath_element" should exist in the "li.modtype_quiz" "css_element"
+    And the "Test quiz name" "quiz" activity with "auto" completion should be marked as not complete
     And I follow "Test quiz name"
     And I press "Attempt quiz now"
     And I set the field "True" to "1"