Acceptance tests

Login page should have inputs and validate submit

Login page should have input[name=subdomain], input[name=username], input[name=password] and should validate inputs on submit.

Given an bb-classic app login page
 Then page should contain  Please enter you credentials
  And page should contain element  name=subdomain
  And page should contain element  name=username
  And page should contain element  name=password
 When enter subdomain field
  And click button  Log in
 Then page should contain  Please enter all fields!
 When enter username field
  And click button  Log in
 Then page should contain  Please enter all fields!
 When enter password field
  And click button  Log in
 Then Wait Until Page Contains  First Last

My profile page should contains my info

My profile page should contains info about me.

Given an bb-classic app
 When go to my profile page
 Then my info be visible

Project navigation should work correctly

Projects navigation should change location and heading correctly.

Given an projects page
  And wait for data loading
 When click link  Name of #0
 Then location should be  ${APP_URL}/#projects/0
  And heading should be "Name of #0"
  And title should be  Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "Messages" in projectnav
 Then location should be  ${APP_URL}/#projects/0/posts
  And heading should be "Posts"
  And title should be  Posts - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  Title #0
 Then location should be  ${APP_URL}/#projects/0/posts/0
  And heading should be "Title #0"
  And title should be  Title #0 - Posts - Name of #0 - Projects - Company name #0 - Companies - BB
 When click element  css=.itemcomments
 Then location should be  ${APP_URL}/#projects/0/posts/0/comments
  And heading should be "Comments"
  And title should be  Comments - Title #0 - Posts - Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "To-Dos" in projectnav
 Then location should be  ${APP_URL}/#projects/0/todo_lists
  And heading should be "To-dos"
  And title should be  To-dos - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  css=a[href$='todo_lists/0']
 Then location should be  ${APP_URL}/#projects/0/todo_lists/0
  And heading should be "Name of #0"
  And title should be  Name of #0 - To-dos - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  Todo content #0
 Then location should be  ${APP_URL}/#projects/0/todo_lists/0/0
  And heading should be "Todo content #0"
  And title should be  Todo content #0 - Name of #0 - To-dos - Name of #0 - Projects - Company name #0 - Companies - BB
 When click element  css=.itemcomments
 Then location should be  ${APP_URL}/#projects/0/todo_lists/0/0/comments
  And heading should be "Comments"
  And title should be  Comments - Todo content #0 - Name of #0 - To-dos - Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "Calendar" in projectnav
 Then location should be  ${APP_URL}/#projects/0/calendar
  And heading should be "Calendar"
  And title should be  Calendar - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  Title #0
 Then location should be  ${APP_URL}/#projects/0/calendar/0
  And heading should be "Title #0"
  And title should be  Title #0 - Calendar - Name of #0 - Projects - Company name #0 - Companies - BB
 When click element  css=.itemcomments
 Then location should be  ${APP_URL}/#projects/0/calendar/0/comments
  And heading should be "Comments"
  And title should be  Comments - Title #0 - Calendar - Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "Time" in projectnav
 Then location should be  ${APP_URL}/#projects/0/time_entries
  And heading should be "Time"
  And title should be  Time - Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "Files" in projectnav
 Then location should be  ${APP_URL}/#projects/0/files
  And heading should be "Files"
  And title should be  Files - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  css=a[href$='files/0']
 Then location should be  ${APP_URL}/#projects/0/files/0
  And heading should be "Name of #0"
  And title should be  Name of #0 - Files - Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "Categories" in projectnav
 Then location should be  ${APP_URL}/#projects/0/categories
  And heading should be "Categories"
  And title should be  Categories - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  css=a[href$='categories/0']
 Then location should be  ${APP_URL}/#projects/0/categories/0
  And heading should be "Name of #0"
  And title should be  Name of #0 - Categories - Name of #0 - Projects - Company name #0 - Companies - BB
 When click on "People" in projectnav
 Then location should be  ${APP_URL}/#projects/0/people
  And heading should be "People"
  And title should be  People - Name of #0 - Projects - Company name #0 - Companies - BB
  And wait for data loading
 When click link  First#0 Last
 Then location should be  ${APP_URL}/#projects/0/people/0
  And heading should be "First#0 Last"
  And title should be  First#0 Last - People - Name of #0 - Projects - Company name #0 - Companies - BB

User can edit delete and sort time entries on time report page

