Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
erp5
Commits
2f5f336f
Commit
2f5f336f
authored
Feb 06, 2020
by
Gabriel Monnerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_document_scanner_ui_test: Improve test and introduce test to check memory exhaust on mobile
parent
f22a6227
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
873 additions
and
42 deletions
+873
-42
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocument.zpt
...renderjs_erp5_document_scanner_zuite/testScanDocument.zpt
+119
-41
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentOnMobile.xml
..._erp5_document_scanner_zuite/testScanDocumentOnMobile.xml
+58
-0
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentOnMobile.zpt
..._erp5_document_scanner_zuite/testScanDocumentOnMobile.zpt
+346
-0
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentPreference.xml
...rp5_document_scanner_zuite/testScanDocumentPreference.xml
+58
-0
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentPreference.zpt
...rp5_document_scanner_zuite/testScanDocumentPreference.zpt
+85
-0
bt5/erp5_document_scanner_ui_test/TestTemplateItem/portal_components/test.erp5.testDocumentScanner.py
...teItem/portal_components/test.erp5.testDocumentScanner.py
+78
-0
bt5/erp5_document_scanner_ui_test/TestTemplateItem/portal_components/test.erp5.testDocumentScanner.xml
...eItem/portal_components/test.erp5.testDocumentScanner.xml
+127
-0
bt5/erp5_document_scanner_ui_test/bt/template_test_id_list
bt5/erp5_document_scanner_ui_test/bt/template_test_id_list
+2
-1
No files found.
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocument.zpt
View file @
2f5f336f
...
...
@@ -68,11 +68,7 @@
<td>
field_your_title
</td>
<td>
Test Scan Document
<span
tal:replace=
"python: DateTime().ISO()"
></span></td>
</tr>
<!--tr>
<td>type</td>
<td>field_your_reference</td>
<td>TESTSCANDOCUMENT<span tal:replace="python: DateTime().ISO()"></span></td>
</tr-->
<tr>
<td>
type
</td>
<td>
field_your_language
</td>
...
...
@@ -95,7 +91,7 @@
</tr>
<div
tal:repeat=
"item python:range(2)"
>
<!-- Click on Capture -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
...
...
@@ -106,11 +102,17 @@
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@class="cropper-wrap-box"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="reset-btn ui-btn-icon-left ui-icon-times"]
</td>
<td></td>
</tr>
<!-- Click on Delete -->
<tr>
<td>
click
</td>
<td>
//button[@class="reset-btn ui-btn-icon-left ui-icon-times"]
</td>
...
...
@@ -121,6 +123,7 @@
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<!-- Click on Capture again -->
<tr>
<td>
click
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
...
...
@@ -131,42 +134,128 @@
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<!-- Click on Confirm -->
<tr>
<td>
click
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'Captured'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<!-- wait upload starts -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
</div>
<!-- wait upload finish -->
<tr>
<td>
storeValue
</td>
<td>
//
input[@id="field_your_active_process_url
"]
</td>
<td>
active_process_url
</td>
<td>
waitForElementNotPresent
</td>
<td>
//
button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner
"]
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'The document is being created in background.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/erp5/Base_assertActiveProcessHasOneImage?active_process_url=${active_process_url}
</td>
<td>
assertElementPresent
</td>
<td>
//button[@class="new-btn ui-btn-icon-left ui-icon-plus" and @disabled]
</td>
<td></td>
</tr>
<!-- check if first image exists -->
<tr>
<td>
assertTextPresent
</td>
<td>
OK
</td>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="0" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- check if second image exists -->
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="1" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- check if third image does not exists -->
<tr>
<td>
assertElementNotPresent
</td>
<td>
//img[@data-page="2" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- open first image -->
<tr>
<td>
click
</td>
<td>
//img[@data-page="0" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- check if delete button appears -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="delete-btn ui-btn-icon-left ui-icon-times"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementNotPresent
</td>
<td>
//button[@class="new-btn ui-btn-icon-left ui-icon-plus" and @disabled]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//button[@class="new-btn ui-btn-icon-left ui-icon-plus"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@class="cropper-wrap-box"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<!-- Click on Confirm -->
<tr>
<td>
click
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="2" and @class="show-img"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementNotPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'The document is being created in background.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/wait_for_activities"
/>
...
...
@@ -215,12 +304,12 @@
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
of
2
</td>
<td>
of
3
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
of
2
</td>
<td>
of
3
</td>
<td></td>
</tr>
<tr>
...
...
@@ -229,17 +318,6 @@
<td></td>
</tr>
<!--tr>
<td>open</td>
<td>${base_url}/erp5/Base_removeActiveProcessFromFileSystem?active_process_url=${active_process_url}</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>Done</td>
<td></td>
</tr-->
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentOnMobile.xml
0 → 100644
View file @
2f5f336f
<?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>
testScanDocumentOnMobile
</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>
Test memory exhausted issue on mobile (expected failure)
</unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentOnMobile.zpt
0 → 100644
View file @
2f5f336f
<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 Scan Document (expected failure)
</title>
</head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/init"
/>
<tr><td
rowspan=
"1"
colspan=
"3"
>
Test Scan Document (expected failure)
</td></tr>
</thead><tbody>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/wait_for_activities"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/renderjs_runner/
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Modules'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Accounting'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Add'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_header_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tr>
<td>
select
</td>
<td>
id=field_your_select_action
</td>
<td>
Sale Invoice Transaction
</td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'Object created.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tr>
<td>
storeLocation
</td>
<td>
sale_invoice_transaction_url
</td>
<td></td>
</tr>
<tal:block
tal:define=
"click_configuration python: {'text': 'Actions'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_header_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Scan Document'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tr>
<td>
type
</td>
<td>
field_your_title
</td>
<td>
Test Scan Document
<span
tal:replace=
"python: DateTime().ISO()"
></span></td>
</tr>
<tr>
<td>
type
</td>
<td>
field_your_language
</td>
<td>
en
</td>
</tr>
<tr>
<td>
type
</td>
<td>
field_your_version
</td>
<td>
001
</td>
</tr>
<tr>
<td>
select
</td>
<td>
field_your_publication_state
</td>
<td>
Released
</td>
</tr>
<tr>
<td>
type
</td>
<td>
field_your_description
</td>
<td>
DESC
<span
tal:replace=
"python: DateTime().ISO()"
></span></td>
</tr>
<div
tal:repeat=
"item python:range(5)"
>
<!-- Click on Capture -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@class="cropper-wrap-box"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="reset-btn ui-btn-icon-left ui-icon-times"]
</td>
<td></td>
</tr>
<!-- Click on Delete -->
<tr>
<td>
click
</td>
<td>
//button[@class="reset-btn ui-btn-icon-left ui-icon-times"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<!-- Click on Capture again -->
<tr>
<td>
click
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<!-- Click on Confirm -->
<tr>
<td>
click
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<!-- wait upload starts -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
</div>
<!-- wait upload finish -->
<tr>
<td>
waitForElementNotPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementPresent
</td>
<td>
//button[@class="new-btn ui-btn-icon-left ui-icon-plus" and @disabled]
</td>
<td></td>
</tr>
<!-- check if first image exists -->
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="0" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- check if second image exists -->
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="1" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- check if third image does not exists -->
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="2" and @class="show-img"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="3" and @class="show-img"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="4" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- open first image -->
<tr>
<td>
click
</td>
<td>
//img[@data-page="0" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- open first image again -->
<tr>
<td>
click
</td>
<td>
//img[@data-page="0" and @class="show-img"]
</td>
<td></td>
</tr>
<!-- check if delete button appears -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="delete-btn ui-btn-icon-left ui-icon-times"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementNotPresent
</td>
<td>
//button[@class="new-btn ui-btn-icon-left ui-icon-plus" and @disabled]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//button[@class="new-btn ui-btn-icon-left ui-icon-plus"]
</td>
<td></td>
</tr>
<!-- Switch camera -->
<tr>
<td>
click
</td>
<td>
//button[@class="change-camera-btn ui-icon-refresh ui-btn-icon-left"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@class="cropper-wrap-box"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<!-- Click on Confirm -->
<tr>
<td>
click
</td>
<td>
//button[@class="confirm-btn ui-btn-icon-left ui-icon-check"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="take-picture-btn ui-btn-icon-left ui-icon-circle"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
<tr>
<td>
assertElementPresent
</td>
<td>
//img[@data-page="5" and @class="show-img"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementNotPresent
</td>
<td>
//button[@class="btn-thumbnail ui-btn-icon-top ui-icon-spinner"]
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'The document is being created in background.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/wait_for_activities"
/>
<tr>
<td>
open
</td>
<td>
${sale_invoice_transaction_url}
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Documents'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded"
/>
<tal:block
tal:define=
"pagination_configuration python: {'header': '(1)', 'footer': '1 Records'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/check_listbox_pagination_text"
/>
</tal:block>
<tal:block
tal:define=
"click_configuration python: {'text': 'PDF'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Preview'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_panel_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<!-- Wait for pdfjs to be loaded -->
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@data-gadget-scope="editor"]//iframe
</td>
<td></td>
</tr>
<tr>
<!-- pdfjs iframe -->
<td>
selectFrame
</td>
<td>
//div[@data-gadget-scope="editor"]//iframe
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//body
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
of 6
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
of 6
</td>
<td></td>
</tr>
<tr>
<td>
selectFrame
</td>
<td>
relative=top
</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentPreference.xml
0 → 100644
View file @
2f5f336f
<?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>
testScanDocumentPreference
</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>
Test Scan Document Preference
</unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_document_scanner_ui_test/PathTemplateItem/portal_tests/renderjs_erp5_document_scanner_zuite/testScanDocumentPreference.zpt
0 → 100644
View file @
2f5f336f
<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 Scan Document (expected failure)
</title>
</head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/init"
/>
<tr><td
rowspan=
"1"
colspan=
"3"
>
Test Scan Document (expected failure)
</td></tr>
</thead><tbody>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_waitForActivities
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/renderjs_runner/
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Preferences
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//a[text()="Preferences"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//dd/a[text()="Document Scanner"]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//dd/a[text()="Document Scanner"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForTextPresent
</td>
<td>
Document Scanner
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//input[@id="field_my_preferred_image_scanner_conversion_brightness"]
</td>
<td></td>
</tr>
<tr>
<td>
click
</td>
<td>
//input[@id="field_my_preferred_image_scanner_conversion_enable_greyscale"]
</td>
<td></td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@id="field_my_preferred_image_scanner_conversion_brightness"]
</td>
<td>
20
</td>
</tr>
<tr>
<td>
type
</td>
<td>
//input[@id="field_my_preferred_image_scanner_conversion_contrast"]
</td>
<td>
20
</td>
</tr>
<tr>
<td>
click
</td>
<td>
//button[@name="submit"]
</td>
<td></td>
</tr>
<tr>
<td>
waitForElementPresent
</td>
<td>
//div[@class="visible"]/button[text()="Data updated."]
</td>
<td></td>
</tr>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_document_scanner_ui_test/TestTemplateItem/portal_components/test.erp5.testDocumentScanner.py
0 → 100644
View file @
2f5f336f
##############################################################################
#
# Copyright (c) 2002-2020 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
json
from
DateTime
import
DateTime
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
class
DocumentScanner
(
ERP5TypeTestCase
):
"""
Document Scanner Test Case
"""
def
getTitle
(
self
):
return
"Test Document Scanner"
def
afterSetUp
(
self
):
"""
This is ran before anything, used to set the environment
"""
id_list
=
[
o
.
getId
()
for
o
in
self
.
portal
.
portal_catalog
(
reference
=
"document_scanner_js"
,
portal_type
=
"Active Process"
)]
if
id_list
:
self
.
portal
.
portal_activities
.
manage_delObjects
(
ids
=
id_list
)
self
.
tic
()
def
test_remove_outdated_active_process
(
self
):
data_dict
=
json
.
loads
(
self
.
portal
.
Base_getDefaultBackendDataAsJSON
())
self
.
assertEqual
(
data_dict
[
"image_list"
],
[])
active_process_url
=
data_dict
[
"active_process"
]
active_process
=
self
.
portal
.
restrictedTraverse
(
str
(
active_process_url
))
self
.
assertEqual
(
active_process
.
getResultList
(),
[])
data_png
=
(
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA"
"AEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgm"
"WQ0AAAAASUVORK5CYII="
)
response
=
self
.
portal
.
Base_storeNewImageCropped
(
data_png
,
active_process
.
getRelativeUrl
())
first_uuid
=
json
.
loads
(
response
)[
"uuid"
]
self
.
assertIn
(
first_uuid
,
[
r
.
reference
for
r
in
active_process
.
getResultList
()])
response
=
self
.
portal
.
Base_storeNewImageCropped
(
data_png
,
active_process
.
getRelativeUrl
())
second_uuid
=
json
.
loads
(
response
)[
"uuid"
]
self
.
assertIn
(
second_uuid
,
[
r
.
reference
for
r
in
active_process
.
getResultList
()])
self
.
assertIn
(
first_uuid
,
[
r
.
reference
for
r
in
active_process
.
getResultList
()])
self
.
tic
()
req
=
self
.
portal
.
erp5_sql_connection
.
manage_test
req
(
"update catalog set modification_date='{date}' where uid={uid}"
.
format
(
date
=
(
DateTime
()
-
6
).
toZone
(
'UTC'
),
uid
=
active_process
.
getUid
()))
self
.
portal
.
portal_alarms
.
remove_outdated_active_process
.
activeSense
()
self
.
tic
()
self
.
assertNotIn
(
active_process
.
getId
(),
list
(
self
.
portal
.
portal_activities
.
objectIds
()))
\ No newline at end of file
bt5/erp5_document_scanner_ui_test/TestTemplateItem/portal_components/test.erp5.testDocumentScanner.xml
0 → 100644
View file @
2f5f336f
<?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>
testDocumentScanner
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
test.erp5.testDocumentScanner
</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.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<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>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_document_scanner_ui_test/bt/template_test_id_list
View file @
2f5f336f
test.erp5.testRenderJSDocumentScanner
\ No newline at end of file
test.erp5.testRenderJSDocumentScanner
test.erp5.testDocumentScanner
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment