commit 64df9f26ba80433566e8c464aa647bc897685912
Author: Pavel Fidranský <fidransky@outlook.com>
Date:   Fri Oct 12 00:24:08 2018 +0200

    fixed Robot Framework UI tests

diff --git a/sources/src/main/webapp/tests/change.robot b/sources/src/main/webapp/tests/change.robot
deleted file mode 100644
index 355bf2d..0000000
--- a/sources/src/main/webapp/tests/change.robot
+++ /dev/null
@@ -1,51 +0,0 @@
-*** Settings ***
-Documentation	A test suite with tests of change actions.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
-Suite Setup		Open Browser To Demo Diagram
-Test Setup		Select Radio Button		actionMove	exclude
-Test Teardown	Reload Diagram Screen
-Suite Teardown	Close Browser
-Resource		common.robot
-
-*** Variables ***
-${postponedButton}	//button[@id='postponedButton']
-
-${activeChange}	//div[@id='activeChange']
-${postponedChangeList}	//div[@id='postponedChangeListComponent']
-${excludedNodeList}	//div[@id='excludedNodeListComponent']
-
-${vertex1}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='1']
-${excludedVertex1}	//li[contains(@class, 'vertex')][@data-id='1']
-
-${changePostponeButton}	//button[contains(@class, 'postpone-button')]
-${changeActivateButton}	//button[contains(@class, 'activate-button')]
-
-${vertexIncludeButton}	//button[contains(@class, 'include-button')]
-${vertexChangeButton}	//button[contains(@class, 'change-button')]
-
-*** Test Cases ***
-Add Vertex To Change
-	Click Element	${vertex1}
-	Click Element	${excludedNodeList}${excludedVertex1}${vertexChangeButton}
-	Element Should Not Be Visible	${excludedNodeList}${excludedVertex1}
-	Element Should Be Visible	${activeChange}${excludedVertex1}
-
-Postpone And Activate Change
-	Click Element	${postponedButton}
-	Click Element	${vertex1}
-	Click Element	${excludedNodeList}${excludedVertex1}${vertexChangeButton}
-	# postpone change
-	Click Element	${activeChange}${changePostponeButton}
-	# check that change is in list of postponed
-	Element Should Not Be Visible	${activeChange}${excludedVertex1}
-	Element Should Be Visible	${postponedChangeList}${excludedVertex1}
-	# activate change
-	Click Element	${postponedChangeList}${changeActivateButton}
-	# check that change is back active
-	Element Should Not Be Visible	${postponedChangeList}${excludedVertex1}
-	Element Should Be Visible	${activeChange}${excludedVertex1}
-
-*** Keywords ***
diff --git a/sources/src/main/webapp/tests/common.robot b/sources/src/main/webapp/tests/common.robot
index e36ded6..40a0c54 100644
--- a/sources/src/main/webapp/tests/common.robot
+++ b/sources/src/main/webapp/tests/common.robot
@@ -1,67 +1,61 @@
 *** Settings ***
 Documentation	A resource file with reusable keywords and variables.
-...
-...				The system specific keywords created here form our own
-...				domain specific language. They utilize keywords provided
-...				by the imported Selenium2Library.
+
 Library			Selenium2Library
+Library			OperatingSystem
+
 
 *** Variables ***
 ${BROWSER}		Chrome
 ${DELAY}		0.1
 
-${SERVER}		http://localhost:8080/cocaex-compatibility
-${TEST DATA PATH}	C:\\Users\\fidra\\Work\\cocaex\\branches\\cocaex-jacc-integration\\test-data
+${SERVER}			http://localhost:8080/imiger/
+${TEST DATA PATH}	${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}data${/}
+
+${UPLOAD FILES URL}	${SERVER}
+${GRAPH URL}		${SERVER}/graph
 
-${BASE URL}		${SERVER}
-${UPLOAD FILES URL}	${SERVER}/upload-files
-${GRAPH URL}	${SERVER}/graph
 
 *** Keywords ***
 Open Browser To Base Path
-	Open Browser	${BASE URL}	${BROWSER}
+	Open Browser		${UPLOAD FILES URL}		${BROWSER}
 	Maximize Browser Window
 	Set Selenium Speed	${DELAY}
 
+
 Go To Upload Screen
-	Go To	${UPLOAD FILES URL}
+	Go To				${UPLOAD FILES URL}
 
-Open Demo Diagram
-	[Arguments]	${demoId}
-	${formName}=	Catenate	SEPARATOR=	demoDiagramForm	${demoId}
-	Click Element	//form[@name='${formName}']/a
-	Wait Until Element Is Not Visible	//div[@id='loader']
 
 Open Diagram
-	Choose File	//input[@id='fileUpload']	${TEST DATA PATH}${/}obcc-parking-example${/}obcc-parking-example.carpark-svc.jar
-	Click Element	//input[@type='submit'][@value='Upload']
-	Choose File	//input[@id='fileUpload']	${TEST DATA PATH}${/}obcc-parking-example${/}obcc-parking-example.dashboard-svc.jar
-	Click Element	//input[@type='submit'][@value='Upload']
-	Choose File	//input[@id='fileUpload']	${TEST DATA PATH}${/}obcc-parking-example${/}obcc-parking-example.gate.jar
-	Click Element	//input[@type='submit'][@value='Upload']
-	Choose File	//input[@id='fileUpload']	${TEST DATA PATH}${/}obcc-parking-example${/}obcc-parking-example.statsbase-svc.jar
-	Click Element	//input[@type='submit'][@value='Upload']
-	Choose File	//input[@id='fileUpload']	${TEST DATA PATH}${/}obcc-parking-example${/}obcc-parking-example.trafficlane-svc.jar
-	Click Element	//input[@type='submit'][@value='Upload']
-	Click Element	//input[@type='submit'][@value='Start visualization']
-	Wait Until Element Is Not Visible	//div[@id='loader']
+	${filePath}=		Normalize Path		${TEST DATA PATH}SPADe JSONs${/}aswi2017mutant-industries-ltd.json
+	Choose File				name:file		${filePath}
+	Select Radio Button		jsonFileFormat	spade
+	Click Element			//div[@class="upload-form"]//button[@type="submit"]
+	Wait Until Element Is Not Visible		//div[@id="loader"]
+
 
 Open Browser To Demo Diagram
 	Open Browser To Base Path
-	Open Demo Diagram	6
+	Click Element			//ul[@id="publicDiagramList"]/li[1]/a[text()="robot"]
+	Wait Until Element Is Not Visible		//div[@id="loader"]
+
 
 Open Browser To Diagram
 	Open Browser To Base Path
 	Open Diagram
 
+
 Reload Diagram Screen
 	Reload Page
-	Wait Until Element Is Not Visible	//div[@id='loader']
+	Wait Until Element Is Not Visible		//div[@id="loader"]
+
 
 Element Should Have Class
-	[Arguments]	${element}	${className}
-	Page Should Contain Element	${element}[contains(@class, '${className}')]
+	[Arguments]		${element}		${className}
+	Page Should Contain Element		${element}[contains(@class, "${className}")]
+
 
 Element Should Not Have Class
-	[Arguments]	${element}	${className}
-	Page Should Not Contain Element	${element}[contains(@class, '${className}')]
+	[Arguments]		${element}		${className}
+	Page Should Not Contain Element	${element}[contains(@class, "${className}")]
diff --git a/sources/src/main/webapp/tests/component-changing.robot b/sources/src/main/webapp/tests/component-changing.robot
deleted file mode 100644
index c4fbdcb..0000000
--- a/sources/src/main/webapp/tests/component-changing.robot
+++ /dev/null
@@ -1,76 +0,0 @@
-*** Settings ***
-Documentation	A test suite with tests of component changing functionality.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
-Suite Setup		Open Browser To Diagram
-Test Setup		Exclude Vertex
-Test Teardown	Reload Diagram Screen
-Suite Teardown	Close Browser
-Resource		common.robot
-
-*** Variables ***
-${graphVersion}	//span[@class='graph-version']
-
-${activeChange}	//div[@id='activeChange']
-${excludedNodeList}	//div[@id='excludedNodeListComponent']
-
-${changeTriggerButton}	//button[contains(@class, 'trigger-change-button')]
-${changeLoadDetailsButton}	//button[contains(@class, 'load-details-button')]
-${changeAcceptButton}	//button[contains(@class, 'accept-button')]
-${changeRevokeButton}	//button[contains(@class, 'revoke-button')]
-
-${vertex1}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='1']
-${excludedVertex1}	//li[contains(@class, 'vertex')][@data-id='1']
-
-${vertexChangeButton}	//button[contains(@class, 'change-button')]
-
-*** Test Cases ***
-Trigger Simple Change
-	# trigger change
-	Click Element	${activeChange}${changeTriggerButton}
-	Wait Until Element Is Not Visible	//div[@id='loader']
-	# check that valid components were retrieved
-	Element Should Contain	${activeChange}//ul[@class='node-list'][2]	obcc-parking-example.carpark
-
-Trigger Change Including Not Found
-	# trigger change
-	Select Checkbox	name:includeNotFoundClasses
-	Click Element	${activeChange}${changeTriggerButton}
-	Wait Until Element Is Not Visible	//div[@id='loader']
-	# check that valid components were retrieved
-	Element Should Contain	${activeChange}//ul[@class='node-list'][2]	slf4j.api
-	Element Should Contain	${activeChange}//ul[@class='node-list'][2]	obcc-parking-example.carpark
-	Element Should Contain	${activeChange}//ul[@class='node-list'][2]	org.osgi.framework
-
-Revoke Simple Change
-	# trigger change
-	Click Element	${activeChange}${changeTriggerButton}
-	Wait Until Element Is Not Visible	//div[@id='loader']
-	# revoke change
-	Click Element	${changeRevokeButton}
-	Wait Until Element Is Not Visible	//div[@id='loader']
-	# check that list of proposals is empty
-	Xpath Should Match X Times	${activeChange}//ul[@class='node-list'][2]/li	0
-
-Accept Simple Change
-	# trigger change
-	Click Element	${activeChange}${changeTriggerButton}
-	Wait Until Element Is Not Visible	//div[@id='loader']
-	Select Checkbox	name:replaceComponents
-	# accept change
-	Click Element	${changeAcceptButton}
-	Wait Until Element Is Not Visible	//div[@id='loader']
-	# check name of the replacing component
-	${name}=	Get Element Attribute	${vertex1}	data-name
-	Should Be Equal As Strings	${name}	obcc-parking-example.carpark.jar
-	# check graph version
-	${version}=		Get Text	${graphVersion}
-	Should Be Equal As Strings		${version}	graph version: 2
-
-*** Keywords ***
-Exclude Vertex
-	Select Radio Button		actionMove	exclude
-	Click Element	${vertex1}
-	Click Element	${excludedNodeList}${excludedVertex1}${vertexChangeButton}
diff --git a/sources/src/main/webapp/tests/edge.robot b/sources/src/main/webapp/tests/edge.robot
index f1349fe..f37a11f 100644
--- a/sources/src/main/webapp/tests/edge.robot
+++ b/sources/src/main/webapp/tests/edge.robot
@@ -1,50 +1,42 @@
 *** Settings ***
 Documentation	A test suite with tests of edge actions.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
-Test Teardown	Reload Diagram Screen
 Suite Teardown	Close Browser
+Test Teardown	Reload Diagram Screen
+
 Resource		common.robot
 
+
 *** Variables ***
-${edge1}	//*[name()='g'][contains(@class, 'edge')][@data-id='1']
+${edge38}		//*[name()="g"][contains(@class, "edge")][@data-id="38"]
 
-${vertex1}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='1']
-${vertex2}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='2']
-${vertex3}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='3']
-${vertex4}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='4']
-${vertex5}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='5']
-${vertex6}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='6']
+${vertex4}		//*[name()="svg"][contains(@class, "vertex")][@data-id="4"]
+${vertex2014}	//*[name()="svg"][contains(@class, "vertex")][@data-id="2014"]
 
-${edgeLollipop}	/*[name()='g'][contains(@class, 'lollipop')]
+${edgeArrow}	/*[name()="g"][contains(@class, "arrow")]
+
+${edgePopover}	//div[contains(@class, "edge-popover")]
 
-${edgePopover}	//div[contains(@class, 'edge-popover')]
 
 *** Test Cases ***
 Highlight Edge
-	Click Element	${edge1}${edgeLollipop}
+	Click Element	${edge38}${edgeArrow}
 	# check that vertices not connected to the edge are not highlighted
-	Element Should Have Class	${edge1}	edge--highlighted
-	Element Should Have Class	${vertex1}	node--highlighted
-	Element Should Not Have Class	${vertex2}	node--highlighted
-	Element Should Not Have Class	${vertex3}	node--highlighted
-	Element Should Not Have Class	${vertex4}	node--highlighted
-	Element Should Not Have Class	${vertex5}	node--highlighted
-	Element Should Have Class	${vertex6}	node--highlighted
+	Element Should Have Class	${edge38}		edge--highlighted
+	Element Should Have Class	${vertex4}		node--highlighted
+	Element Should Have Class	${vertex2014}	node--highlighted
+
 
 Hide Edge Popover By Moving Mouse Out
-	Click Element	${edge1}${edgeLollipop}
-	Mouse Out	${edgePopover}
+	Click Element		${edge38}${edgeArrow}
+	Mouse Out			${edgePopover}
 	Element Should Not Be Visible	${edgePopover}
-	Element Should Have Class  ${edgePopover}  hidden
+	Element Should Have Class		${edgePopover}	hidden
+
 
 Hide Edge Popover By Clicking Elsewhere
-	Click Element	${edge1}${edgeLollipop}
-	Click Element	//body
+	Click Element		${edge38}${edgeArrow}
+	Click Element		//body
 	Element Should Not Be Visible	${edgePopover}
-	Element Should Have Class  ${edgePopover}  hidden
-
-*** Keywords ***
+	Element Should Have Class		${edgePopover}	hidden
diff --git a/sources/src/main/webapp/tests/graph.robot b/sources/src/main/webapp/tests/graph.robot
index 9d82a2a..91b790b 100644
--- a/sources/src/main/webapp/tests/graph.robot
+++ b/sources/src/main/webapp/tests/graph.robot
@@ -1,49 +1,36 @@
 *** Settings ***
 Documentation	A test suite with tests of graph construction.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Diagram
 Suite Teardown	Close Browser
+
 Resource		common.robot
 
+
 *** Variables ***
-${graphWrapper}	//*[name()='g'][@id='graph']
-${unconnectedNodeList}	//div[@id='unconnectedNodeListComponent']
+${graphWrapper}			//*[name()="g"][@id="graph"]
+${unconnectedNodeList}	//div[@id="unconnectedNodeListComponent"]
+${componentCounter}		//span[@class="component-counter"]
 
-${componentCounter}	//span[@class='component-counter']
-${graphVersion}	//span[@class='graph-version']
+${vertex2}				//*[name()="svg"][contains(@class, "vertex")][@data-id="2"]
+${vertex4}				//*[name()="svg"][contains(@class, "vertex")][@data-id="4"]
+${vertex291}			//*[name()="svg"][contains(@class, "vertex")][@data-id="291"]
+${vertex303}			//*[name()="svg"][contains(@class, "vertex")][@data-id="303"]
 
-${vertex1}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='1']
-${vertex2}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='2']
-${vertex3}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='3']
-${vertex4}	//li[@data-id='4']
-${vertex5}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='5']
-${vertex6}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='6']
+${vertex0}				//*[name()="li"][contains(@class, "vertex")][@data-id="0"]
+${vertex6}				//*[name()="li"][contains(@class, "vertex")][@data-id="6"]
 
 *** Test Cases ***
 General
-	Title Should Be		Visualization of large component diagrams
+	Title Should Be			IMiGEr
 	# check component counter
-	${count}=		Get Text	${componentCounter}
-	Should Be Equal As Strings		${count}	loaded components: 6
-	# check graph version
-	${version}=		Get Text	${graphVersion}
-	Should Be Equal As Strings		${version}	graph version: 1
-	# check vertices that should (not) be contained in viewport
-	Page Should Contain Element		${graphWrapper}${vertex1}
+	${count}=	Get Text	${componentCounter}
+	Should Be Equal As Strings		${count}	loaded components: 19
+	# check vertices that should be contained in viewport
 	Page Should Contain Element		${graphWrapper}${vertex2}
-	Page Should Contain Element		${graphWrapper}${vertex3}
-	Page Should Not Contain Element	${graphWrapper}${vertex4}
-	Page Should Contain Element		${graphWrapper}${vertex5}
-	Page Should Contain Element		${graphWrapper}${vertex6}
-	# check vertices that should (not) be contained in unconnected node list
-	Page Should Not Contain Element	${unconnectedNodeList}${vertex1}
-	Page Should Not Contain Element	${unconnectedNodeList}${vertex2}
-	Page Should Not Contain Element	${unconnectedNodeList}${vertex3}
-	Page Should Contain Element		${unconnectedNodeList}${vertex4}
-	Page Should Not Contain Element	${unconnectedNodeList}${vertex5}
-	Page Should Not Contain Element	${unconnectedNodeList}${vertex6}
-
-*** Keywords ***
+	Page Should Contain Element		${graphWrapper}${vertex4}
+	Page Should Contain Element		${graphWrapper}${vertex291}
+	Page Should Contain Element		${graphWrapper}${vertex303}
+	# check vertices that should be contained in unconnected node list
+	Page Should Contain Element		${unconnectedNodeList}${vertex0}
+	Page Should Contain Element		${unconnectedNodeList}${vertex6}
diff --git a/sources/src/main/webapp/tests/group.robot b/sources/src/main/webapp/tests/group.robot
index 02e3dc4..6793224 100644
--- a/sources/src/main/webapp/tests/group.robot
+++ b/sources/src/main/webapp/tests/group.robot
@@ -1,96 +1,79 @@
 *** Settings ***
 Documentation	A test suite with tests of vertex grouping functionality.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
-Test Setup		Click Element	//button[@id='vertexToGroup']
-Test Teardown	Reload Diagram Screen
 Suite Teardown	Close Browser
+Test Setup		Click Element	//button[@id="vertexToGroup"]
+Test Teardown	Reload Diagram Screen
+
 Resource		common.robot
 
+
 *** Variables ***
-${zoomInButton}	//button[@id='zoomIn']
+${zoomInButton}		//button[@id="zoomIn"]
+
+${vertex2014}		//*[name()="svg"][contains(@class, "vertex")][@data-id="2014"]
+${vertex2019}		//*[name()="svg"][contains(@class, "vertex")][@data-id="2019"]
 
-${vertex5}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='5']
-${vertex6}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='6']
+${group1}			//*[name()="svg"][contains(@class, "group")][@data-id="1"]
 
-${group1}	//*[name()='svg'][contains(@class, 'group')][@data-id='1']
+${groupName}			/*[name()="text"][@class="group-name"]
+${groupDissolveButton}	/*[name()="g"][contains(@class, "dissolve-button")]
 
-${groupName}	/*[name()='text'][@class='group-name']
-${groupVertexList}	/*[name()='g'][@class='group-vertex-list']
-${groupExpandButton}	/*[name()='g'][contains(@class, 'expand-button')]
-${groupCompressButton}	/*[name()='g'][contains(@class, 'compress-button')]
-${groupDissolveButton}	/*[name()='g'][contains(@class, 'dissolve-button')]
+${vertexContextMenu}	//div[contains(@class, "context-menu")]
 
-${vertexContextMenu}	//div[contains(@class, 'context-menu')]
 
 *** Test Cases ***
 Mouse Down Group
-	Mouse Down	${group1}
-	Element Should Have Class	${group1}	node--dragged
-	Mouse Up	${group1}
+	Mouse Down		${group1}
+	Element Should Have Class		${group1}	node--dragged
+	Mouse Up		${group1}
 	Element Should Not Have Class	${group1}	node--dragged
 
+
 Drag Group
 	# zoom in to 100% to get correct coordinates
 	Click Element	${zoomInButton}
 	Click Element	${zoomInButton}
 	# get old group coordinates
 	${oldX}=	Get Element Attribute	${group1}	x
-	${oldX}=	Convert To Number	${oldX}	2
+	${oldX}=	Convert To Number		${oldX}	2
 	${oldY}=	Get Element Attribute	${group1}	y
-	${oldY}=	Convert To Number	${oldY}	2
+	${oldY}=	Convert To Number		${oldY}	2
 	# move vertex by 10 pixels in both directions
-	Drag And Drop By Offset		${group1}	10	10
+	Drag And Drop By Offset				${group1}	10	10
 	# get new group coordinates
 	${newX}=	Get Element Attribute	${group1}	x
-	${newX}=	Convert To Number	${newX}	2
+	${newX}=	Convert To Number		${newX}	2
 	${newY}=	Get Element Attribute	${group1}	y
-	${newY}=	Convert To Number	${newY}	2
+	${newY}=	Convert To Number		${newY}	2
 	# check that offset matches
-	Should Be Equal As Numbers	${oldX + 10}	${newX}
-	Should Be Equal As Numbers	${oldY + 10}	${newY}
+	Should Be Equal As Numbers			${oldX + 10}	${newX}
+	Should Be Equal As Numbers			${oldY + 10}	${newY}
+
 
 Rename Group
-	Element Should Contain	${group1}${groupName}	Group 1
+	Element Should Contain			${group1}${groupName}	File
 	# trigger group rename prompt
-	Click Element	${group1}/*[name()='text']
-	Input Text Into Alert	Lorem Ipsum
+	Click Element					${group1}/*[name()="text"]
+	Input Text Into Alert			Lorem Ipsum
 	# check that group name was changed
-	Element Should Contain	${group1}${groupName}	Lorem Ipsum
-
-Expand And Compress Group
-	# expand group
-	Click Element	${group1}${groupExpandButton}
-	# check that group is expanded
-	Element Should Have Class	${group1}	group--expanded
-	Element Should Not Be Visible	${group1}${groupExpandButton}
-	Element Should Be Visible	${group1}${groupCompressButton}
-	Element Should Be Visible	${group1}${groupVertexList}
-	# compress group
-	Click Element	${group1}${groupCompressButton}
-	# check that group is back to normal
-	Element Should Not Have Class	${group1}	group--expanded
-	Element Should Be Visible	${group1}${groupExpandButton}
-	Element Should Not Be Visible	${group1}${groupCompressButton}
-	Element Should Not Be Visible	${group1}${groupVertexList}
+	Element Should Contain			${group1}${groupName}	Lorem Ipsum
+
 
 Dissolve Group
-	Click Element	${group1}${groupDissolveButton}
+	Click Element					${group1}${groupDissolveButton}
 	# check that group is not visible while its vertex is
 	Element Should Not Be Visible	${group1}
-	Element Should Be Visible	${vertex6}
+	Element Should Be Visible		${vertex2019}
+
 
 Add Vertex To Group
 	# open vertex context menu
-	Open Context Menu	${vertex5}
-	Element Should Be Visible	${vertexContextMenu}
+	Open Context Menu				${vertex2014}
+	Element Should Be Visible		${vertexContextMenu}
 	# add vertex to group
-	Click Element	${vertexContextMenu}//li[1]
+	Click Element					${vertexContextMenu}//li[1]
 	# check that neither vertex nor its context menu is visible
 	Element Should Not Be Visible	${vertexContextMenu}
-	Element Should Not Be Visible	${vertex5}
-
-*** Keywords ***
+	Element Should Not Be Visible	${vertex2014}
diff --git a/sources/src/main/webapp/tests/navbar.robot b/sources/src/main/webapp/tests/navbar.robot
index c4c962c..2a4c40e 100644
--- a/sources/src/main/webapp/tests/navbar.robot
+++ b/sources/src/main/webapp/tests/navbar.robot
@@ -1,44 +1,44 @@
 *** Settings ***
 Documentation	A test suite with tests of navbar actions.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
-Test Teardown	Reload Diagram Screen
 Suite Teardown	Close Browser
+Test Teardown	Reload Diagram Screen
+
 Resource		common.robot
 
+
 *** Variables ***
-${navbar}	//div[@id='navigation']
-${graphWrapper}	//*[name()='g'][@id='graph']
+${navbar}				//div[@id="navigation"]
+${graphWrapper}			//*[name()="g"][@id="graph"]
 
-${mostEdgeButton}	//button[@id='mostEdge']
-${vertexToGroupButton}	//button[@id='vertexToGroup']
-${backToUploadButton}	//a[@id='view_back_to_upload']
+${mostEdgeButton}		//button[@id="mostEdge"]
+${vertexToGroupButton}	//button[@id="vertexToGroup"]
+${backToUploadButton}	//a[@id="view_back_to_upload"]
 
-${excludedNodeList}	//div[@id='excludedNodeListComponent']
+${excludedNodeList}		//div[@id="excludedNodeListComponent"]
+
+${group1}				//*[name()="svg"][contains(@class, "group")][@data-id="1"]
+${vertex2044}			//*[name()="svg"][contains(@class, "vertex")][@data-id="2044"]
+${excludedVertex2044}	//li[contains(@class, "vertex")][@data-id="2044"]
 
-${group1}	//*[name()='svg'][contains(@class, 'group')][@data-id='1']
-${vertex6}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='6']
-${excludedVertex6}	//li[contains(@class, 'vertex')][@data-id='6']
 
 *** Test Cases ***
 Exclude Vertex With Most Edges
-	Click Element	${mostEdgeButton}
+	Click Element		${mostEdgeButton}
 	# vertex with most edges should be excluded
-	Page Should Not Contain Element	${graphWrapper}${vertex6}
-	Page Should Contain Element		${excludedNodeList}${excludedVertex6}
+	Page Should Not Contain Element	${graphWrapper}${vertex2044}
+	Page Should Contain Element		${excludedNodeList}${excludedVertex2044}
+
 
 Exclude Vertex With Most Edges To Group
-	Click Element	${vertexToGroupButton}
+	Click Element		${vertexToGroupButton}
 	# vertex with most edges should be in a group
-	Page Should Not Contain Element	${graphWrapper}${vertex6}
+	Page Should Not Contain Element	${graphWrapper}${vertex2044}
 	Page Should Contain Element		${graphWrapper}${group1}
 
-Back To Upload
-	Click Element	${backToUploadButton}
-	${location}=	Get Location
-	Should Be Equal As Strings	${location}	${UPLOAD FILES URL}
 
-*** Keywords ***
+Back To Upload
+	Click Element		${backToUploadButton}
+	${location}=		Get Location
+	Should Be Equal As Strings		${location}		${UPLOAD FILES URL}
diff --git a/sources/src/main/webapp/tests/node-excluding.robot b/sources/src/main/webapp/tests/node-excluding.robot
index 49d1bb4..e7b6c74 100644
--- a/sources/src/main/webapp/tests/node-excluding.robot
+++ b/sources/src/main/webapp/tests/node-excluding.robot
@@ -1,49 +1,49 @@
 *** Settings ***
 Documentation	A test suite with tests of node excluding functionality.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
+Suite Teardown	Close Browser
 Test Setup		Select Radio Button		actionMove	exclude
 Test Teardown	Reload Diagram Screen
-Suite Teardown	Close Browser
+
 Resource		common.robot
 
+
 *** Variables ***
-${vertexToGroupButton}	//button[@id='vertexToGroup']
+${vertexToGroupButton}	//button[@id="vertexToGroup"]
+
+${excludedNodeList}		//div[@id="excludedNodeListComponent"]
 
-${excludedNodeList}	//div[@id='excludedNodeListComponent']
+${includeAllButton}		//button[contains(@class, "include-all-button")]
 
-${includeAllButton}	//button[contains(@class, 'include-all-button')]
+${vertex2013}			//*[name()="svg"][contains(@class, "vertex")][@data-id="2013"]
+${excludedVertex2013}	//li[contains(@class, "vertex")][@data-id="2013"]
+${vertex2014}			//*[name()="svg"][contains(@class, "vertex")][@data-id="2014"]
+${excludedVertex2014}	//li[contains(@class, "vertex")][@data-id="2014"]
 
-${vertex5}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='5']
-${excludedVertex5}	//li[contains(@class, 'vertex')][@data-id='5']
-${vertex6}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='6']
-${excludedVertex6}	//li[contains(@class, 'vertex')][@data-id='6']
+${group1}				//*[name()="svg"][contains(@class, "group")][@data-id="1"]
+${excludedGroup1}		//li[contains(@class, "group")][@data-id="1"]
 
-${group1}	//*[name()='svg'][contains(@class, 'group')][@data-id='1']
-${excludedGroup1}	//li[contains(@class, 'group')][@data-id='1']
 
 *** Test Cases ***
 Exclude Vertex
-	Click Element	${vertex6}
-	Element Should Not Be Visible	${vertex6}
-	Element Should Be Visible	${excludedNodeList}${excludedVertex6}
+	Click Element		${vertex2014}
+	Element Should Not Be Visible	${vertex2014}
+	Element Should Be Visible		${excludedNodeList}${excludedVertex2014}
+
 
 Exclude Group
-	Click Element	${vertexToGroupButton}
-	Click Element	${group1}
+	Click Element		${vertexToGroupButton}
+	Click Element		${group1}
 	Element Should Not Be Visible	${group1}
-	Element Should Be Visible	${excludedNodeList}${excludedGroup1}
+	Element Should Be Visible		${excludedNodeList}${excludedGroup1}
+
 
 Include All Excluded Nodes
-	Click Element	${vertex5}
-	Click Element	${vertex6}
-	Click Element	${excludedNodeList}${includeAllButton}
-	Element Should Be Visible	${vertex5}
-	Element Should Not Be Visible	${excludedNodeList}${excludedVertex5}
-	Element Should Be Visible	${vertex6}
-	Element Should Not Be Visible	${excludedNodeList}${excludedVertex6}
-
-*** Keywords ***
+	Click Element		${vertex2013}
+	Click Element		${vertex2014}
+	Click Element		${excludedNodeList}${includeAllButton}
+	Element Should Be Visible		${vertex2013}
+	Element Should Not Be Visible	${excludedNodeList}${excludedVertex2013}
+	Element Should Be Visible		${vertex2014}
+	Element Should Not Be Visible	${excludedNodeList}${excludedVertex2014}
diff --git a/sources/src/main/webapp/tests/search.robot b/sources/src/main/webapp/tests/search.robot
index 362cec5..973f775 100644
--- a/sources/src/main/webapp/tests/search.robot
+++ b/sources/src/main/webapp/tests/search.robot
@@ -1,81 +1,66 @@
 *** Settings ***
 Documentation	A test suite with tests of node search.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
-Test Teardown	Reload Diagram Screen
 Suite Teardown	Close Browser
+Test Teardown	Reload Diagram Screen
+
 Resource		common.robot
 
+
 *** Variables ***
-${searchInputField}	//input[@id='searchText']
-${searchButton}		//button[@id='search']
-${searchCounter}	//span[@id='countOfFound']
+${searchInputField}	//input[@id="searchText"]
+${searchButton}		//button[@id="search"]
+${searchCounter}	//span[@id="countOfFound"]
+
+${vertex2015}		//*[name()="svg"][@data-id="2015"]
+${vertex2039}		//*[name()="svg"][@data-id="2039"]
 
-${vertex1}		//*[name()='svg'][@data-id='1']
-${vertex2}		//*[name()='svg'][@data-id='2']
-${vertex3}		//*[name()='svg'][@data-id='3']
-${vertex4}		//*[name()='svg'][@data-id='4']
-${vertex5}		//*[name()='svg'][@data-id='5']
-${vertex6}		//*[name()='svg'][@data-id='6']
 
 *** Test Cases ***
 Search vertex using enter key
-	Input Text			${searchInputField}	obcc-parking-example
+	Input Text			${searchInputField}		Product
 	# press enter
-	Press Key			${searchInputField}	\\13
+	Press Key			${searchInputField}		\\13
 	# check counter of found nodes
-	${found}=	Get Text	${searchCounter}
-	Should Be Equal As Strings	${found}	4
-	# check CSS classes of (not) found nodes
-	Element Should Have Class	${vertex1}	vertex--found
-	Element Should Have Class	${vertex2}	vertex--found
-	Element Should Have Class	${vertex3}	vertex--found
-	Element Should Have Class	${vertex5}	vertex--found
-	Element Should Not Have Class	${vertex6}	vertex--found
+	${found}=		Get Text	${searchCounter}
+	Should Be Equal As Strings	${found}		2
+	# check CSS classes of found nodes
+	Element Should Have Class	${vertex2015}	node--found
+	Element Should Have Class	${vertex2039}	node--found
+
 
 Search vertex using button
-	Input Text			${searchInputField}	obcc-parking-example
+	Input Text			${searchInputField}		Product
 	Click Element		${searchButton}
 	# check counter of found nodes
-	${found}=	Get Text	${searchCounter}
-	Should Be Equal As Strings	${found}	4
-	# check CSS classes of (not) found nodes
-	Element Should Have Class	${vertex1}	vertex--found
-	Element Should Have Class	${vertex2}	vertex--found
-	Element Should Have Class	${vertex3}	vertex--found
-	Element Should Have Class	${vertex5}	vertex--found
-	Element Should Not Have Class	${vertex6}	vertex--found
+	${found}=	Get Text		${searchCounter}
+	Should Be Equal As Strings	${found}		2
+	# check CSS classes of found nodes
+	Element Should Have Class	${vertex2015}	node--found
+	Element Should Have Class	${vertex2039}	node--found
+
 
 Reset search using escape key
-	Input Text			${searchInputField}	obcc-parking-example
-	Click Element		${searchButton}
+	Input Text				${searchInputField}	Product
+	Click Element			${searchButton}
 	# press escape
-	Press Key			${searchInputField}	\\27
+	Press Key				${searchInputField}	\\27
 	# check counter of found nodes
 	${found}=	Get Text	${searchCounter}
-	Should Be Equal As Strings	${found}	0
+	Should Be Equal As Strings	${found}		0
 	# check that no nodes are found
-	Element Should Not Have Class	${vertex1}	vertex--found
-	Element Should Not Have Class	${vertex2}	vertex--found
-	Element Should Not Have Class	${vertex3}	vertex--found
-	Element Should Not Have Class	${vertex5}	vertex--found
-	Element Should Not Have Class	${vertex6}	vertex--found
+	Element Should Not Have Class	${vertex2015}	node--found
+	Element Should Not Have Class	${vertex2039}	node--found
+
 
 Reset search using counter click
-	Input Text			${searchInputField}	obcc-parking-example
-	Click Element		${searchButton}
-	Click Element		${searchCounter}
+	Input Text				${searchInputField}	Product
+	Click Element			${searchButton}
+	Click Element			${searchCounter}
 	# check counter of found nodes
 	${found}=	Get Text	${searchCounter}
-	Should Be Equal As Strings	${found}	0
+	Should Be Equal As Strings	${found}		0
 	# check that no nodes are found
-	Element Should Not Have Class	${vertex1}	vertex--found
-	Element Should Not Have Class	${vertex2}	vertex--found
-	Element Should Not Have Class	${vertex3}	vertex--found
-	Element Should Not Have Class	${vertex5}	vertex--found
-	Element Should Not Have Class	${vertex6}	vertex--found
-
-*** Keywords ***
+	Element Should Not Have Class	${vertex2015}	vertex--found
+	Element Should Not Have Class	${vertex2039}	vertex--found
diff --git a/sources/src/main/webapp/tests/sidebar.robot b/sources/src/main/webapp/tests/sidebar.robot
index 9f09459..5cdf51a 100644
--- a/sources/src/main/webapp/tests/sidebar.robot
+++ b/sources/src/main/webapp/tests/sidebar.robot
@@ -1,64 +1,44 @@
 *** Settings ***
 Documentation	A test suite with tests of sidebar panels toggling.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
 Suite Teardown	Close Browser
+
 Resource		common.robot
 
+
 *** Variables ***
-${sidebar}	//div[@id='sidebar']
+${sidebar}				//div[@id="sidebar"]
 
-${changeButton}	//button[@id='changeButton']
-${postponedButton}	//button[@id='postponedButton']
-${unconnectedButton}	//button[@id='unconnectedButton']
-${missingButton}	//button[@id='missingButton']
+${unconnectedButton}	//button[@id="unconnectedButton"]
+${unconnectedNodeList}	//div[@id="unconnectedNodeListComponent"]
 
-${activeChange}	//div[@id='activeChange']
-${postponedChangeList}	//div[@id='postponedChangeListComponent']
-${unconnectedNodeList}	//div[@id='unconnectedNodeListComponent']
-${missingClassList}	//div[@id='missingClassListComponent']
+${includeAllButton}		//button[contains(@class, "include-all-button")]
+${excludeAllButton}		//button[contains(@class, "exclude-all-button")]
 
-${includeAllButton}	//button[contains(@class, 'include-all-button')]
-${excludeAllButton}	//button[contains(@class, 'exclude-all-button')]
+${vertex0}				//*[name()="svg"][contains(@class, "vertex")][@data-id="0"]
+${excludedVertex0}		//li[contains(@class, "vertex")][@data-id="0"]
 
-${vertex4}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='4']
-${excludedVertex4}	//li[contains(@class, 'vertex')][@data-id='4']
 
 *** Test Cases ***
-Toggle Active Change
-	Element Should Not Have Class	${activeChange}	hidden
-	Click Element	${changeButton}
-	Element Should Have Class	${activeChange}	hidden
-
-Toggle Postponed Changes
-	Element Should Have Class	${postponedChangeList}	hidden
-	Click Element	${postponedButton}
-	Element Should Not Have Class	${postponedChangeList}	hidden
-
 Toggle Unconnected Nodes
-	Element Should Have Class	${unconnectedNodeList}	hidden
-	Click Element	${unconnectedButton}
+	Element Should Have Class		${unconnectedNodeList}	hidden
+	Click Element					${unconnectedButton}
 	Element Should Not Have Class	${unconnectedNodeList}	hidden
+	Click Element					${unconnectedButton}
+	Element Should Have Class		${unconnectedNodeList}	hidden
 
-Toggle Missing Classes
-	Element Should Have Class	${missingClassList}	hidden
-	Click Element	${missingButton}
-	Element Should Not Have Class	${missingClassList}	hidden
 
 Include And Exclude All Unconnected Vertices
-	Click Element	${unconnectedButton}
-	Element Should Not Be Visible	${vertex4}
-	Element Should Be Visible	${unconnectedNodeList}${excludedVertex4}
+	Click Element					${unconnectedButton}
+	Element Should Not Be Visible	${vertex0}
+	Element Should Be Visible		${unconnectedNodeList}${excludedVertex0}
 	# include all unconnected vertices
-	Click Element	${unconnectedNodeList}${includeAllButton}
-	Element Should Be Visible	${vertex4}
-	Element Should Not Be Visible	${unconnectedNodeList}${excludedVertex4}
+	Click Element					${unconnectedNodeList}${includeAllButton}
+	Element Should Be Visible		${vertex0}
+	Element Should Not Be Visible	${unconnectedNodeList}${excludedVertex0}
 	# exclude all unconnected vertices
-	Click Element	${unconnectedNodeList}${excludeAllButton}
-	Element Should Not Be Visible	${vertex4}
-	Element Should Be Visible	${unconnectedNodeList}${excludedVertex4}
-
-*** Keywords ***
+	Click Element					${unconnectedNodeList}${excludeAllButton}
+	Element Should Not Be Visible	${vertex0}
+	Element Should Be Visible		${unconnectedNodeList}${excludedVertex0}
+	Click Element					${unconnectedButton}
diff --git a/sources/src/main/webapp/tests/vertex.robot b/sources/src/main/webapp/tests/vertex.robot
index c5571d2..19dc7c5 100644
--- a/sources/src/main/webapp/tests/vertex.robot
+++ b/sources/src/main/webapp/tests/vertex.robot
@@ -1,86 +1,83 @@
 *** Settings ***
 Documentation	A test suite with tests of vertex actions.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Suite Setup		Open Browser To Demo Diagram
 Suite Teardown	Close Browser
+
 Resource		common.robot
 
+
 *** Variables ***
-${zoomInButton}	//button[@id='zoomIn']
+${zoomInButton}			//button[@id="zoomIn"]
 
-${vertex1}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='1']
-${vertex2}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='2']
-${vertex3}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='3']
-${vertex4}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='4']
-${vertex5}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='5']
-${vertex6}	//*[name()='svg'][contains(@class, 'vertex')][@data-id='6']
+${vertex9}				//*[name()="svg"][contains(@class, "vertex")][@data-id="9"]
+${vertex58}				//*[name()="svg"][contains(@class, "vertex")][@data-id="58"]
+${vertex2014}			//*[name()="svg"][contains(@class, "vertex")][@data-id="2014"]
 
-${vertexInterface}	/*[name()='g'][@class='interface']
+${vertexArchetypeIcon}	/*[name()="g"][@class="archetype-icon"]
+
+${vertexPopover}		//div[contains(@class, "vertex-popover")]
 
-${vertexPopover}	//div[contains(@class, 'vertex-popover')]
 
 *** Test Cases ***
 Highlight Vertex
-	Click Element	${vertex3}
+	Click Element					${vertex58}
 	# check that other vertices are either highlighted or dimmed
-	Element Should Have Class	${vertex1}	node--highlighted-provided
-	Element Should Have Class	${vertex2}	node--dimmed
-	Element Should Have Class	${vertex3}	node--highlighted
-	Element Should Have Class	${vertex5}	node--dimmed
-	Element Should Have Class	${vertex6}	node--highlighted-required
+	Element Should Have Class		${vertex9}		node--highlighted-required
+	Element Should Have Class		${vertex58}		node--highlighted
+	Element Should Have Class		${vertex2014}	node--dimmed
 	# unhighlight
-	Click Element	${vertex3}
+	Click Element					${vertex58}
 	# check that other vertices are back to normal
-	Element Should Not Have Class	${vertex1}	node--highlighted-provided
-	Element Should Not Have Class	${vertex2}	node--dimmed
-	Element Should Not Have Class	${vertex3}	node--highlighted
-	Element Should Not Have Class	${vertex5}	node--dimmed
-	Element Should Not Have Class	${vertex6}	node--highlighted-required
+	Element Should Not Have Class	${vertex9}		node--highlighted-required
+	Element Should Not Have Class	${vertex58}		node--highlighted
+	Element Should Not Have Class	${vertex2014}	node--dimmed
+
 
 Mouse Down Vertex
-	Mouse Down	${vertex3}
-	Element Should Have Class	${vertex3}	node--dragged
-	Mouse Up	${vertex3}
-	Element Should Not Have Class	${vertex3}	node--dragged
+	Mouse Down						${vertex2014}
+	Element Should Have Class		${vertex2014}	node--dragged
+	Mouse Up						${vertex2014}
+	Element Should Not Have Class	${vertex2014}	node--dragged
+
 
 Drag Vertex
 	# zoom in to 100% to get correct coordinates
-	Click Element	${zoomInButton}
-	Click Element	${zoomInButton}
+	Click Element		${zoomInButton}
+	Click Element		${zoomInButton}
 	# get old vertex coordinates
-	${oldX}=	Get Element Attribute	${vertex3}	x
-	${oldX}=	Convert To Number	${oldX}	2
-	${oldY}=	Get Element Attribute	${vertex3}	y
-	${oldY}=	Convert To Number	${oldY}	2
+	${oldX}=	Get Element Attribute	${vertex2014}	x
+	${oldX}=	Convert To Number		${oldX}	2
+	${oldY}=	Get Element Attribute	${vertex2014}	y
+	${oldY}=	Convert To Number		${oldY}	2
 	# move vertex by 10 pixels in both directions
-	Drag And Drop By Offset		${vertex3}	10	10
+	Drag And Drop By Offset				${vertex2014}	10	10
 	# get new vertex coordinates
-	${newX}=	Get Element Attribute	${vertex3}	x
-	${newX}=	Convert To Number	${newX}	2
-	${newY}=	Get Element Attribute	${vertex3}	y
-	${newY}=	Convert To Number	${newY}	2
+	${newX}=	Get Element Attribute	${vertex2014}	x
+	${newX}=	Convert To Number		${newX}	2
+	${newY}=	Get Element Attribute	${vertex2014}	y
+	${newY}=	Convert To Number		${newY}	2
 	# check that offset matches
-	Should Be Equal As Numbers	${oldX + 10}	${newX}
-	Should Be Equal As Numbers	${oldY + 10}	${newY}
+	Should Be Equal As Numbers			${oldX + 10}	${newX}
+	Should Be Equal As Numbers			${oldY + 10}	${newY}
+
 
 Display Vertex Popover
-	Click Element	${vertex3}${vertexInterface}
-	Element Should Be Visible	${vertexPopover}
-	Element Should Not Have Class  ${vertexPopover}  hidden
+	Click Element		${vertex2014}${vertexArchetypeIcon}
+	Element Should Be Visible		${vertexPopover}
+	Element Should Not Have Class	${vertexPopover}	hidden
+	Mouse Out			${vertexPopover}
+
 
 Hide Vertex Popover By Moving Mouse Out
-	Click Element	${vertex3}${vertexInterface}
-	Mouse Out	${vertexPopover}
+	Click Element		${vertex2014}${vertexArchetypeIcon}
+	Mouse Out			${vertexPopover}
 	Element Should Not Be Visible	${vertexPopover}
-	Element Should Have Class  ${vertexPopover}  hidden
+	Element Should Have Class		${vertexPopover}	hidden
+
 
 Hide Vertex Popover By Clicking Elsewhere
-	Click Element	${vertex3}${vertexInterface}
-	Click Element	//body
+	Click Element		${vertex2014}${vertexArchetypeIcon}
+	Click Element		//body
 	Element Should Not Be Visible	${vertexPopover}
-	Element Should Have Class  ${vertexPopover}  hidden
-
-*** Keywords ***
+	Element Should Have Class		${vertexPopover}	hidden
diff --git a/sources/src/main/webapp/tests/zoom.robot b/sources/src/main/webapp/tests/zoom.robot
index 30c6273..e93fd69 100644
--- a/sources/src/main/webapp/tests/zoom.robot
+++ b/sources/src/main/webapp/tests/zoom.robot
@@ -1,47 +1,52 @@
 *** Settings ***
 Documentation	A test suite with tests of graph zoom.
-...
-...				This test has a workflow that is created using keywords in
-...				the imported resource file.
-...
+
 Library			String
+
 Suite Setup		Open Browser To Demo Diagram
-Test Teardown	Reload Diagram Screen
 Suite Teardown	Close Browser
+Test Teardown	Reload Diagram Screen
+
 Resource		common.robot
 
+
 *** Variables ***
-${defaultZoom}	${80}
-${minZoom}	${10}
-${maxZoom}	${500}
+${defaultZoom}		${80}
+${minZoom}			${10}
+${maxZoom}			${500}
 
-${graphWrapper}		//*[name()='g'][@id='graph']
+${graphWrapper}		//*[name()="g"][@id="graph"]
+
+${zoomInButton}		//button[@id="zoomIn"]
+${zoomOutButton}	//button[@id="zoomOut"]
+${zoomValue}		//span[@id="zoomValue"]
 
-${zoomInButton}		//button[@id='zoomIn']
-${zoomOutButton}	//button[@id='zoomOut']
-${zoomValue}		//span[@id='zoomValue']
 
 *** Test Cases ***
 Zoom In
 	Click Element		${zoomInButton}
 	Zoom Should Be Equal	${defaultZoom + 10}
 
+
 Zoom In Constraint
 	# zoom in to maximum (there are 12 steps between default and maximum zoom level)
 	Repeat Keyword	12	Click Element	${zoomInButton}
 	Zoom Should Be Equal	${maxZoom}
 	Element Should Have Class	${zoomInButton}	disabled
 
+
 Zoom Out
 	Click Element		${zoomOutButton}
 	Zoom Should Be Equal	${defaultZoom - 10}
 
+
 Zoom Out Constraint
 	# zoom out to minimum (there are 5 steps between default and minimum zoom level)
 	Repeat Keyword	5	Click Element	${zoomOutButton}
 	Zoom Should Be Equal	${minZoom}
 	Element Should Have Class	${zoomOutButton}	disabled
 
+
 *** Keywords ***
 Zoom Should Be Equal
 	[Arguments]	${expectedScale}
