Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Eugene Shen
erp5
Commits
3ac6381b
Commit
3ac6381b
authored
Apr 21, 2017
by
Eugene Shen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add comprehensive Zelenium UI functional tests
parent
48f7d3fb
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1832 additions
and
0 deletions
+1832
-0
bt5/officejs_eyqs/PathTemplateItem/portal_tests/officejs_ui_zuite/testOfficeJSChat.xml
...eItem/portal_tests/officejs_ui_zuite/testOfficeJSChat.xml
+58
-0
bt5/officejs_eyqs/PathTemplateItem/portal_tests/officejs_ui_zuite/testOfficeJSChat.zpt
...eItem/portal_tests/officejs_ui_zuite/testOfficeJSChat.zpt
+1772
-0
bt5/officejs_eyqs/bt/template_keep_last_workflow_history_only_path_list
...yqs/bt/template_keep_last_workflow_history_only_path_list
+1
-0
bt5/officejs_eyqs/bt/template_path_list
bt5/officejs_eyqs/bt/template_path_list
+1
-0
No files found.
bt5/officejs_eyqs/PathTemplateItem/portal_tests/officejs_ui_zuite/testOfficeJSChat.xml
0 → 100644
View file @
3ac6381b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOfficeJSChat
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/officejs_eyqs/PathTemplateItem/portal_tests/officejs_ui_zuite/testOfficeJSChat.zpt
0 → 100644
View file @
3ac6381b
<html
xmlns:tal=
"http://xml.zope.org/namespaces/tal"
xmlns:metal=
"http://xml.zope.org/namespaces/metal"
>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
Test OfficeJS Chat UI
</title>
</head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"3"
>
Test OfficeJS Chat Zuite
</td></tr>
</thead><tbody>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/init"
/>
<!-- Initialization -->
<tr>
<td>
open
</td>
<td>
${base_url}/bar_module/ListBoxZuite_reset
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Reset Successfully.
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_disconnect
</td>
<td></td>
</tr>
<tr>
<td>
store
</td>
<td>
${base_url}/web_site_module/hateoas
</td>
<td>
hateoas_url
</td>
</tr>
<tr>
<td>
store
</td>
<td>
https://softinst75722.host.vifib.net/share
</td>
<td>
webdav_url
</td>
</tr>
<tr>
<td>
store
</td>
<td>
test@officejs.com
</td>
<td>
email_1
</td>
</tr>
<tr>
<td>
store
</td>
<td>
test-officejs-com
</td>
<td>
id_1
</td>
</tr>
<tr>
<td>
store
</td>
<td>
new.room@nexedi.com
</td>
<td>
email_2
</td>
</tr>
<tr>
<td>
store
</td>
<td>
new-room-nexedi-com
</td>
<td>
id_2
</td>
</tr>
<tr>
<td>
store
</td>
<td>
newer_test@erp5.net
</td>
<td>
email_3
</td>
</tr>
<tr>
<td>
store
</td>
<td>
newer_test-erp5-net
</td>
<td>
id_3
</td>
</tr>
<tr>
<td>
store
</td>
<td>
Test
</td>
<td>
last_name_1
</td>
</tr>
<tr>
<td>
store
</td>
<td>
OfficeJS
</td>
<td>
first_name_1
</td>
</tr>
<tr>
<td>
store
</td>
<td>
Name
</td>
<td>
last_name_2
</td>
</tr>
<tr>
<td>
store
</td>
<td>
Replacement
</td>
<td>
first_name_2
</td>
</tr>
<!-- XXX really ought to clear these IndexedDBs before starting the test -->
<tr>
<td>
store
</td>
<td>
officejs_chat_test_local
</td>
<td>
database_1
</td>
</tr>
<tr>
<td>
store
</td>
<td>
officejs_chat_test_sync
</td>
<td>
database_2
</td>
</tr>
<!-- Redirection -->
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
c
<tr>
<td>
click
</td>
<!-- chat_connect, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[1]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no email, redirect to chat_connect -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[2]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- jio_configurator, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[3]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- sync, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[4]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=sync
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/article[@class='configurator-sync']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- no configuration, redirect to jio_configurator -->
<td>
//div[@role='main']/div/article[@class='configurator-sync']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_disconnect, redirect to chat_connect -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[5]/a
</td>
<td></td>
</tr>
<!-- Connection -->
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='user_email']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='user_email']
</td>
<td>
${email_1}
</td>
</tr>
<tr>
<td>
click
</td>
<!-- no configuration, redirect to jio_configurator -->
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_connect, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[1]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- no configuration, redirect to jio_configurator -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[2]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- jio_configurator, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[3]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- sync, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[4]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=sync
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_disconnect, redirect to chat_connect -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[5]/a
</td>
<td></td>
</tr>
<!-- Synchronization -->
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- jio_configurator, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[3]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/article[@class='configurator-storage']/section/div/form[@class='grid-box select-local-form']/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- redirect to sync -->
<td>
//div[@role='main']/div/article[@class='configurator-storage']/section/div/form[@class='grid-box select-local-form']/button
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=sync
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/article[@class='configurator-sync']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no email, redirect to chat_connect -->
<td>
//div[@role='main']/div/article[@class='configurator-sync']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_connect, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[1]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no email, redirect to chat_connect -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[2]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- jio_configurator, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[3]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- sync, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[4]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=sync
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_disconnect, redirect to chat_connect -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[5]/a
</td>
<td></td>
</tr>
<!-- Configuration -->
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_connect, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[1]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='user_email']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='user_email']
</td>
<td>
${email_1}
</td>
</tr>
<tr>
<td>
click
</td>
<!-- no configuration, redirect to jio_configurator -->
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<!-- no configuration, redirect to jio_configurator -->
<td>
${base_url}/web_site_module/officejs_chat/
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/article[@class='configurator-storage']/section/div/form[@class='grid-box select-local-form']/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- redirect to sync -->
<td>
//div[@role='main']/div/article[@class='configurator-storage']/section/div/form[@class='grid-box select-local-form']/button
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=sync
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/article[@class='configurator-sync']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no redirection -->
<td>
//div[@role='main']/div/article[@class='configurator-sync']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- jio_configurator, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[3]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/div/article[@class='configurator-document']/section/div/a[1]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div/article[@class='configurator-document']/section/div/a[1]
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=sync
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- jio_configurator, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[3]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/div/article[@class='configurator-document']/section/div/a[2]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no redirection -->
<td>
//div[@role='main']/div/div/article[@class='configurator-document']/section/div/a[2]
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[2]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<!-- Edit Own Room -->
<tr>
<td>
open
</td>
<!-- chat_box, no redirection -->
<td>
${base_url}/web_site_module/officejs_chat/
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat chat-hidden']@class
</td>
<td>
chat-right-panel-chat chat-hidden
</td>
</tr>
<tr>
<td>
waitForNotAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<!-- no default storage chosen, no radios checked -->
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[1]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[3]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[7]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<!-- no default parameters given, text inputs blank -->
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[2]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[4]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[5]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[6]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<!-- some inputs may not be blank if room is already in local storage -->
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_1}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[2]/input
</td>
<td>
${last_name_1}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[3]/input
</td>
<td>
${first_name_1}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[4]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
refreshAndWait
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat chat-hidden']@class
</td>
<td>
chat-right-panel-chat chat-hidden
</td>
</tr>
<tr>
<td>
waitForNotAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[2]/input
</td>
<td>
${last_name_1}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[3]/input
</td>
<td>
${first_name_1}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[4]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[8]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<!-- Add New Room -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@name='content']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@name='content']
</td>
<td>
${email_2}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat chat-hidden']@class
</td>
<td>
chat-right-panel-chat chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForNotAttribute
</td>
<td>
id=room-gadget-${id_2}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_2}
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[1]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[3]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[7]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[2]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[4]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[5]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[6]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_2}
</td>
</tr>
<!-- Switch Between Rooms -->
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@type='text']
</td>
<td>
${email_1}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[2]/input
</td>
<td>
${last_name_1}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[3]/input
</td>
<td>
${first_name_1}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[4]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[8]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[2]/input
</td>
<td>
${last_name_2}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[3]/input
</td>
<td>
${first_name_2}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
check
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[7]/input
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotTextPresent
</td>
<td>
[Invalid Date]
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_1}: ${email_1} has joined.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat']@class
</td>
<td>
chat-right-panel-chat
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_2}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='edit-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[1]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[3]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[7]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[2]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[4]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[5]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[6]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[8]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_1}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[2]/input
</td>
<td>
${last_name_2}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[3]/input
</td>
<td>
${first_name_2}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[4]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@name='content']
</td>
<td>
${email_2}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_2}
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_2}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
id=chat-contact-${id_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat']@class
</td>
<td>
chat-right-panel-chat
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_2}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForNotTextPresent
</td>
<td>
[Invalid Date]
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_1}: ${email_1} has joined.
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_2}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='edit-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_1}
</td>
</tr>
<!-- Default Parameters -->
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_connect, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[1]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='user_email']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='user_email']
</td>
<td>
${email_3}
</td>
</tr>
<tr>
<td>
check
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@value='custom']
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='default_erp5_url']
</td>
<td>
${hateoas_url}
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@name='default_dav_url']
</td>
<td>
${webdav_url}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/form[@class='chat-connect-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=jio_configurator
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@role='main']/div/div/article[@class='configurator-document']/section/div/a[2]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_box, no redirection -->
<td>
//div[@role='main']/div/div/article[@class='configurator-document']/section/div/a[2]
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat chat-hidden']@class
</td>
<td>
chat-right-panel-chat chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_2}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForNotAttribute
</td>
<td>
id=room-gadget-${id_3}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_3}
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<!-- default storage is custom -->
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[1]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[3]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForChecked
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[7]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<!-- match given default URLs -->
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[2]/input
</td>
<td>
${hateoas_url}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[4]/input
</td>
<td>
${webdav_url}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[5]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[6]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_3}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
id=chat-contact-${id_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[1]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[3]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForChecked
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[7]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[2]/input
</td>
<td>
${hateoas_url}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[4]/input
</td>
<td>
${webdav_url}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[5]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[6]/input
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/label[8]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[1]/input
</td>
<td>
${email_1}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[2]/input
</td>
<td>
${last_name_2}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[3]/input
</td>
<td>
${first_name_2}
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-contact-form']/label[4]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<!-- Local Communication -->
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div[@class='chat-right-panel-chat']@class
</td>
<td>
chat-right-panel-chat
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_1}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_2}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
id=room-gadget-${id_3}@class
</td>
<td>
chat-hidden
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_3}: ${email_3} has joined.
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Hello, world!
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_3}: Hello, world!
</td>
<td></td>
</tr>
<tr>
<td>
waitForNotTextPresent
</td>
<td>
[Invalid Date]
</td>
<td></td>
</tr>
<tr>
<td>
refreshAndWait
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_3}
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/label[8]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_3}']/form[@class='chat-storage-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_3}
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
id=chat-contact-${id_2}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_2}
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/label[8]/input
</td>
<td>
{"type": "query", "sub_storage": {"type": "uuid", "sub_storage": {"type": "indexeddb", "database": "${database_1}"}}}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_2}']/form[@class='chat-storage-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_2}
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
id=chat-contact-${id_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<!-- Chat Features: Chat Colours, URL Links, Embedded Images, Slash Commands -->
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_3}: Hello, world!
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<!-- chat colours -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last() - 1]@style
</td>
<td>
color: grey;
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: orange;
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Transform https://www.nexedi.com/ into a link!
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Transform https://www.nexedi.com/ into a link!
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=https://www.nexedi.com/@href
</td>
<td>
https://www.nexedi.com/
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
into a link!
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<!-- all vaild links should become anchor elements -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Good links: https://nexedi.com/ https://tiolive.com http://renderjs.org officejs.com erp5.net
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Good links:
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=https://nexedi.com/@href
</td>
<td>
https://nexedi.com/
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=https://tiolive.com@href
</td>
<td>
https://tiolive.com
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=http://renderjs.org@href
</td>
<td>
http://renderjs.org
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=officejs.com@href
</td>
<td>
https://officejs.com
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=erp5.net@href
</td>
<td>
https://erp5.net
</td>
</tr>
<tr>
<td>
type
</td>
<!-- all invalid links should stay as text -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Bad links: ftp://php.net/ mailto:example@example.org admin@google.com Dr. Who M.D. e.g i.e U.S.A
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Bad links: ftp://php.net/ mailto:example@example.org admin@google.com Dr. Who M.D. e.g i.e U.S.A
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<!-- strange edge cases, feel free to change these whenever -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Mixed links: this.is.a.fakedomain httpss://snakes.com, lol.com????? ,surrounded.sss, not.surrounded.sss, not.alphanumer!c.com query.co/#/?query=true
&
length=long;
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Mixed links:
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=this.is.a.fakedomain@href
</td>
<td>
https://this.is.a.fakedomain
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
httpss://snakes.com,
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=lol.com?????@href
</td>
<td>
https://lol.com?????
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
,surrounded.sss,
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=not.surrounded.sss@href
</td>
<td>
https://not.surrounded.sss
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=not.alphanumer@href
</td>
<td>
https://not.alphanumer
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
!c.com
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
link=query.co/#/?query=true
&
length=long@href
</td>
<td>
https://query.co/#/?query=true
&
length=long
</td>
</tr>
<tr>
<td>
type
</td>
<!-- all valid images should become image elements -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Good images: https://www.nexedi.com/img/nexedi-logo.png http://www.tiolive.com/en/tiolive_image/logo.png; www.nexedi.com/img/erp-logo-small.png!
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]/img[1]@src
</td>
<td>
https://www.nexedi.com/img/nexedi-logo.png
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]/img[2]@src
</td>
<td>
http://www.tiolive.com/en/tiolive_image/logo.png
</td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]/img[3]@src
</td>
<td>
https://www.nexedi.com/img/erp-logo-small.png
</td>
</tr>
<tr>
<td>
type
</td>
<!-- all invalid images should stay as text -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
Bad images: https://www.youtube.com/video.mov data:image/png;base64,iVBORw0KGgoAAAAAAAAAAA https://slapos.vifib.com/slapos-resilience-logo?format=png
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Bad images: https://www.youtube.com/video.mov data:image/png;base64,iVBORw0KGgoAAAAAAAAAAA https://slapos.vifib.com/slapos-resilience-logo?format=png
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<!-- chat colours in slash commands -->
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/help
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Available commands:
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
/help: displays this help box
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: green;
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/xyzzy
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
'xyzzy' is not a valid command.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: red;
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/leave
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_3}
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/leave
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
You cannot leave your own room.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: red;
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/join ${email_3}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
You are already in the room of '${email_3}'.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: red;
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/join ${email_2}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_2}
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/join ${email_1}
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
You must first join '${email_1}' manually.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: red;
</td>
</tr>
<tr>
<td>
click
</td>
<td>
id=chat-contact-${id_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Contact: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@id='room-gadget-${id_1}']/form[@class='chat-storage-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_1}
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<!-- make sure that quitting message was sent -->
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_3}: ${email_3} has quit.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last() - 1]@style
</td>
<td>
color: grey;
</td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
regexp:\[[0-1]?[0-9]/[0-3]?[0-9]/[0-9]*, [0-1]?[0-9]:[0-5][0-9]:[0-5][0-9] [AP]M\] ${email_3}: ${email_3} has joined.
</td>
<td></td>
</tr>
<tr>
<td>
waitForAttribute
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/ul[@class='chat-list']/li[last()]@style
</td>
<td>
color: orange;
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/leave
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Room: ${email_3}
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@name='content']
</td>
<td>
This text will be wiped out if the page refreshes.
</td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@name='content']
</td>
<td>
This text will be wiped out if the page refreshes.
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='text']
</td>
<td>
/quit
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='send-form']/input[@type='submit']
</td>
<td></td>
</tr>
<tr>
<td>
waitForValue
</td>
<td>
//div[@role='main']/div/div[@class='chat-box']/div/div/form[@class='join-form']/input[@name='content']
</td>
<td>
This text will be wiped out if the page refreshes.
</td>
</tr>
<!-- Deinitialization -->
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_box
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//div[@data-gadget-scope='header']/header/div[@class='header-left']/form/button
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<!-- chat_disconnect, no redirection -->
<td>
//div[@data-gadget-scope='panel']/article[@class='panel-listview']/ul/li[5]/a
</td>
<td></td>
</tr>
<tr>
<td>
waitForLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
<tr>
<td>
assertLocation
</td>
<td>
${base_url}/web_site_module/officejs_chat/#/?page=chat_connect
</td>
<td></td>
</tr>
</tbody></table>
</body></html>
\ No newline at end of file
bt5/officejs_eyqs/bt/template_keep_last_workflow_history_only_path_list
View file @
3ac6381b
portal_tests/officejs_ui_zuite/testOfficeJSChat
web_page_module/adapter_js
web_page_module/gadget_erp5_chat_css
web_page_module/gadget_erp5_chat_header_html
...
...
bt5/officejs_eyqs/bt/template_path_list
View file @
3ac6381b
portal_tests/officejs_ui_zuite/testOfficeJSChat
web_page_module/adapter_js
web_page_module/gadget_erp5_chat_css
web_page_module/gadget_erp5_chat_header_html
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment