Commit 2395b4fa authored by Lu Xu's avatar Lu Xu 👀

slapos_jio_zh_ui_test: create new bt5 for slapos UI test in Chinese

parent f8e096e8
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Zuite" module="Products.Zelenium.zuite"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>slaposjs_zh_zuite</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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>testSlapOSJSAccount</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Account </td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>assertElementPresent</td>
<td>//label[text()="名"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//label[text()="姓"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//label[text()="电子邮件"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b> Rename user to DEMO A </b></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="first_name"]</td>
<td>DEMO A</td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="last_name"]</td>
<td>DEMO B</td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="default_email_text"]</td>
<td>demoA@nexedi.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<tal:block define="person_name python: 'DEMO A DEMO B'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSAccountCertificate</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS UI Account Certificate</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b> Request User Certificate</b> </td>
</tr>
<tal:block define="menu_action python: 'Request Certificate'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '证书已请求。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="certificate"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="key"]</td>
<td></td>
</tr>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Request User Certificate</b> </td>
</tr>
<tal:block define="menu_action python: 'Request Certificate'">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '该用户已拥有一个证书,请在请求新的证书之前吊销已有证书。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Revoke Certificate</b></td>
</tr>
<tal:block define="menu_action python: 'Revoke Certificate'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '吊销用户证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '证书已吊销。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '您的登录账号 : Demo User Functional'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Request User Certificate again</b> </td>
</tr>
<tal:block define="menu_action python: 'Request Certificate'">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '证书已请求。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="certificate"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="key"]</td>
<td></td>
</tr>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSAccountForceReLogin</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 RapidSpace Console Account Page Check</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Account Force ReLogin</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/</td>
<td></td>
</tr>
<!--
In testSlapOSJSAccountLogin, after visit hostingjs website,
the default user is "zope", so in that test we need to call
hostingjs/WebSite_logout to logout first.
Here we don't call it manually, due to the zope user doesn't
have the correct "me" setting, so we just let the getSettingMe
function redirect us to the login page -->
<tr>
<td>waitForElementPresent</td>
<td>//label[contains(text(), "登录")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="__ac_name"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="__ac_password"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>__ac_name</td>
<td>demo_functional_user</td>
</tr>
<tr>
<td>type</td>
<td>__ac_password</td>
<td>demo_functional_user</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>WebSite_login:method</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Login Account"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Tickets"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Invoices"]</td>
<td></td>
</tr>
<!-- Account Tab -->
<tr>
<td>click</td>
<td>//a[@data-i18n="Login Account"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n="Save"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Add Login"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Add Organisation"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Token"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Request Certificate"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Revoke Certificate"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//label[contains(text(), "名")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//label[contains(text(), "姓")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//label[contains(text(), "电子邮件")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="Demo User"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="Functional"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="demo@nexedi.com"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//h1[contains(text(), "登录账号")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[contains(text(), "编号")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[contains(text(), "类别")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//h1[contains(text(), "组织")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//th[contains(text(), "标题")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[contains(text(), "编号")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//th[contains(text(), "区域")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//th[contains(text(), "状态")]</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSAccountLogin</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Account Login</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b> Create another Login</b> </td>
</tr>
<tal:block define="menu_action python: 'Add Login'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '添加新用户登录'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Fill the form</b> </td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='reference']</td>
<td>demo_test_login_from_testSlapOSJSAccountLogin</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='password']</td>
<td>demo_test_password_from_testSlapOSJSAccountLogin</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='password_confirmation']</td>
<td>demo_test_password_from_testSlapOSJSAccountLogin</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新用户登录已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '您的登录账号 : Demo User Functional'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(2)', 'footer': '2 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>verifyTextPresent</td>
<td>demo_test_login_from_testSlapOSJSAccountLogin</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="demo_test_login_from_testSlapOSJSAccountLogin"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Login : demo_test_login_from_testSlapOSJSAccountLogin'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block define="menu_action python: 'Delete'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '关闭登录账号: demo_test_login_from_testSlapOSJSAccountLogin'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '您的登录账号 : Demo User Functional'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>verifyTextNotPresent</td>
<td>demo_test_login_from_testSlapOSJSAccountLogin</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSAccountToken</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Account Token</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Click on Token'"> Menu Item </b></td>
</tr>
<tal:block define="menu_action python: 'Token'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '请求新令牌'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '令牌已请求。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//label[text()="您的令牌"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//label[text()="您的令牌"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_string.html\')]//p[contains(text(), \'%s%02d%02d-\')]' % (DateTime().year(),DateTime().month(),DateTime().day())"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_string.html\')]//p[contains(text(), \'%s%02d%02d-\')]' % (DateTime().year(),DateTime().month(),DateTime().day())"></td>
<td></td>
</tr>
<tal:block define="header python: '请求新令牌'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tal:block define="header python: '您的登录账号 : Demo User Functional'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSBasicNavigation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Basic Navigation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<!-- Access Menu -->
<tr>
<td>click</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Home']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Login Account']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Tickets']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Sites']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Projects']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Invoices']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Services']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Servers']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Networks']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Logout']</td>
<td></td>
</tr>
<tal:block define="menu_item python: '工单'; header menu_item; menu_item_data python: 'Tickets'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block define="menu_item python: '站点'; header menu_item; menu_item_data python:'Sites'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block define="menu_item python: '账单'; header menu_item; menu_item_data python: 'Invoices'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python: 'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python:'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tr>
<td colspan="3"><b>Access modules and verify the redirect</b></td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/support_request_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '工单'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/hosting_subscription_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '服务'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/computer_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '服务器'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/accounting_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '账单'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/project_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '项目'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/computer_network_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '网络'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${base_url}/</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/#/organisation_module</td>
<td></td>
</tr>
<tal:block define="menu_item python: '站点'; header menu_item">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block define="header python: '您的登录账号 : Demo User Functional';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSNetwork</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Network</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python:'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="title python: 'TEST-SLAPOSJS-NETWORK 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/add_simple_with_title" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的网络。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-NETWORK 1</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<!-- check site -->
<!-- Broken history to return
<tr>
<td>click</td>
<td>//a[@data-i18n="Site : TEST-SLAPOSJS-SET 0"]</td>
<td></td>
</tr>
-->
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK 1"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK 1"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK 1'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="delete_configuration python: {'header_title': '删除网络: TEST-SLAPOSJS-NETWORK 1',
'notification_text': '网络已删除。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/delete_simple" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSNetworkSharedByOrganisation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Network Shared By Organisation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_user_organisation" />
</tal:block>
<tal:block define="document_title python: 'TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_network" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Wait index the documents'"> Menu Item </b></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Transfer Network to a Organisation'"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Transfer'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '转移计算机网络'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name="destination_section"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="destination_section"]</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '计算机网络已转移。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0</td>
<td></td>
</tr>
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '组织 : TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User </b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new organisation: TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-NETWORK 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python:'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK-BY-ORGASNISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSNetworkSharedByProject</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Network Shared By Project</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_project" />
</tal:block>
<tal:block define="document_title python: 'TEST-SLAPOSJS-NETWORK-BY-PROJECT 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_network" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Wait index the documents'"> Menu Item </b></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Transfer Network to a Project'"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Transfer'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '转移计算机网络'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name="destination_project"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="destination_project"]</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '计算机网络已转移。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '项目 : TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User</b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new project: TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-NETWORK 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python: 'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-NETWORK-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer Network :TEST-SLAPOSJS-NETWORK-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSOrganisation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Organisation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b> Create an Organisation</b> </td>
</tr>
<tal:block define="menu_action python: 'Add Organisation'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '新组织'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Fill the form</b> </td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='title']</td>
<td>demo_test_organisation_from_testSlapOSJSOrganisation</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的组织已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '组织 : demo_test_organisation_from_testSlapOSJSOrganisation'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSOrganisationInvitation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Organisation Invitation </td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b> Create an Organisation</b> </td>
</tr>
<tal:block define="menu_action python: 'Add Organisation'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '新组织'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Fill the form</b> </td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='title']</td>
<td>demo_test_organisation_from_testSlapOSJSOrganisationInvitation</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的组织已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '组织 : demo_test_organisation_from_testSlapOSJSOrganisationInvitation'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Fill the form</b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '失败...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>Invitation Token cannot be used by the same user that generated the token!</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new organisation: demo_test_organisation_from_testSlapOSJSOrganisationInvitation.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>demo_test_organisation_from_testSlapOSJSOrganisationInvitation</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSProject</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Project</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-PROJECT 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_project" />
</tal:block>
<tr>
<td>type</td>
<td>//textarea[@id="description"]</td>
<td>TEST-SLAPOSJS-PROJECT DESCRIPTION</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<!-- check site -->
<!-- Broken history to return
<tr>
<td>click</td>
<td>//a[@data-i18n="Project : TEST-SLAPOSJS-PROJECT 0"]</td>
<td></td>
</tr>
-->
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '项目 : TEST-SLAPOSJS-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="delete_configuration python: {'header_title': '删除项目: TEST-SLAPOSJS-PROJECT 0',
'notification_text': '项目已删除。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/delete_simple" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSProjectInvitation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test Project Invitation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-PROJECT-INVITATION 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_project" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User/b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '失败...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>Invitation Token cannot be used by the same user that generated the token!</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new project: TEST-SLAPOSJS-PROJECT-INVITATION 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-PROJECT-INVITATION 0</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServer</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Server</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-COMPUTER 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_computer" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Supply a Software </b></td>
</tr>
<tal:block define="menu_action python: 'Supply'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Select a Software Product</b></td>
</tr>
<tal:block define="header python: '1/3 选择一个软件'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>waitForElementPresent</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b> Select a Software Release</b></td>
</tr>
<tal:block define="header python: '2/3 选择一个发布'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>click</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//label[text()="将要安装发布软件"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//label[text()="目标计算机标题"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//p[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的软件安装已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: 'Software Installation : Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>5000</td>
<td>5000</td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>click</td>
<td>//th/a[text()="软件发布"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//td/a[contains(text(), "Frontend (0.1)")]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//td/a[contains(text(), "Frontend (0.1)")]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//td/a[contains(text(), "Frontend (0.1)")]</td>
<td></td>
</tr>
<tal:block define="header python: 'Software Installation : Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block define="menu_action python: 'Destroy'">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
</tal:block>
<tal:block define="header python: '销毁软件安装'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '您成功请求销毁。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b>Try to request a new Certificate</b></td>
</tr>
<tal:block define="menu_action python: 'Request Certificate'">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '该计算机已拥有一个证书,请在请求新的证书之前吊销已有证书。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Revoke Certificate</b></td>
</tr>
<tal:block define="menu_action python: 'Revoke Certificate'">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr></tal:block>
<tal:block define="header python: '吊销计算机证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '证书已吊销。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td colspan="3"><b> Try again Request Certificate</b></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block define="menu_action python: 'Request Certificate'">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
</tal:block>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '证书已请求。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="certificate"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="key"]</td>
<td></td>
</tr>
<tal:block define="header python: '请求新的证书'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Update Allocation Scope</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@id="allocation_scope"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@id="allocation_scope"]</td>
<td>开启(仅朋友)</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@id="subject_list"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@id="subject_list"]</td>
<td>demo@user.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<tr>
<td>assertValue</td>
<td>//textarea[@id="subject_list"]</td>
<td>demo@user.com</td>
</tr>
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Update Allocation Scope</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@id="allocation_scope"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@id="allocation_scope"]</td>
<td>永久终止并删除</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServerSharedByOrganisation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Server Shared By Organisation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_user_organisation" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_computer" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Computer: TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b tal:content="python: 'Transfer Computer to a Organisation'"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Transfer'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '转移计算机'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name="destination_section"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="destination_section"]</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '计算机已转移。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0</td>
<td></td>
</tr>
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '组织 : TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User/b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new organisation: TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-COMPUTER 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER-SHARED-BY-ORGANISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServerSharedByProject</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_project" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_computer" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Transfer Computer to a Project'"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Transfer'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '转移计算机'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name="destination_project"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="destination_project"]</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '计算机已转移。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '项目 : TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User/b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new project: TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python: 'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-COMPUTER 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: TEST-SLAPOSJS-COMPUTER-SHARED-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServerToken</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Server Token</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Click on Token'"> Menu Item </b></td>
</tr>
<tal:block define="menu_action python: 'Token'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '请求新令牌'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '令牌已请求。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//label[text()="您的令牌"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//label[text()="您的令牌"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_string.html\')]//p[contains(text(), \'%s%02d%02d-\')]' % (DateTime().year(),DateTime().month(),DateTime().day())"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_string.html\')]//p[contains(text(), \'%s%02d%02d-\')]' % (DateTime().year(),DateTime().month(),DateTime().day())"></td>
<td></td>
</tr>
<tal:block define="header python: '请求新令牌'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'服务器\')]'"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'服务器\')]'"></td>
<td></td>
</tr>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSService</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Service</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tal:block define="software_product python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_product" />
</tal:block>
<tal:block define="software_release python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_release" />
</tal:block>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-FRONTEND 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//public-ipv4"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//public-ipv4"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="托管订阅: TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<!-- Update Parameters -->
<!-- Update Add Ticket -->
<!-- Update Stop -->
<!-- Update Start -->
<tal:block define="menu_action python: 'Destroy'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '销毁托管订阅: TEST-SLAPOSJS-SERVICE-FRONTEND 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '服务已销毁。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServiceDuplicatedRequest</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Service Duplicated Request</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tal:block define="software_product python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_product" />
</tal:block>
<tal:block define="software_release python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_release" />
</tal:block>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-FRONTEND 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//public-ipv4"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//public-ipv4"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tal:block define="software_product python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_product" />
</tal:block>
<tal:block define="software_release python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_release" />
</tal:block>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-FRONTEND 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//public-ipv4"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//public-ipv4"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'error',
'text': 'A service with this title already exists.'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServiceJSONSerialisation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Service JSON Serialisation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tal:block define="software_product python: 'KVM'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_product" />
</tal:block>
<tal:block define="software_release python: 'KVM'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_release" />
</tal:block>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: KVM'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Cluster"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Cluster"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Cluster</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="ADD//kvm-partition-dict"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="ADD//kvm-partition-dict"]</td>
<td>KVM-CLUSTER-INSTANCE-0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@name="//kvm-partition-dict"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@name="//kvm-partition-dict"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-0/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-0/disk-size"]</td>
<td>10</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="ADD//kvm-partition-dict"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="ADD//kvm-partition-dict"]</td>
<td>KVM-CLUSTER-INSTANCE-1</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@name="//kvm-partition-dict"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@name="//kvm-partition-dict"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1/disk-size"]</td>
<td>20</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="托管订阅: TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-0/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-0/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//span[@class="bt_close CLOSE//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//span[@class="bt_close CLOSE//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1"]</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>1000</td>
<td>2000</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_save" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '数据已更新。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python: 'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="托管订阅: TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-0/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-0/disk-size"]</td>
<td></td>
</tr>
<tr>
<td>assertElementNotPresent</td>
<td>//input[@name="//kvm-partition-dict/KVM-CLUSTER-INSTANCE-1/disk-size"]</td>
<td></td>
</tr>
<tal:block define="menu_action python: 'Destroy'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '销毁托管订阅: TEST-SLAPOSJS-SERVICE-KVM-CLUSTER 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '服务已销毁。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServiceSharedByOrganisation</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Service Shared By Organisation</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_user_organisation" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tr>
<td colspan="3"><b> Select a Software Product</b></td>
</tr>
<tal:block define="header python: '1/3 选择一个软件'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>waitForElementPresent</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b> Select a Software Release</b></td>
</tr>
<tal:block define="header python: '2/3 选择一个发布'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>click</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//public-ipv4"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//public-ipv4"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="托管订阅: TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b tal:content="python: 'Transfer Service to a Organisation'"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Transfer'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '转移服务'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name="destination"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="destination"]</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': 'Service is transferred.'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '托管订阅: TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0</td>
<td></td>
</tr>
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '组织 : TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User/b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new organisation: TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="person_name python: 'Another Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-ORGANISATION-TO-SHARE-SERVICE 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python: 'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '托管订阅: TEST-SLAPOSJS-SERVICE-SHARED-BY-ORGANISATION 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServiceSharedByProject</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Service Shared By Project</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="document_title python: 'TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0';">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/create_simple_project" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tr>
<td colspan="3"><b> Select a Software Product</b></td>
</tr>
<tal:block define="header python: '1/3 选择一个软件'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>waitForElementPresent</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b> Select a Software Release</b></td>
</tr>
<tal:block define="header python: '2/3 选择一个发布'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>click</td>
<td>//td/a[text()="Frontend"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//public-ipv4"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//public-ipv4"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="托管订阅: TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><b tal:content="python: 'Transfer Service to a Project'"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Transfer'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '转移服务'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//select[@name="destination_project"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@name="destination_project"]</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': 'Service is transferred.'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '托管订阅: TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '项目 : TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><b> Invite User/b> </td>
</tr>
<tal:block define="menu_action python: 'Invite User'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block define="header python: '生成新的邀请链接'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的邀请链接已生成。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//p[@id="invitation_link"]</td>
<td></td>
</tr>
<tr>
<td>storeText</td>
<td>//p[@id="invitation_link"]</td>
<td>invitation_link</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>openAndWait</td>
<td>${invitation_link}</td>
<td></td>
</tr>
<tal:block define="header python: '成功...'; ">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//span[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tr>
<td>assertTextPresent</td>
<td>You sucessfully join a new project: TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0.
</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Continue']</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForTextPresent</td>
<td>TEST-SLAPOSJS-PROJECT-TO-SHARE-SERVICE 0</td>
<td></td>
</tr>
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python: 'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '托管订阅: TEST-SLAPOSJS-SERVICE-SHARED-BY-PROJECT 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSServiceSlave</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Service Slave</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tal:block define="software_product python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_product" />
</tal:block>
<tal:block define="software_release python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_release" />
</tal:block>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-FRONTEND 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal (Slave) </td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//url"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//url"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Hosting Subscription: TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<!-- Update Parameters -->
<!-- Update Add Ticket -->
<!-- Update Stop -->
<!-- Update Start -->
<tal:block define="menu_action python: 'Destroy'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '销毁托管订阅: TEST-SLAPOSJS-SERVICE-FRONTEND 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '服务已销毁。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSSite</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Site</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '站点'; header menu_item; menu_item_data python:'Sites'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="title python: 'TEST-SLAPOSJS-SET 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/add_simple_with_title" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的站点已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tal:block define="header python: 'Site : TEST-SLAPOSJS-SET 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>type</td>
<td>//input[@id="default_geographical_location_longitude"]</td>
<td>3.077475</td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="default_geographical_location_latitude"]</td>
<td>50.644353</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/save" />
<!-- check site -->
<!-- Broken history to return
<tr>
<td>click</td>
<td>//a[@data-i18n="Site : TEST-SLAPOSJS-SET 0"]</td>
<td></td>
</tr>
-->
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '站点'; header menu_item; menu_item_data python:'Sites'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SET 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SET 0"]</td>
<td></td>
</tr>
<tal:block define="header python: 'Site : TEST-SLAPOSJS-SET 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="delete_configuration python: {'header_title': '删除站点: TEST-SLAPOSJS-SET 0',
'notification_text': '站点已删除。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/delete_simple" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '站点'; header menu_item; menu_item_data python:'Sites'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSSubscribe</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Subscribe</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/ERP5Site_removeTestUserList</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/WebSite_logout</td>
<td></td>
</tr>
<!-- Initialize -->
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='登录']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()=' Create New Account ']</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//a[text()=' Create New Account ']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name='first_name']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name='first_name']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='Register']</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='first_name']</td>
<td>Test</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='last_name']</td>
<td>User</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_email_text']</td>
<td>demo@nexedi.com</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='reference']</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='password']</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='password_confirmation']</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='career_subordination_title']</td>
<td>testSlapOSJSSubscribeOrganisation</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_telefone_text']</td>
<td>1234567890</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_street_address']</td>
<td>1234567890</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_zip_code']</td>
<td>75000</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_city']</td>
<td>Paris</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_country']</td>
<td>France</td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>You will receive a confirmation email to activate your account.</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Register']</td>
<td></td>
</tr>
<tr>
<td>assertTextNotPresent</td>
<td>Selected login is already in use, please choose different one.</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='登录']</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Credential Request Created.</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<!-- Initialize -->
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>__ac_name</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>__ac_name</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>__ac_password</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<!-- Logout -->
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Logout']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Logout']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='确认']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//input[@value='确认']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='登录']</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSSubscriptionAccessDenied</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Subscription Access Denied</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td colspan="3"><b> Request a Software </b></td>
</tr>
<tal:block define="software_product python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_product" />
</tal:block>
<tal:block define="software_release python: 'Frontend'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/select_software_release" />
</tal:block>
<tr>
<td colspan="3"><b> Fill Request form </b></td>
</tr>
<tal:block define="header python: '3/3 请求服务: Frontend'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SERVICE-FRONTEND 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]//option[text()="Custom Personal"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_page_slap_parameter_form.html')]//select[@name="software_type"]</td>
<td>Custom Personal</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//public-ipv4"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name="//public-ipv4"]</td>
<td>http://www.erp5.com</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的服务。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '服务'; header menu_item; menu_item_data python:'Services'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="托管订阅: TEST-SLAPOSJS-SERVICE-FRONTEND 0"]</td>
<td></td>
</tr>
<tr>
<td>storeLocation</td>
<td>hosting_subscription_link</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${hosting_subscription_link}</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
<!-- Initialize -->
<tr>
<td>open</td>
<td>${base_url}/web_site_module/hostingjs/zh/</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='登录']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()=' Create New Account ']</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//a[text()=' Create New Account ']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name='first_name']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name='first_name']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='Register']</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='first_name']</td>
<td>Test</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='last_name']</td>
<td>User</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_email_text']</td>
<td>demo@nexedi.com</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='reference']</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='password']</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='password_confirmation']</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='career_subordination_title']</td>
<td>testSlapOSJSSubscribeOrganisation</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_telefone_text']</td>
<td>1234567890</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_street_address']</td>
<td>1234567890</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_zip_code']</td>
<td>75000</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_city']</td>
<td>Paris</td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='default_address_country']</td>
<td>France</td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>You will receive a confirmation email to activate your account.</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Register']</td>
<td></td>
</tr>
<tr>
<td>assertTextNotPresent</td>
<td>Selected login is already in use, please choose different one.</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='登录']</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Credential Request Created.</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<!-- Go to hosting subscription, it should show the login page because we are not logged in yet, and then login with the "wrong" user to see if the error message is correctly displayed -->
<tr>
<td>open</td>
<td>${hosting_subscription_link}</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>__ac_name</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>__ac_name</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>type</td>
<td>__ac_password</td>
<td>testSlapOSJSSubscribeUser</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForTextPresent</td>
<td>You are not allowed to access this content</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value="退出"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
<?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>testSlapOSJSTicket</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 SlapJS UI</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test SlapOS JS Ticket</td></tr>
</thead><tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login" />
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
<tal:block define="menu_item python: '工单'; header menu_item; menu_item_data python: 'Tickets'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td colspan="3"><b tal:content="python: 'Add an Support Request'"> Menu Item </b></td>
</tr>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td>TEST-SLAPOSJS-SUPPORT-REQUEST 0</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@id="description"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@id="description"]</td>
<td>TEST-SLAPOSJS-SUPPORT-REQUEST DESCRIPTION</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@id="resource"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@id="resource"]</td>
<td>Complaint</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的集合已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tal:block define="header python: '客户支持请求 : TEST-SLAPOSJS-SUPPORT-REQUEST 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>verifyElementNotPresent</td>
<td>//button[@type="submit" and @data-i18n="Save"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '工单'; header menu_item; menu_item_data python: 'Tickets'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SUPPORT-REQUEST 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SUPPORT-REQUEST 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '客户支持请求 : TEST-SLAPOSJS-SUPPORT-REQUEST 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>verifyTextPresent</td>
<td>Demo User Functional</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>TEST-SLAPOSJS-SUPPORT-REQUEST 0</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>TEST-SLAPOSJS-SUPPORT-REQUEST DESCRIPTION</td>
<td></td>
</tr>
<tal:block tal:define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block tal:define="header python: '新的信息'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@id="text_content"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@id="text_content"]</td>
<td>TEST-SLAPOSJS-SUPPORT-REQUEST NEW MESSAGE</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="header python: '客户支持请求 : TEST-SLAPOSJS-SUPPORT-REQUEST 0'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page" />
<tal:block define="menu_item python: '工单'; header menu_item; menu_item_data python: 'Tickets'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()="TEST-SLAPOSJS-SUPPORT-REQUEST 0"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()="TEST-SLAPOSJS-SUPPORT-REQUEST 0"]</td>
<td></td>
</tr>
<tal:block define="header python: '客户支持请求 : TEST-SLAPOSJS-SUPPORT-REQUEST 0'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(2)', 'footer': '2 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tr>
<td>verifyTextPresent</td>
<td>TEST-SLAPOSJS-SUPPORT-REQUEST NEW MESSAGE</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_logout" />
</tbody></table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>business_template_skin_layer_priority</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>float</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>business_template_skin_layer_priority</string> </key>
<value> <float>99.0</float> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>slapos_zh_ui_test</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
context.WebSection_newCredentialRequest(
reference="demo_functional_user",
default_email_text="demo@nexedi.com",
first_name="Demo User",
last_name="Functional",
password="demo_functional_user",
default_telephone_text="12345678",
corporate_name="Nexedi",
default_address_city="Campos",
default_address_street_address="Av Pelinca",
default_address_zip_code="28480",
batch_mode=1
)
context.WebSection_newCredentialRequest(
reference="another_demo_functional_user",
default_email_text="another_demo@nexedi.com",
first_name="Another Demo User",
last_name="Functional",
password="another_demo_functional_user",
default_telephone_text="12345678",
corporate_name="Nexedi",
default_address_city="Campos",
default_address_street_address="Av Pelinca",
default_address_zip_code="28480",
batch_mode=1
)
return "Done."
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<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_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<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>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_createTestUserList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
# PreferenceTool
from DateTime import DateTime
portal = context.getPortalObject()
preference = portal.portal_preferences.getActiveSystemPreference()
preference.edit(
preferred_credential_alarm_automatic_call=1,
preferred_credential_recovery_automatic_approval=1,
preferred_credential_request_automatic_approval=1
)
try:
kvm_product = context.software_product_module["kvm"]
except KeyError:
kvm_product = context.software_product_module.newContent(
id="kvm",
title="KVM",
product_line ="software/application",
reference="kvm",
portal_type="Software Product"
)
if kvm_product.getValidationState() == "draft":
kvm_product.publish()
try:
kvm_software_release = context.software_release_module["kvm"]
except KeyError:
kvm_software_release = context.software_release_module.newContent(
id="kvm",
title="KVM",
portal_type="Software Release",
url_string="https://lab.node.vifib.com/nexedi/slapos/raw/1.0.102/software/kvm/software.cfg",
version="0.1",
language="en",
effective_date=DateTime('2018/03/14 00:00:00 UTC'),
aggregate="software_product_module/kvm"
)
if kvm_software_release.getValidationState() == "draft":
kvm_software_release.publishAlive()
try:
slaprunner_product = context.software_product_module["slaprunner"]
except KeyError:
slaprunner_product = context.software_product_module.newContent(
id="slaprunner",
title="Webrunner",
product_line ="software/application",
reference="slaprunner",
portal_type="Software Product"
)
if slaprunner_product.getValidationState() == "draft":
slaprunner_product.publish()
try:
slaprunner_software_release = context.software_release_module["slaprunner"]
except KeyError:
slaprunner_software_release = context.software_release_module.newContent(
id="slaprunner",
title="Webrunner",
portal_type="Software Release",
url_string="https://lab.node.vifib.com/nexedi/slapos/raw/1.0.102/software/slaprunner/software.cfg",
version="0.1",
language="en",
effective_date=DateTime('2018/03/14 00:00:00 UTC'),
aggregate="software_product_module/slaprunner"
)
if slaprunner_software_release.getValidationState() == "draft":
slaprunner_software_release.publishAlive()
return "Done."
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<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_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<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>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_initSlapOSUITest</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
portal = context.getPortalObject()
for cr in portal.portal_catalog(reference=["testSlapOSJSSubscribeUser", "demo_functional_user", "another_demo_functional_user"],
portal_type="Credential Request"):
related_person = cr.getDestinationDecisionValue()
if related_person is not None:
portal.person_module.manage_delObjects(ids=[related_person.getId()])
event_list = cr.getFollowUpRelatedValueList()
if len(event_list):
portal.event_module.manage_delObjects(ids=[e.getId() for e in event_list])
portal.credential_request_module.manage_delObjects(ids=[cr.getId()])
return "Done."
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<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_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<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>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_removeTestUserList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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>_local_properties</string> </key>
<value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>description</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>text</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Zuite_SlapOSZHCommonTemplate</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>
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal">
<tal:block metal:define-macro="slapos_init">
<tal:block tal:define="web_site_id python: 'hostingjs'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_init_base" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="slapos_login">
<tal:block tal:define="web_site_id python: 'hostingjs'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_base" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="slapos_login_with_another_user">
<tal:block tal:define="web_site_id python: 'hostingjs'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_login_with_another_user_base" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="slapos_wait_for_activities_and_front_page">
<tal:block tal:define="web_site_id python: 'hostingjs'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_activities_and_front_page_base" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="access_menu_item">
<tal:block tal:define="panel_gadget_id python: 'gadget_slapos_panel.html'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_base" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="access_menu_item_zh">
<tal:block tal:define="panel_gadget_id python: 'gadget_slapos_panel.html'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_base_zh" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="access_menu_item_account">
<tal:block tal:define="panel_gadget_id python: 'gadget_slapos_panel.html'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account_base" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="slapos_init_base">
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/ERP5Site_initSlapOSUITest</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>openAndWait</td>
<td>${base_url}/ERP5Site_setupDummyMailHost</td>
<td></td>
<tr>
<td>assertTextPresent</td>
<td>True</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/ERP5Site_removeTestUserList</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td tal:content="python:'${base_url}/web_site_module/%s/ERP5Site_createTestUserList' % web_site_id">.../ERP5Site_createTestUserList</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="slapos_login_base">
<!-- Logout -->
<tr>
<td>open</td>
<td tal:content="python:'${base_url}/web_site_module/%s/WebSite_logout' % web_site_id">.../WebSite_logout</td>
<td></td>
</tr>
<!-- Initialize -->
<tr>
<td>open</td>
<td tal:content="python:'${base_url}/web_site_module/%s/zh/' % web_site_id"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>__ac_name</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>__ac_name</td>
<td>demo_functional_user</td>
</tr>
<tr>
<td>type</td>
<td>__ac_password</td>
<td>demo_functional_user</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_app_loaded" />
</tal:block>
<tal:block metal:define-macro="slapos_login_with_another_user_base">
<!-- Logout -->
<tr>
<td>open</td>
<td tal:content="python:'${base_url}/web_site_module/%s/WebSite_logout' % web_site_id"></td>
<td></td>
</tr>
<!-- Initialize -->
<tr>
<td>open</td>
<td tal:content="python:'${base_url}/web_site_module/%s/zh/' % web_site_id"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>__ac_name</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>__ac_name</td>
<td>another_demo_functional_user</td>
</tr>
<tr>
<td>type</td>
<td>__ac_password</td>
<td>another_demo_functional_user</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value="登录"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_app_loaded" />
</tal:block>
<tal:block metal:define-macro="slapos_wait_for_activities_and_front_page_base">
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
<tr>
<td>assertTextPresent</td>
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td tal:content="python:'${base_url}/web_site_module/%s/zh/' % web_site_id"></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/slapos_wait_for_front_page" />
</tal:block>
<tal:block metal:define-macro="slapos_wait_for_front_page">
<tr>
<td colspan="3"><b>Wait for Dashboard on header and front page elements</b></td>
</tr>
<!-- Dashboard -->
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//span[@data-i18n='仪表板']</td>
<td></td>
</tr>
<tr>
<td>waitForElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1//span[contains(@class, "ui-icon-spinner")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), "站点")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), "待处理工单")]</td>
<td></td>
</tr>
<!-- Check if map is ok -->
<tr>
<td>waitForElementPresent</td>
<td>//a[@class='leaflet-control-zoom-out']</td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="slapos_logout">
<tr>
<td colspan="3"><b>Logout the website</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Logout']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Logout']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='确认']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//input[@value='确认']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='登录']</td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="access_menu_item_base">
<tr>
<td colspan="3"><b tal:content="python: 'Access Entry on the Menu for : %s' % menu_item"> Menu Item </b></td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'%s\')]//a[@data-i18n=\'%s\']' % (panel_gadget_id, menu_item)"></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_item"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'%s\')]' % menu_item"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'%s\')]' % menu_item"></td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="access_menu_item_base_zh">
<tr>
<td colspan="3"><b tal:content="python: 'Access Entry on the Menu for : %s' % menu_item"> Menu Item </b></td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'%s\')]//a[@data-i18n=\'%s\']' % (panel_gadget_id, menu_item_data)"></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_item"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'%s\')]' % menu_item"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'%s\')]' % menu_item"></td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="assert_page_header">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="click_page_header">
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % header"></td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="access_menu_item_account_base">
<tr>
<td colspan="3"><b tal:content="python: 'Access Entry on the Menu for Account'"> Menu Item </b></td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Menu']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'%s\')]//a[contains(text(), \'登录账号\')]' % panel_gadget_id"></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'您的登录账号 : %s\']' % person_name"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'登录账号\')]'"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1[contains(text(), \'登录账号\')]'"></td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="add_simple_with_title">
<tr>
<td colspan="3"><b tal:content="python: 'Add an entry with title as %s' % title"> Menu Item </b></td>
</tr>
<tal:block tal:define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td tal:content="title"></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
</tal:block>
<tal:block metal:define-macro="click_submenu_action">
<tr>
<td colspan="3"><b tal:content="python: 'Click on %s' % menu_action"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % menu_action"></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
</tal:block>
<tal:block metal:define-macro="click_proceed">
<tr>
<td colspan="3"><b>Click on Proceed</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Proceed']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Proceed']</td>
<td></td>
</tr>
<tr>
<td>waitForElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Proceed'][contains(@class, "ui-disabled")]</td>
<td></td>
</tr>
<tr>
<td>assertElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Proceed'][contains(@class, "ui-disabled")]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Proceed']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n="Proceed"]</td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="delete_simple">
<tr>
<td colspan="3"><b tal:content="python: 'Delete an entry with header %(header_title)s and notification as %(notification_text)s' % delete_configuration"> Menu Item </b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//a[@data-i18n="Delete"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//a[@data-i18n="Delete"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % delete_configuration['header_title']"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_slapos_header.html\')]//a[@data-i18n=\'%s\']' % delete_configuration['header_title']"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n="Proceed"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n="Proceed"]</td>
<td></td>
</tr>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': delete_configuration['notification_text']}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="wait_for_content_loaded">
<!-- Macro copied from renderjs tests but with gadget_slapos_header -->
<tr>
<td colspan="3"><b>Wait for the content to be loaded</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//h1//*[contains(@class, "ui-icon-spinner")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//h1//*[contains(@class, "ui-icon-spinner")]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="wait_for_app_loaded">
<!-- Macro copied from renderjs tests, which is bad but it can be dropped later -->
<tr>
<td colspan="3"><b>Wait for the application to be loaded</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@class="ui-icon-spinner ui-btn-icon-notext first-loader"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@class="ui-icon-spinner ui-btn-icon-notext first-loader"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementNotPresent</td>
<td>//div[@class="ui-icon-spinner ui-btn-icon-notext first-loader"]</td>
<td></td>
</tr>
<tr>
<td>assertElementNotPresent</td>
<td>//div[@class="ui-icon-spinner ui-btn-icon-notext first-loader"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='header' and not(@data-gadget-async-url)]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='header' and not(@data-gadget-async-url)]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel' and not(@data-gadget-async-url)]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel' and not(@data-gadget-async-url)]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="check_listbox_pagination_text">
<!-- Macro copied from renderjs tests, which is bad but it can be dropped later -->
<tr>
<td colspan="3"><b tal:content="python: 'Check the listbox pagination text: %s' % pagination_configuration"></b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1//span[@class=\'listboxloader\' and text()=\'%(header)s\']' % pagination_configuration"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//h1//span[@class=\'listboxloader\' and text()=\'%(header)s\']' % pagination_configuration"></td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//nav//span[@class=\'ui-disabled\' and text()=\'%(footer)s\']' % pagination_configuration"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[contains(@data-gadget-url, \'gadget_erp5_field_listbox.html\')]//nav//span[@class=\'ui-disabled\' and text()=\'%(footer)s\']' % pagination_configuration"></td>
<td></td>
</tr>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="wait_for_notification">
<tr>
<td colspan="3"><b>Wait for the notification message</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//div[@data-gadget-scope=\'notification\' and @class=\'visible\']//button[@class=\'%(class)s\' and text()=\'%(text)s\']' % notification_configuration"></td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td tal:content="python: '//div[@data-gadget-scope=\'notification\' and @class=\'visible\']//button[@class=\'%(class)s\' and text()=\'%(text)s\']' % notification_configuration"></td>
<td></td>
</tr>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="click_save">
<!-- Macro copied from renderjs tests, which is bad but it can be dropped later -->
<tr>
<td colspan="3"><b>Click on Save</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>waitForElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Save'][contains(@class, "ui-disabled")]</td>
<td></td>
</tr>
<tr>
<td>assertElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Save'][contains(@class, "ui-disabled")]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//button[@data-i18n='Save']</td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="save">
<!-- Macro copied from renderjs tests, which is bad but it can be dropped later -->
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_save" />
<tr>
<td colspan="3"><b>Save</b></td>
</tr>
<!-- First loader while calling Base_edit, we assert it is not present, because response is very fast. -->
<tr>
<td>waitForElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//h1//*[contains(@class, "ui-icon-spinner")]</td>
<td></td>
</tr>
<tr>
<td>assertElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_slapos_header.html')]//h1//*[contains(@class, "ui-icon-spinner")]</td>
<td></td>
</tr>
<!-- Save Button is disabledn but it is sooo fast that selenium don't arrive on time. -->
<tr>
<td>verifyElementNotPresent</td>
<td>//button[@data-i18n="Save"][contains(@class, "ui-disabled")]</td>
<td></td>
</tr>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '数据已更新。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>verifyElementPresent</td>
<td>//button[@data-i18n="Save"][contains(@class, "ui-icon-check")]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="wait_for_listbox_loaded">
<tr>
<td colspan="3"><b>Wait for the listbox to be loaded</b></td>
</tr>
<tr>
<td>waitForElementNotPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1//span[contains(@class, "ui-icon-spinner")]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//nav//span[@class="ui-disabled"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//nav//span[@class="ui-disabled"]</td>
<td></td>
</tr>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="create_simple_project">
<tr>
<td colspan="3"><p>Create Simple Project</p></td>
</tr>
<tal:block define="menu_item python: '项目'; header menu_item; menu_item_data python:'Projects'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="title python: '%s' % document_title; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/add_simple_with_title" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的项目已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tal:block define="header python: '项目 : %s' % document_title; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="create_simple_network">
<tr>
<td colspan="3"><p>Create Simple Network</p></td>
</tr>
<tal:block define="menu_item python: '网络'; header menu_item; menu_item_data python:'Networks'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="title python: '%s' % document_title; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/add_simple_with_title" />
</tal:block>
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '已创建新的网络。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_content_loaded" />
<tal:block define="header python: 'Computer Network :%s' % document_title; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td colspan="3"><p></p></td>
</tr>
</tal:block>
<tal:block metal:define-macro="create_simple_computer">
<tr>
<td colspan="3"><p>Create Simple Computer</p></td>
</tr>
<tal:block define="menu_item python: '服务器'; header menu_item; menu_item_data python: 'Servers'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_zh" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '新的计算机'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//input[@id="title"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@id="title"]</td>
<td tal:content="python: '%s' % document_title">TEST-SLAPOSJS-COMPUTER 0</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的计算机已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//a[text()=" Click here to access your computer "]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="certificate"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="key"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[text()=" Click here to access your computer "]</td>
<td></td>
</tr>
<tal:block define="header python: 'Computer: %s' % document_title; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="create_user_organisation">
<tr>
<td colspan="3"><b> Create simple organisation </b> </td>
</tr>
<tal:block define="person_name python: 'Demo User Functional'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/access_menu_item_account" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(1)', 'footer': '1 记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block tal:define="pagination_configuration python: {'header': '(0)', 'footer': '没有记录'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/check_listbox_pagination_text" />
</tal:block>
<tal:block define="menu_action python: 'Add Organisation'">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_submenu_action" />
</tal:block>
<tal:block define="header python: '新组织'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>type</td>
<td>//input[@name='title']</td>
<td tal:content="python: '%s' % (document_title)">DOCUMENT TITLE</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/click_proceed" />
<tal:block tal:define="notification_configuration python: {'class': 'success',
'text': '新的组织已创建。'}">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_notification" />
</tal:block>
<tal:block define="header python: '组织 : %s' % (document_title); ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="select_software_product">
<tr>
<td colspan="3"><b> Select a Software Product</b></td>
</tr>
<tal:block define="header python: '1/3 选择一个软件'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件产品')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>waitForElementPresent</td>
<td tal:content="python: '//td/a[text()=\'%s\']' % software_product"></td>
<td></td>
</tr>
<tr>
<td>click</td>
<td tal:content="python: '//td/a[text()=\'%s\']' % software_product"></td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="select_software_release">
<tr>
<td colspan="3"><b> Select a Software Release</b></td>
</tr>
<tal:block define="header python: '2/3 选择一个发布'; ">
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/assert_page_header" />
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_field_listbox.html')]//h1[contains(text(), '软件发布')]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSZHCommonTemplate/macros/wait_for_listbox_loaded" />
<tr>
<td>click</td>
<td tal:content="python: '//td/a[text()=\'%s\']' % software_release"></td>
<td></td>
</tr>
</tal:block>
</tal:block>
\ No newline at end of file
##############################################################################
#
# Copyright (c) 2002-2018 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
##############################################################################
import unittest
from erp5.component.test.SlapOSTestCaseMixin import SlapOSTestCaseMixin
from Products.ERP5Type.tests.ERP5TypeFunctionalTestCase import ERP5TypeFunctionalTestCase
class TestSlapOSUIZHHalStyle(SlapOSTestCaseMixin, ERP5TypeFunctionalTestCase):
foreground = 0
run_only = "slaposjs_zh_zuite"
def afterSetUp(self):
ERP5TypeFunctionalTestCase.afterSetUp(self)
SlapOSTestCaseMixin.afterSetUp(self)
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestSlapOSUIZHHalStyle))
return suite
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Test Component" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>testFunctionalSlapOSUIZHHalStyle</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>test.erp5.testFunctionalSlapOSUIZHHalStyle</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Test Component</string> </value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>erp5</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>validate</string> </value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>validated</string> </value>
</item>
</dictionary>
</list>
<none/>
</tuple>
</pickle>
</record>
</ZopeData>
erp5_ui_test_core
\ No newline at end of file
Unit test for SlapOS UI 2.0 in Chinese
\ No newline at end of file
GPL
\ No newline at end of file
portal_tests/slaposjs_zh_zuite
portal_tests/slaposjs_zh_zuite/**
\ No newline at end of file
slapos_zh_ui_test
\ No newline at end of file
test.erp5.testFunctionalSlapOSUIZHHalStyle
\ No newline at end of file
slapos_jio_zh_ui_test
\ No newline at end of file
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