From 53097d8bebd0e0ec82a01795c069b130d9156983 Mon Sep 17 00:00:00 2001
From: Mark <mark@openappstack.net>
Date: Tue, 5 Nov 2019 18:26:32 +0100
Subject: [PATCH] Add test for users page

---
 frontend/test/e2e/admin.test.js | 23 +++++++++++++++++++++++
 frontend/test/pages/users.js    | 31 +++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+)
 create mode 100644 frontend/test/pages/users.js

diff --git a/frontend/test/e2e/admin.test.js b/frontend/test/e2e/admin.test.js
index ee203a7..ad9df7e 100644
--- a/frontend/test/e2e/admin.test.js
+++ b/frontend/test/e2e/admin.test.js
@@ -23,5 +23,28 @@ module.exports = {
     navbar
       .assert.elementPresent('@oidc')
       .assert.elementPresent('@users')
+  },
+  'Users page' : function(browser){
+    const users = browser.page.users();
+    const groups = users.section.leftSidebar;
+    const addUser = users.section.addUser;
+    const newUsername = "newTestUser"
+    users.navigate()
+    groups
+      .waitForElementVisible("@all")
+      .assert.containsText("@all", "All")
+    addUser
+      .assert.containsText("@addUserButton", "Add user")
+      .click("@addUserButton")
+      .waitForElementVisible("@inputUsername")
+      .assert.hidden("@addUserButton")
+      .assert.visible("@submitUsername")
+      .setValue("@inputUsername", browser.globals.adminUsername)
+      .assert.attributeEquals("@inputUsername", "aria-invalid", "true")
+      .assert.cssClassPresent("@inputUsername", "is-invalid")
+      .setValue("@inputUsername", newUsername)
+      .assert.cssClassPresent("@inputUsername", "is-valid")
+      .click("@submitUsername")
+      .assert.hidden("@inputUsername")
   }
 };
diff --git a/frontend/test/pages/users.js b/frontend/test/pages/users.js
new file mode 100644
index 0000000..5327a10
--- /dev/null
+++ b/frontend/test/pages/users.js
@@ -0,0 +1,31 @@
+module.exports = {
+  url: function(){
+    return this.api.launchUrl + "/users"
+  },
+  elements: {},
+  sections: {
+    addUser: {
+      selector: 'form.mt-5.form-inline',
+      elements:{
+        addUserButton: {
+            selector: 'button[align-h="end"].btn-outline-success'
+        },
+        inputUsername: {
+          selector: '#input-new-username'
+        },
+        submitUsername: {
+          selector: 'button[type="submit"].btn-success'
+        }
+      }
+    },
+    leftSidebar: {
+        selector: 'div.border-right.d-none.d-md-block',
+        elements: {
+          all: {
+            selector: "button.list-group-item",
+            index: 0
+            }
+          }
+        }
+  }
+};
-- 
GitLab