I am creating a testing automation using Cucumber and SitePrism. I got an error when running cucumber command to start the scenario and got this error:
uninitialized constant HomePage::Navbar (NameError)
.../features/page_object/home_page.rb:4:in `<class:HomePage>'
.../features/page_object/home_page.rb:1:in `<top (required)>'
I have 3 Ruby classes located in a separate files
features/page_object/home_page.rb
class HomePage < SitePrism::Page
set_url "/"
section :navbar, Navbar, "header"
element :flash_message, ".flash__text"
element :username_link, ".c-nav-list__link.u-fg--yellow"
end
features/page_object/navbar/main.rb
class Navbar < SitePrism::Section
section :login_section, LoginSection, "#new_user_session"
element :login_button, :xpath, "//a[@id='login_link']"
end
features/page_object/navbar/login_section.rb
class LoginSection < SitePrism::Section
element :username_field, :xpath, "//input[@id='user_session_username'"
element :password_field, :xpath, "//input[@id='user_session_password'"
element :remember_me_checkbox,
:xpath, "//input[@id='user_session_remember_me']"
element :forgot_password_link, :xpath, "//a[text()='Lupa Password?']"
element :submit_button, :xpath, "//button[@type='submit']"
element :facebook_login_button, :xpath, "//a[@id='fb_login_link']"
element :gplus_login_button, :xpath, "//a[@id='gplus_login_link']"
def login(username, password)
self.username_field.set(username)
self.password_field.set(password)
self.submit_button.click
end
end
Need help so the automation could run as it should be (with no error). Any solution?
The section needs to be loaded before the page object that uses it. You can either put the sections into the same file as the page object that uses them:
features/page_object/home_page.rb
Or you can keep the files separate and add
requirestatements to make sure each class loads after the sections it depends on:features/page_object/home_page.rb
features/page_object/navbar/main.rb
features/page_object/navbar/login_section.rb