User should edit, delete and sort time entries.

Given an time report page
 When user edit time entry
 Then page should contain edited entry
 When user delete time entry
 Then page should not contain deleted entry
 When user sort time entries
 Then page should contain sorted entries

User can add edit delete and sort time entries on project time page

User should add, edit, delete and sort time entries.

Given an project time page
 When user edit time entry
 Then page should contain edited entry
 When user delete time entry
 Then page should not contain deleted entry
 When user sort time entries
 Then page should contain sorted entries
 When user add time entry
 Then page should contain added entry

User can view todos for it and other users

User should view to-dos for it, other users and unassigned.

Given an to-dos page
 When select from list  target  First#1 Last
 Then Wait Until Page Contains  First#1 Last's to-do items across all projects
  And heading should be "First#1 Last's to-dos"
 When select from list  target  Nobody
 Then Wait Until Page Contains  Unassigned to-do items across all projects
  And heading should be "Unassigned to-dos"

User can add edit and delete todo lists and items

User should add, edit and delete todo lists and items.

Given an project todos page
 When user add todo list
 Then page should contain added todo list
 When user edit todo list
 Then page should contain edited todo list
 When user delete todo list
 Then page should not contain deleted todo list
 When click link  css=a[href$='todo_lists/0']
 When user add todo item
 Then page should contain added todo item
 When user edit todo item
 Then page should contain edited todo item
 When user delete todo item
 Then page should not contain deleted todo item

User can edit and delete calendar entries on project calendar page

User should edit and delete calendar entries.

Given an project calendar page
 When user edit calendar entry
 Then page should contain edited entry
 When user delete calendar entry
 Then page should not contain deleted entry

Generate screenshots

Generate screenshots

Sleep  1
Capture Page Screenshot  ${base_login}
Test user login
Wait for data loading
Capture Page Screenshot  ${base_projects}
Click link  Companies
Wait for data loading
Capture Page Screenshot  ${base_companies}
Click link  Name of #0
Wait for data loading
Capture Page Screenshot  ${base_company}
Click link  To-Dos
Wait for data loading
Capture Page Screenshot  ${base_todos}
Click link  Time
Wait for data loading
Capture Page Screenshot  ${base_time_report}
Click link  People
Wait for data loading
Capture Page Screenshot  ${base_people}
Click link  First#0 Last
Wait for data loading
Capture Page Screenshot  ${base_person}
Click link  First Last
Click link  My profile
Capture Page Screenshot  ${base_mypage}
Click link  Projects
Click link  Name of #0
Capture Page Screenshot  ${base_project_overview}
Click on "Messages" in projectnav
Capture Page Screenshot  ${base_project_messages}
Click link  Title #0
Wait for data loading
Capture Page Screenshot  ${base_project_message}
Click element  css=.itemcomments
Wait for data loading
Capture Page Screenshot  ${base_project_message_comments}
Click on "To-Dos" in projectnav
Capture Page Screenshot  ${base_project_todos}
Click link  css=a[href$='todo_lists/0']
Wait for data loading
Capture Page Screenshot  ${base_project_todolist}
Click link  Todo content #0
Wait for data loading
Capture Page Screenshot  ${base_project_todo}
Click element  css=.itemcomments
Wait for data loading
Capture Page Screenshot  ${base_project_todo_comments}
Click on "Calendar" in projectnav
Capture Page Screenshot  ${base_project_calendar}
Click link  Title #0
Wait for data loading
Capture Page Screenshot  ${base_project_calendar_entry}
Click element  css=.itemcomments
Wait for data loading
Capture Page Screenshot  ${base_project_calendar_entry_comments}
Click on "Time" in projectnav
Capture Page Screenshot  ${base_project_time}
Click on "Files" in projectnav
Capture Page Screenshot  ${base_project_files}
Click link  css=a[href$='files/0']
Wait for data loading
Capture Page Screenshot  ${base_project_file}
Click on "Categories" in projectnav
Capture Page Screenshot  ${base_project_categories}
Click link  css=a[href$='categories/0']
Wait for data loading
Capture Page Screenshot  ${base_project_category}
Click on "People" in projectnav
Capture Page Screenshot  ${base_project_people}
Click link  First#0 Last
Wait for data loading
Capture Page Screenshot  ${base_project_person}
Test user logout
Capture Page Screenshot  ${base_logout}