text: // when new user fills out form and registers, new user should get created
  // when user signs in with username and password, should redirect to home page
  // newly created user record should have role
  // newly created user record should have profile
  // newly created user record should have full, preferred, and family name
  // user object should return first name
  // user object should return last name
  // user should be able to request reset password email
  // user should be able to request be able to create new account
  // guest should be notified if username already exists
  // guest should be notified if passwords do not match
  // guest should be notified if email is not correctly formatted
  // new user should be able to register on desktop
  // new user should be able to register on tablet
  // existing user should be able to sign in on desktop
  // existing user should be able to sign in on tablet
  // existing user should be able to sign in on phone
  // existing user should be able to change their password
  // company logo should display on sign//in page
  
  
  
  module.exports = {
    tags: ['users', 'entry'],
    before: function (client) {
      client
        .url("http://localhost:3000/entrySignUp")
        .initializeUsers()
        .resizeWindow(1600, 1200);
    },
    "new user should be able to register on desktop": function (client) {
      client
        .verify.elementPresent("#entrySignUp")
        .verify.elementPresent("#signUpPageTitle")
        .verify.elementPresent("#signUpPageMessage")
        .verify.elementPresent("#signUpPageEmailInput")
        .verify.elementPresent("#signUpPagePasswordInput")
        .verify.elementPresent("#signUpPageJoinNowButton")
        .verify.elementPresent("#signUpPageSignInButton");
    },
    "company logo should display on sign-in page": function (client) {
      client
        .verify.elementPresent("#entrySignUp")
        .verify.elementPresent("#entryAppLogo");
    },
    "user should be able to request be able to create new account": function (client) {
      client.verify.elementPresent("#signUpPageEmailInput")
        .verify.elementPresent("#signUpPagePasswordInput")
        .verify.elementPresent("#signUpPagePasswordInput")
        .verify.elementPresent("#signUpPageJoinNowButton");
    },
    "guest should be notified if password is insecure": function (client) {
      client
        .clearValue("input")
        .verify.elementPresent("#signUpPagePasswordInput")
        .verify.cssProperty('#signUpPagePasswordInput', 'border', '1px solid gray')
        .setValue("#signUpPagePasswordInput", "jan")
        .verify.cssProperty('#signUpPagePasswordInput', 'border', '1px solid rgb(242, 222, 222)')
        .setValue("#signUpPagePasswordInput", "iceD*e123")
        .verify.cssProperty('#signUpPagePasswordInput', 'border', '1px solid green')
  
      .verify.cssProperty('#signUpPagePasswordConfirmInput', 'border', '1px solid gray')
        .setValue("#signUpPagePasswordConfirmInput", "ja")
        .verify.cssProperty('#signUpPagePasswordConfirmInput', 'border',
          '1px solid rgb(242, 222, 222)')
        .clearValue("#signUpPagePasswordConfirmInput")
        .setValue("#signUpPagePasswordConfirmInput", "Janiced*e123")
        .verify.cssProperty('#signUpPagePasswordConfirmInput', 'border', '1px solid green');
    },
    "guest should be notified if passwords do not match": function (client) {
      client
        .clearValue("#signUpPagePasswordConfirmInput")
        .clearValue("#signUpPagePasswordInput")
        .resetEntry()
        .pause(500)
        .verify.cssProperty('#signUpPagePasswordInput', 'border', '1px solid gray')
        .verify.cssProperty('#signUpPagePasswordConfirmInput', 'border', '1px solid gray')
        .setValue("#signUpPagePasswordInput", "Janiced*e123")
        .verify.cssProperty('#signUpPagePasswordInput', 'border', '1px solid green')
        .verify.cssProperty('#signUpPagePasswordConfirmInput', 'border', '1px solid gray')
        .setValue("#signUpPagePasswordConfirmInput", "Janiced*e123")
        .verify.cssProperty('#signUpPagePasswordInput', 'border', '1px solid green')
        .verify.cssProperty('#signUpPagePasswordConfirmInput', 'border', '1px solid green');
    },
    "guest should be notified if email is not correctly formatted": function (client) {
      client
        .clearValue("#signUpPageEmailInput")
        .resetEntry()
        .verify.elementPresent("#signUpPageEmailInput")
        .verify.cssProperty('#signUpPageEmailInput', 'border', '1px solid gray')
        .setValue("#signUpPageEmailInput", "janicedoe")
        .verify.cssProperty('#signUpPageEmailInput', 'border', '1px solid rgb(242, 222, 222)')
        .setValue("#signUpPageEmailInput", "@symptomatic.io")
        .verify.cssProperty('#signUpPageEmailInput', 'border', '1px solid green');
    },
    "when new user fills out form and registers, new user should get created": function (client) {
      client
        .verify.elementPresent("#entrySignUp")
  
      .clearValue("#signUpPagePasswordConfirmInput")
        .clearValue("#signUpPagePasswordInput")
        .clearValue("#signUpPageFullNameInput")
        .clearValue("#signUpPageEmailInput")
        .resetEntry()
  
      .setValue("#signUpPageFullNameInput", "Janice Doe")
        .setValue("#signUpPageEmailInput", "janicedoe@symptomatic.io")
        .setValue("#signUpPagePasswordInput", "Janiced*e123")
        .setValue("#signUpPagePasswordConfirmInput", "Janiced*e123")
  
      .click("#signUpPageJoinNowButton").pause(1000)
  
      .verify.containsText("#usernameLink", "janicedoe@symptomatic.io");
    },
    "user should be able to signout": function (client) {
      client
        .verify.elementPresent("#logoutButton")
        .click("#logoutButton").pause(300)
        .verify.containsText("#usernameLink", "Sign In");
    },
    "user should be able to request reset password email": function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .verify.elementPresent("#forgotPasswordButton")
        .click("#forgotPasswordButton")
        .verify.elementPresent("#forgotPassword")
        .verify.elementPresent("#signInPageEmailInput")
        .verify.elementPresent("#sendReminderButton");
    },
    "existing user should be able to sign in on desktop": function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .resizeWindow(1600, 1200)
        .verify.containsText("#usernameLink", "Sign In")
        .signIn("janicedoe@symptomatic.io", "Janiced*e123").pause(500)
        .verify.containsText("#usernameLink", "janicedoe@symptomatic.io")
        .click("#logoutButton").pause(200)
        .verify.containsText("#usernameLink", "Sign In");
    },
    "existing user should be able to sign in on tablet": function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .resizeWindow(1024, 768)
        .verify.containsText("#usernameLink", "Sign In")
        .signIn("janicedoe@symptomatic.io", "Janiced*e123").pause(500)
        .verify.containsText("#usernameLink", "janicedoe@symptomatic.io")
        .click("#logoutButton").pause(200)
        .verify.containsText("#usernameLink", "Sign In");
    },
    "existing user should be able to sign in on phone": function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .resizeWindow(320, 960)
        // .verify.containsText("#usernameLink", "Sign In")
        .signIn("janicedoe@symptomatic.io", "Janiced*e123").pause(500)
        .click("#navbarHeader").pause(300)
        .verify.containsText("#usernameLink", "janicedoe@symptomatic.io")
        .click("#logoutButton").pause(200)
        .verify.containsText("#usernameLink", "Sign In");
    },
    "existing user should be able to change their password" : function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .resizeWindow(1600, 1200)
        .verify.containsText("#usernameLink", "Sign In")
        .signIn("janicedoe@symptomatic.io", "janicedoe123").pause(500)
        .verify.containsText("#usernameLink", "janicedoe@symptomatic.io")
        .url("http://localhost:3000/changePassword")
        .verify.elementPresent("#changePasswordPageOldPasswordInput")
        .verify.elementPresent("#changePasswordPagePasswordInput")
        .verify.elementPresent("#changePasswordPagePasswordConfirmInput")
        .verify.elementPresent("#changePasswordButton")
    },
    "existing user should be notified if desired new password is insecure" : function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .resizeWindow(1600, 1200)
        .verify.containsText("#usernameLink", "Sign In")
        .signIn("janicedoe@symptomatic.io", "janicedoe123").pause(500)
        .verify.containsText("#usernameLink", "janicedoe@symptomatic.io")
        .url("http://localhost:3000/changePassword")
        .verify.elementPresent("#changePasswordPageOldPasswordInput")
        .verify.elementPresent("#changePasswordPagePasswordInput")
        .verify.elementPresent("#changePasswordPagePasswordConfirmInput")
        .verify.elementPresent("#changePasswordButton")
        .verify.cssProperty('#changePasswordPagePasswordInput', 'border', '1px solid gray')
        .setValue("#changePasswordPagePasswordInput", "jan")
        .verify.cssProperty('#changePasswordPagePasswordInput', 'border', '1px solid rgb(242, 222, 222)')
        .setValue("#changePasswordPagePasswordInput", "icedoe123")
        .verify.cssProperty('#changePasswordPagePasswordInput', 'border', '1px solid green')
        .verify.cssProperty('#changePasswordPagePasswordConfirmInput', 'border', '1px solid gray')
        .setValue("#changePasswordPagePasswordConfirmInput", "ja")
        .verify.cssProperty('#changePasswordPagePasswordConfirmInput', 'border', '1px solid rgb(242, 222, 222)')
        .clearValue("#changePasswordPagePasswordConfirmInput")
        .setValue("#changePasswordPagePasswordConfirmInput", "janicedoe123")
        .verify.cssProperty('#changePasswordPagePasswordConfirmInput', 'border', '1px solid green')
    },
    "if anonymous user tries to log in with non-existing account, a message is shown" : function (client) {
      client
        .url("http://localhost:3000/entrySignIn")
        .resizeWindow(1024, 768)
        .signIn("alice@symptomatic.io", "alice123").pause(500)
        .verify.containsText("#signInPageMessage", "User not found [403]")
        .verify.cssProperty("#signInPageMessage", "color", "rgba(169, 68, 66, 1)")
        .verify.cssProperty("#signInPageMessage", "background-color", "rgba(242, 222, 222, 1)")
        .verify.cssProperty("#signInPageMessage", "border-color", "rgb(235, 204, 209)");
    },
    "anonymous guest should be notified if email already exists": function (client) {
      client
        .url("http://localhost:3000/entrySignUp")
        .resizeWindow(1024, 768)
        .signUp("janicedoe@symptomatic.io", "Janiced*e123").pause(500)
        .click("#signUpPageJoinNowButton").pause(1000)
        .verify.elementPresent("#signUpPageMessage")
        .verify.containsText("#signUpPageMessage", "Email already exists. [403]");
    },
    after: function (client) {
      client
        .dropEntryUsers()
        .end();
    }
  };
  