From 54950c6cf03f5ddecbb10cfa8d48bd85b56cbbb0 Mon Sep 17 00:00:00 2001 From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Date: Fri, 5 Apr 2013 18:09:40 +0900 Subject: [PATCH] Implement Extensions for Functional Test to be able to check whether a report has been generated. --- .../ExtensionTemplateItem/ERP5Zuite.py | 31 +++++++++++++++++++ .../Zuite_isReportGenerated.xml | 28 +++++++++++++++++ .../Zuite_prepareReportDirectory.xml | 28 +++++++++++++++++ bt5/erp5_ui_test_core/bt/change_log | 3 ++ bt5/erp5_ui_test_core/bt/revision | 2 +- .../tests/ERP5TypeFunctionalTestCase.py | 11 ++++++- 6 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_isReportGenerated.xml create mode 100644 bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_prepareReportDirectory.xml diff --git a/bt5/erp5_ui_test_core/ExtensionTemplateItem/ERP5Zuite.py b/bt5/erp5_ui_test_core/ExtensionTemplateItem/ERP5Zuite.py index 6561283b1e..0eaee8541c 100644 --- a/bt5/erp5_ui_test_core/ExtensionTemplateItem/ERP5Zuite.py +++ b/bt5/erp5_ui_test_core/ExtensionTemplateItem/ERP5Zuite.py @@ -40,3 +40,34 @@ def appendTestToWebPage(text, test_text): else: root.replace(table_list[0], tutorial_test) return lxml.html.tostring(root).replace('\n','').replace("\'","'") + +from App.config import getConfiguration +import os + +def prepareReportDirectory(self, expected_filename): + """ + Remove existing report with the given filename if any. This must be called + before a report button is clicked + """ + filename_path = os.path.join(getConfiguration().instancehome, 'var', + expected_filename) + + if os.path.exists(filename_path): + os.remove(filename_path) + + return 'Done' + +def isReportGenerated(self, expected_filename): + """ + Check that the report has been generated. Firefox will not prompt for PDF + files as defined in ERP5Type.tests.ERP5TypeFunctionalTestCase.Firefox in + getPrefJs() method + """ + filename_path = os.path.join(getConfiguration().instancehome, 'var', + expected_filename) + + if os.path.isfile(filename_path): + os.remove(filename_path) + return 'Done' + + return 'Report not generated!' diff --git a/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_isReportGenerated.xml b/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_isReportGenerated.xml new file mode 100644 index 0000000000..ad21402d3b --- /dev/null +++ b/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_isReportGenerated.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>isReportGenerated</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5Zuite</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Zuite_isReportGenerated</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Zuite_isReportGenerated</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_prepareReportDirectory.xml b/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_prepareReportDirectory.xml new file mode 100644 index 0000000000..c9fe46a6b6 --- /dev/null +++ b/bt5/erp5_ui_test_core/SkinTemplateItem/portal_skins/erp5_ui_test_core/Zuite_prepareReportDirectory.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>prepareReportDirectory</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>ERP5Zuite</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Zuite_prepareReportDirectory</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Zuite_prepareReportDirectory</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_ui_test_core/bt/change_log b/bt5/erp5_ui_test_core/bt/change_log index 0bd7232b36..872b1540fa 100644 --- a/bt5/erp5_ui_test_core/bt/change_log +++ b/bt5/erp5_ui_test_core/bt/change_log @@ -1,3 +1,6 @@ +2013-04-05 arnaud.fontaine +* Implement Extensions to be able to check whether a report has been generated. + 2011-10-11 Xavier * Selenium core updated (2.6.0) * captureEntirePageScreenshot is available to take screenshots with Selenium (Firefox only) diff --git a/bt5/erp5_ui_test_core/bt/revision b/bt5/erp5_ui_test_core/bt/revision index 2b82dfea30..eebd1d10b6 100644 --- a/bt5/erp5_ui_test_core/bt/revision +++ b/bt5/erp5_ui_test_core/bt/revision @@ -1 +1 @@ -60 \ No newline at end of file +61 \ No newline at end of file diff --git a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py index e0e455418d..4c2fdd7ba5 100644 --- a/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py +++ b/product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py @@ -187,6 +187,7 @@ class Firefox(Browser): os.environ['MOZ_NO_REMOTE'] = '0' def getPrefJs(self): + from App.config import getConfiguration return """ // Don't ask if we want to switch default browsers user_pref("browser.shell.checkDefaultBrowser", false); @@ -224,7 +225,15 @@ user_pref("capability.principal.codebase.p1.subjectName", ""); // For debugging, do not waste space on screen user_pref("browser.tabs.autoHide", true); -""" % (self.host, self.port) + +// This is required to download reports without requiring user interaction +// (See ERP5UpgradeUtils for corresponding Extensions) +user_pref("browser.download.folderList", 2); +user_pref("browser.download.manager.showWhenStarting", false); +user_pref("browser.download.dir", "%s"); +user_pref("browser.helperApps.neverAsk.saveToDisk", "application/pdf"); +""" % (self.host, self.port, + os.path.join(getConfiguration().instancehome, 'var')) class PhantomJS(Browser): def _createRunJS(self): -- 2.30.9