Welcome to BB-Classic’s documentation!

Overview

Basecamp on Backbone, Twitter Bootstrap, GAE

Contents

Login page

_images/login.png

Logout page

_images/logout.png

My info page

_images/mypage.png

Projects pages

All projects

_images/projects.png

Project overview

_images/project_overview.png

Project messages

All messages
_images/project_messages.png
One message
_images/project_message.png
Message with comments
_images/project_message_comments.png

Project to-dos

All todo lists
_images/project_todos.png
One todo list
_images/project_todolist.png
One todo item
_images/project_todo.png
Todo item with comments
_images/project_todo_comments.png

Project calendar

All calendar entries
_images/project_calendar.png
One calendar entry
_images/project_calendar_entry.png
Calendar entry with comments
_images/project_calendar_entry_comments.png

Project time

_images/project_time.png

Project files

All files
_images/project_files.png
One file
_images/project_file.png

Project categories

All categories
_images/project_categories.png
One category
_images/project_category.png

Project people

All people
_images/project_people.png
One person
_images/project_person.png

Companies pages

All companies

_images/companies.png

One company

_images/company.png

Modules source code documentation

bb`s module

Main BB classic app module

class bb.BaseRequestHandler(request=None, response=None)[source]

Base Request Handler

auth_check()[source]

Check session

dev[source]

Check develompent environment

class bb.CacheInfo(parent=None, key_name=None, _app=None, _from_entity=False, **kwds)[source]

Model for the cached response.

Attributes:

  • url - Fetch URL
  • status_code - Response status
  • headers - Response headers
  • content - Response content
  • date - Date when response was added to the cache
class bb.CrossDomain(request=None, response=None)[source]

Cross Domain Handler

apiurl[source]

get api url

delete()[source]

wrapper for the function

fetch_request(method, data=None)[source]

Fetch request

Parameters:
  • url (string) – [required] request url
  • headers (dict) – [required] request headers
Returns:

request response

Raises:

Exception

Return type:

Response

fullurl[source]

get full url

get()[source]

wrapper for the function

jsondata[source]

get json data from request body

post()[source]

wrapper for the function

put()[source]

wrapper for the function

xmldata[source]

get xml data from request body

exception bb.GetSubjectException[source]

Exception on get subject_id

class bb.LoginPage(request=None, response=None)[source]

Login Page Handler

get()[source]

GET request

post()[source]

POST request

class bb.LogoutPage(request=None, response=None)[source]

Logout Page Handler

get()[source]

GET request

class bb.MainPage(request=None, response=None)[source]

Main Page Handler

get()[source]

wrapper for the function

bb.absolute_url(subdomain, relative_url='', params='', query='', fragment='')[source]

Prepare absolute url for request

Parameters:
  • subdomain (string) – [required] basecamphq subdomain
  • relative_url (string) – relative url
  • params (string) – url parameters
  • query (string) – url query
  • fragment (string) – url fragment
Returns:

absolute url for request

Return type:

string

bb.authenticated(func)[source]

decorator for check authentication

bb.convert(node)[source]

convert xml to dict

Parameters:node (string) – [required] xml node to convert
Returns:converted node
Raises:Exception
Return type:tuple(string, valuetype)
bb.convertchilds(childs)[source]

convert childs

Parameters:childs (list) – [required] list of nodes
Returns:converted childs
Raises:Exception
Return type:list
bb.convertsubnodes(childs)[source]

convert subnodes

Parameters:childs (list) – [required] list of nodes
Returns:converted nodes
Raises:Exception
Return type:dict|string
bb.dict2xml(data, tags)[source]

convert dict to xml

Parameters:
  • data (dict) – [required] dict with data to convert
  • tags (tuple) – [required] tuple of base tags
Returns:

pretty xml

Return type:

string

bb.get_headers(username, password)[source]

Prepare request headers

Parameters:
  • username (string) – [required] username
  • password (string) – [required] password
Returns:

headers dict

Return type:

dict

bb.get_subject_id(username, password, subdomain)[source]

Get ‘subject_id’ for report query - it is id of logged in user.

Parameters:
  • username (string) – [required] username
  • password (string) – [required] password
  • subdomain (string) – [required] subdomain
Returns:

id of logged in user

Raises:

GetSubjectException

Return type:

string

bb.get_xml_for_request(url)[source]

Get xml base tags for request

Parameters:url (string) – [required] url
Returns:tuple of base tags or None
Return type:tuple or None
bb.save_request(url, result)[source]

Save request

Parameters:
  • url (string) – [required] request url
  • result (Response) – [required] request response

keys`s module

keyring module

keys._db_get()[source]

get keyring from db

Returns:keyring
Return type:Keyring
class keys.Keyring(parent=None, key_name=None, _app=None, _from_entity=False, **kwds)[source]

Keyring db model

Attributes:

  • data - encoded key data
keys.current()[source]

get current key

Returns:get next key
Return type:string
keys.data()[source]

get keys

Returns:key
Return type:string
keys.delete()[source]

delete keyring

keys.generate_key()[source]

generate key

Returns:generated key pair
Return type:tuple of string
keys.generate_marker()[source]

regenerate_raw_key implementation satisfies needs

Returns:generated key
Return type:string
keys.generate_raw_key()[source]

generate raw key

Returns:generated key
Return type:string
keys.refresh()[source]

refresh keys

Returns:fresh keys
Return type:list of key pairs
keys.rotate()[source]

rotate keys

keys.setkeys(keys)[source]

set keys

Parameters:keys (list) – [required] list of key pairs

crypto`s module

crypto module

class crypto.AddkeyPage[source]

Add key handler

class crypto.BaseHandler[source]

Base crypto module handler

get()[source]

GET request

post()[source]

POST request

exception crypto.DecodeError[source]

Decode Error

class crypto.GenkeysPage[source]

Generate keys handler

crypto.decode_data(source, delimiter='\n')[source]

decode data

crypto.decrypt(source, key)[source]
crypto.encode_data(values, delimiter='\n')[source]

encode data

crypto.encrypt(source, key)[source]
crypto.main()[source]

Acceptance tests

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}

Acceptance tests keywords

go to my profile page

Go to my profile page thru the user actions menu.

Click link  First Last
Click link  My profile
Location should be  ${APP_URL}/#me

my info be visible

Check if page contains user info.

Page should contain element  link=name@domain.com
Page should contain element  link=example
Page should contain  Mobile: +000 (00) 000-0000
Page should contain  Home: +000 (00) 000-0001
Page should contain  Fax: +000 (00) 000-0002
Page should contain  Office: +000 (00) 000-0003
Page should contain  Time zone: Europe/Kiev

an projects page

Go to projects page.

Given Test user login
 Then click link  Projects

click on ${text} in ${state} state

Click on link in state block.

${text}${state}
Click on ${text} in ${state} state and wait effect

an bb-classic app

Go to application page.

Test user login

an bb-classic app login page

Go to application login page.

Reload Page Until  Location should contain  login
Page should contain  BB
Title should be  BB

enter ${name} field

Enter “test” text in input field.

${name}
Input Text  name=${name}  test

heading should be ${heading}

Check if heading contain text.

${heading}
Page should contain element  xpath=//h1[contains(text(),${heading})]

Wait for data loading

Waiting for loading data from server.

Wait Until Keyword Succeeds  10 sec  0.1 sec  Element Should Not Be Visible  css=.alert

Click on ${text} in ${state} state and wait effect

Switch state filter, wait, click on link in state block and wait.

${text}${state}
Click link  ${state}
Wait Until Keyword Succeeds  5 sec  0.1 sec  Element Should Be Visible  xpath=//*[@id="projects_${state}"]//a[contains(text(),${text})]
Click element  xpath=//*[@id="projects_${state}"]//a[contains(text(),${text})]
Wait Until Keyword Succeeds  5 sec  0.1 sec  Element Should Be Visible  xpath=//*[@id="projects_${state}"]//*[@id="projects_${state}_${text[-2]}"]//a

Click on ${text} in projectnav

Click on link in project navigation.

${text}
Click element  xpath=//*[contains(@class,"projectnav")]//a[contains(text(),${text})]
Wait for data loading

Start app

Start application.

${PRO_TEST} =  Get Environment Variable  PRO_TEST  False
Run Keyword If  '${PRO_TEST}' != 'True'  Start Process  bin/dev_appserver app --skip_sdk_update_check  ELSE  Start Process  bin/dev_appserver app --skip_sdk_update_check --auth_domain=Production

Start Browser For Test

Start browser.

Start browser
Set Window Size  1024  768

Close All Browsers and Report Status

Close browser and report test status.

Close All Browsers
Report test status

Stop app

Stop application.

Run  pkill -f dev_appserver
${out} =  Read Process Output
Append to file  app.log  ${out}
Stop All Processes

Reload Page Until

Reload page 10 times until condition will be true.

: FOR  ${try}  IN RANGE  10
\    ${status}=  Run Keyword And Ignore Error  @{condition}
\    ${raise error}=  Set Variable If  ${status}[0]=='PASS'  'False'  'True'
\    Run Keyword If  ${status}[0]=='PASS'  Exit For Loop
\    Sleep  1  Waiting for loading server
\    Go to  ${APP_URL}
Run Keyword If  ${raise error}=="True"  Fail  "${condition}"

Test user login

Login by test user.

Reload Page Until  Location should contain  login
Input Text  name=subdomain  test
Input Text  name=username  test
Input Password  name=password  test
Click button  Log in
Sleep  2  Waiting for loading app
Wait Until Page Contains  First Last  15 sec

Test user logout

Logout.

Click link  First Last
Click link  Logout

Start browser

Prepare environment and start browser.

${BROWSER} =  Get Environment Variable  ROBOT_BROWSER  Firefox
${REMOTE_URL} =  Get Environment Variable  ROBOT_REMOTE_URL  ${REMOTE_URL}
${BUILD_MANUAL} =  Evaluate  random.randint(0,10**6)  random
${BUILD_NUMBER} =  Get Environment Variable  ROBOT_BUILD_NUMBER  manual-${BUILD_MANUAL}
${DESIRED_CAPABILITIES} =  Get Environment Variable  ROBOT_DESIRED_CAPABILITIES  platform:Linux
${BUILD_TAGS} =  Evaluate  " ".join(${TEST_TAGS})
${BUILD_INFO} =  Set variable  build:${BUILD_NUMBER},name:${TEST_NAME},tags:${BUILD_TAGS},public:public
Open browser  ${APP_URL}  ${BROWSER}  remote_url=${REMOTE_URL}  desired_capabilities=${DESIRED_CAPABILITIES},${BUILD_INFO}
Run keyword unless  '${REMOTE_URL}' == ''  Run keyword and ignore error  Set session id

Set session id

Get session id and set variable.

Keyword should exist  Get session id
${SESSION_ID} =  Get session id
Set test variable  ${SESSION_ID}  ${SESSION_ID}

Report test status

Report test status to saucelabs.

Run keyword unless  '${SESSION_ID}' == ''  Report sauce status  ${SESSION_ID}  ${TEST_STATUS}

an time report page

Given an bb-classic app
 When click on "Time" link in navbar
 Then wait for data loading

an project time page

Given an bb-classic app
 When click link  Name of #0
  And click on "Time" in projectnav
 Then wait for data loading

user add time entry

user can add time entry

Wait Until Page Contains Element  css=tr.addtime button.additem
Input Text  css=tr.addtime [name="description"]  added description
Click Button  css=tr.addtime button.additem

page should contain added entry

added item should be present

Wait Until Page Contains  added description

user edit time entry

user can edit time entry

Wait Until Page Contains Element  css=tr[data-id="0"] button.edit
Click Button  css=tr[data-id="0"] button.edit
Wait Until Page Contains Element  css=tr.edittime[data-id="0"] [name="description"]
Input Text  css=tr.edittime[data-id="0"] [name="description"]  edited description
Click Button  css=tr[data-id="0"] button.save

page should contain edited entry

edited item should be present

Wait Until Page Contains  edited description

user delete time entry

user can delete time entry

Wait Until Page Contains Element  css=tr[data-id="0"] button.remove
Click Button  css=tr[data-id="0"] button.remove

page should not contain deleted entry

deleted item should not be present

Page should not contain  edited description

user sort time entries

sort time entries by date

Click Element  xpath=//table/thead/tr/th[contains(text(), "date")]

page should contain sorted entries

time entries must be sorted

Page should contain  2012-12-24
Page should not contain  2001-01-01

an to-dos page

Given an bb-classic app
 When click on "To-Dos" link in navbar
 Then wait for data loading
  And heading should be "My to-dos"

an project todos page

Given an bb-classic app
 When click link  Name of #0
  And click on "To-Dos" in projectnav
 Then wait for data loading

user add todo list

user can add todo list

Click button  Add an item
Input Text  todoName  added todo list
Input Text  todoDescription  added descrition
Click Element  css=.additem

page should contain added todo list

added item should be present

Wait Until Page Contains  added todo list
Wait Until Page Contains  added descrition

user edit todo list

user can edit todo list

Click Element  css=.todolist.edititem[data-id="30"]
Input Text  todoName30  edited todo list
Input Text  todoDescription30  edited descrition
Click Element  css=.save

page should contain edited todo list

edited item should be present

Wait Until Page Contains  edited todo list
Wait Until Page Contains  edited descrition

user delete todo list

user can delete todo list

Click Element  css=.todolist.removeitem[data-id="30"]

page should not contain deleted todolist

deleted item should not be present

Page should not contain  edited todo list
Page should not contain  edited description

user add todo item

user can add todo item

Click button  Add an item
Input Text  todoContent  added todo item
Click Element  css=.additem

page should contain added todo item

added item should be present

Wait Until Page Contains  added todo item

user edit todo item

user can edit todo item

Click Element  css=.todo.edititem[data-id="30"]
Input Text  todoContent30  edited todo item
Click Element  css=.save

page should contain edited todo item

edited item should be present

Wait Until Page Contains  edited todo item

user delete todo item

user can delete todo item

Click Element  css=.todo.removeitem[data-id="30"]

page should not contain deleted todoitem

deleted item should not be present

Page should not contain  edited todo item

an project calendar page

Given an bb-classic app
 When click link  Name of #0
  And click on "Calendar" in projectnav
 Then wait for data loading

user edit calendar entry

user can edit calendar entry

Wait Until Page Contains Element  css=.edititem[data-id="0"]
Click Element  css=.edititem[data-id="0"]
Wait Until Page Contains Element  css=.editcalendar[data-id="0"] [name="title"]
Input Text  css=.editcalendar[data-id="0"] [name="title"]  edited title
Click Button  css=[data-id="0"] button.save

page should contain edited entry

edited item should be present

Wait Until Page Contains  edited title

user delete calendar entry

user can delete calendar entry

Wait Until Page Contains Element  css=.removeitem[data-id="0"]
Click Element  css=.removeitem[data-id="0"]

page should not contain deleted entry

deleted item should not be present

Page should not contain  edited title

Keywords for tests

keywords.compare_screenshot_to_base(baseline, diff=100)[source]

Calculate the exact difference between two images.

Parameters:
  • baseline (string) – [required] base screenshot to compare
  • diff (int) – value of maximum difference

Example:

Compare screenshot to base  base_screenshot.jpg
keywords.get_session_id()[source]

Get session id

Returns:session id
Return type:string

Example:

${SESSION_ID} =  Get Session Id
keywords.report_sauce_status(job_id, test_status)[source]

Report test status to Sauce service

Parameters:
  • job_id (string) – [required] saucelabs job id
  • test_status (string) – [required] status of test
Returns:

request status code

Return type:

int or string

Example:

Report sauce status  ${SESSION_ID}  ${TEST_STATUS}

Acceptance tests settings

Library  Selenium2Library  timeout=15  implicit_wait=0.1

Resource  keywords.txt

Suite Setup  Start app

Suite Teardown  Stop app

Test Setup  Start Browser For Test

Test Teardown  Close All Browsers and Report Status


Acceptance tests variables

${PORT} =  8080
${DOMAIN} =  localhost
${APP_URL} =  http://${DOMAIN}:${PORT}
${base_path} =  docs/
${base_login} =  ${base_path}login.png
${base_logout} =  ${base_path}logout.png
${base_mypage} =  ${base_path}mypage.png
${base_projects} =  ${base_path}projects.png
${base_companies} =  ${base_path}companies.png
${base_company} =  ${base_path}company.png
${base_time_report} =  ${base_path}time_report.png
${base_todos} =  ${base_path}todos.png
${base_people} =  ${base_path}people.png
${base_person} =  ${base_path}person.png
${base_project_overview} =  ${base_path}project_overview.png
${base_project_messages} =  ${base_path}project_messages.png
${base_project_todos} =  ${base_path}project_todos.png
${base_project_calendar} =  ${base_path}project_calendar.png
${base_project_time} =  ${base_path}project_time.png
${base_project_files} =  ${base_path}project_files.png
${base_project_categories} =  ${base_path}project_categories.png
${base_project_people} =  ${base_path}project_people.png
${base_project_message} =  ${base_path}project_message.png
${base_project_todolist} =  ${base_path}project_todolist.png
${base_project_todo} =  ${base_path}project_todo.png
${base_project_calendar_entry} =  ${base_path}project_calendar_entry.png
${base_project_file} =  ${base_path}project_file.png
${base_project_category} =  ${base_path}project_category.png
${base_project_person} =  ${base_path}project_person.png
${base_project_message_comments} =  ${base_path}project_message_comments.png
${base_project_calendar_entry_comments} =  ${base_path}project_calendar_entry_comments.png
${base_project_todo_comments} =  ${base_path}project_todo_comments.png

${REMOTE_URL} =
${SESSION_ID} =


Indices and tables

Table Of Contents