Commit 3ac6381b authored by Eugene Shen's avatar Eugene Shen

Add comprehensive Zelenium UI functional tests

parent 48f7d3fb
<?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>
<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&amp;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&amp;length=long@href</td>
<td>https://query.co/#/?query=true&amp;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
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
......
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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment