diff --git a/tests/src/Functional/GroupBrowserTestBase.php b/tests/src/Functional/GroupBrowserTestBase.php
index d2b4b74..e3b93cf 100644
--- a/tests/src/Functional/GroupBrowserTestBase.php
+++ b/tests/src/Functional/GroupBrowserTestBase.php
@@ -123,4 +123,27 @@ abstract class GroupBrowserTestBase extends BrowserTestBase {
     return $group_role;
   }
 
+  /**
+   * Get a group from the database based on its title.
+   *
+   * @param string|\Drupal\Component\Render\MarkupInterface $title
+   *   A group title, usually generated by $this->randomMachineName().
+   * @param $reset
+   *   (optional) Whether to reset the entity cache.
+   *
+   * @return \Drupal\group\Entity\GroupInterface
+   *   A group entity matching $title.
+   */
+  public function getGroupByTitle($title, $reset = FALSE) {
+    $group_storage = \Drupal::entityTypeManager()->getStorage('group');
+    if ($reset) {
+      $group_storage->resetCache();
+    }
+    // Cast MarkupInterface objects to string.
+    $title = (string) $title;
+    $groups = $group_storage->loadByProperties(['label' => $title]);
+    // Load the first group returned from the database.
+    return reset($groups);
+  }
+
 }
diff --git a/tests/src/Functional/GroupCreatorWizardTest.php b/tests/src/Functional/GroupCreatorWizardTest.php
index 29b0672..ca0c6a1 100644
--- a/tests/src/Functional/GroupCreatorWizardTest.php
+++ b/tests/src/Functional/GroupCreatorWizardTest.php
@@ -21,41 +21,37 @@ class GroupCreatorWizardTest extends GroupBrowserTestBase {
    * Tests that a group creator gets a membership using the wizard.
    */
   public function testCreatorMembershipWizard() {
-    $group_type = $this->createGroupType();
-    $group_type_id = $group_type->id();
-
-    $role = $this->drupalCreateRole(["create $group_type_id group"]);
-    $this->groupCreator->addRole($role);
-    $this->groupCreator->save();
-
-    $this->drupalGet("/group/add/$group_type_id");
-    $this->assertSession()->statusCodeEquals(200);
+    $group_type = $this->createGroupTypeAndRole();
 
     $submit_button = 'Create ' . $group_type->label() . ' and complete your membership';
     $this->assertSession()->buttonExists($submit_button);
     $this->assertSession()->buttonExists('Cancel');
 
-    $edit = ['Title' => $this->randomString()];
+    $group_title = $this->randomString();
+    $edit = ['Title' => $group_title];
     $this->submitForm($edit, $submit_button);
 
+    // First submit group form.
     $submit_button = 'Save group and membership';
     $this->assertSession()->buttonExists($submit_button);
     $this->assertSession()->buttonExists('Back');
+
+    // Second submit group membership form.
+    $this->submitForm([], $submit_button);
+    $this->assertSession()->statusCodeEquals(200);
+
+    $group = $this->getGroupByTitle($group_title);
+
+    $members = $group->getRelationshipsByEntity($this->groupCreator, 'group_membership');
+    // We want to be sure that only one membership was created.
+    $this->assertEquals(1, count($members));
   }
 
   /**
    * Tests that a group creator gets a membership without using the wizard.
    */
   public function testCreatorMembershipNoWizard() {
-    $group_type = $this->createGroupType(['creator_wizard' => FALSE]);
-    $group_type_id = $group_type->id();
-
-    $role = $this->drupalCreateRole(["create $group_type_id group"]);
-    $this->groupCreator->addRole($role);
-    $this->groupCreator->save();
-
-    $this->drupalGet("/group/add/$group_type_id");
-    $this->assertSession()->statusCodeEquals(200);
+    $group_type = $this->createGroupTypeAndRole(FALSE);
 
     $submit_button = 'Create ' . $group_type->label() . ' and become a member';
     $this->assertSession()->buttonExists($submit_button);
@@ -66,9 +62,38 @@ class GroupCreatorWizardTest extends GroupBrowserTestBase {
    * Tests that a group form is not turned into a wizard.
    */
   public function testNoWizard() {
+    $group_type = $this->createGroupTypeAndRole(FALSE, FALSE);
+
+    $this->assertSession()->buttonExists('Create ' . $group_type->label());
+    $this->assertSession()->buttonNotExists('Cancel');
+
+    $group_title = $this->randomString();
+    $edit = ['Title' => $group_title];
+    $submit_button = 'Create ' . $group_type->label();
+    $this->submitForm($edit, $submit_button);
+
+    $group = $this->getGroupByTitle($group_title);
+
+    $members = $group->getRelationshipsByEntity($this->groupCreator, 'group_membership');
+    // We want to be sure that no membership was created.
+    $this->assertEquals(0, count($members));
+  }
+
+  /**
+   * Create group type and role with creation rights.
+   *
+   * @param bool $creator_wizard
+   *   The group creator must immediately complete their membership.
+   * @param bool $creator_membership
+   *   The group creator automatically receives a membership.
+   *
+   * @return \Drupal\group\Entity\GroupType
+   *   Group type.
+   */
+  protected function createGroupTypeAndRole($creator_wizard = TRUE, $creator_membership = TRUE) {
     $group_type = $this->createGroupType([
-      'creator_membership' => FALSE,
-      'creator_wizard' => FALSE,
+      'creator_membership' => $creator_membership,
+      'creator_wizard' => $creator_wizard,
     ]);
     $group_type_id = $group_type->id();
 
@@ -76,10 +101,10 @@ class GroupCreatorWizardTest extends GroupBrowserTestBase {
     $this->groupCreator->addRole($role);
     $this->groupCreator->save();
 
-    $this->drupalGet("/group/add/$group_type_id");
+    $this->drupalGet("/group/add/{$group_type->id()}");
     $this->assertSession()->statusCodeEquals(200);
-    $this->assertSession()->buttonExists('Create ' . $group_type->label());
-    $this->assertSession()->buttonNotExists('Cancel');
+
+    return $group_type;
   }
 
 }
