class LoginPage < BasePage
  page_url "#{ENVied.WORKSTATION_URL}" # navigate to base url, then log out/login if necessary

  # POs to verify logged-in as correct label, and/or logout if necessary
  div(:welcome, id: "welcome")
  link(:logout_link) { welcome_element.link_element(text: /Log\s?out/i) } # Don't call directly! Use #logout
  span(:header_name, class: "userName")

  # Login form
  text_field(:username, id: "edit-username")
  text_field(:password, id: "edit-password")
  button(:submit_login, id: "edit-submit")

  def login_as(user, pass, identifier)
    return if header_name? && header_name == identifier
    logout unless see_login_form?
    self.username = user
    self.password = pass
    submit_login
    expect(header_name).to eq identifier
  end

  private

  def see_login_form?
    submit_login?
  end

  def logout # Modal safe logout
    logout_link
  rescue
    refresh
    return if see_login_form?
    logout_link
  end
end
