{ "info": { "author": "Tres Seaver", "author_email": "tseaver@palladion.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Zope2", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Programming Language :: Python", "Topic :: Software Development :: Testing" ], "description": "Zelenium: Selenium Tests on Zope2\n=================================\n\nOverview\n--------\n\nThis product allows developers to create TTW Selenium test suites\ninside their Zope instance, in order to do browser-based functional\ntesting of their site.\n\n\nPrerequisites\n-------------\n\n- A working Zope2 installation. See `Installing Zope\n `_ for directions\n on getting Zope 2.12 set up in a ``virtualenv``, or `Installing Zope\n using zc.buildout\n `_ for\n installing it in a buildout.\n\n\nInstalling the Product\n----------------------\n\nIf you're using buildout, add ``Products.Zelenium`` to the ``eggs =``\nparameter of the instance part.\n\nIf using the ``virtualenv`` approach to developing Zope2 software, add\n``Products.Zelenium`` to the ``install_requires`` parameter in the\n``setup.py`` of your package or just run ``bin/easy_install Products.Zelenium``\nafter installing Zope2.\n\nFinally, if you're using the traditional INSTANCE_HOME installation:\n\n 1. Unpack the tarball in a temporary location.\n\n 2. Copy or move the ``Zelenium`` directory to the ``Products`` directory\n of your INSTANCE_HOME.\n\n 3. Restart Zope.\n\nUsing Zelenium\n--------------\n\nYou can add a ``Zuite`` object at any location within your Zope\nsite. It behaves as a standard ordered folder, with a couple of \ndifferences:\n\n- It's ``index_html`` is the \"TestRunner.html\" view familiar\n from Selenium.\n\n- It derives the test suite (in the upper left corner iframe)\n from all OFS.Image.File objects whose names start with ``test``.\n You can use the OrderedFolder support to modify the order in\n which the test case files are run.\n\n- It provides a \"Zip\" action, which allows you to export the\n test suite, all test cases, and the supporting Selenium\n Javascript / CSS files as a single, self-contained zipfile.\n\n\nReporting Bugs against Zelenium\n-------------------------------\n\nPlease use `Launchpad `_ to report bugs\nyou find against the product, as well as to submit patches, request\nfeatures, etc.\n\n\nAdding Tests\n------------\n\nTests are just ``File`` instances whose names begin with ``test``.\nThey should have a content type of ``text/html``, and should contain\na table which defines the steps which make up the test case.\n\nSee http://selenium.thoughtworks.com/testrunner.html for documentation\non the table structure and the Selenese language.\n\n\nUsing Additional Metatypes as Test Cases\n----------------------------------------\n\nOn the \"Properties\" tab of your test suite, you can add / modify\nthe list of meta_types which the suite will allow as test cases.\nAdding \"Script (Python)\", for instance, allows you to define\ntest cases in PythonScripts.\n\n\nNesting Test Suites\n-------------------\n\nEach test suite automatically includes the test cases of any\nsuite it contains. You can take advantage of this feature to\norganize your test cases in a hierarchy, running them in separate\nsegments, or all at once.\n\n\nIncluding Tests from the Filesystem\n-----------------------------------\n\nTest suites now have a property, ``filesystem_path``; if set, the\nsuite will recursively load testcases from files in / under the\ndirectory pointed to by that path.\n\nThe list of files to be included is computed via the following\nrules:\n\n- If the testsuite_name property contains the name of a file that\n exists in the directory, it is presumed to contain a list of\n files containing tests, one per line. The test cases will be\n presented in the order indicated in the file, and test cases\n may be included more than once.\n\n- If the testsuite_name property is empty but the directory\n contains a file, ``.objects``, it is presumed to\n contain a list of files to be included, one per line; only those\n files / subdirectories (if present) will be included. In this case,\n the test cases will be presented in the order indicated in the file,\n followed by any test cases from subdirectories.\n\n- Otherwise, if the suite's property, ``filename_glob`` is non-empty,\n it will be expanded (via Python's ``glob.glob``) to compute the list\n of filenames. The test cases will be presented in alphabetical\n order, followed by any test cases from subdirectories.\n\n- Otherwise, any file will be considered a testcase. The test cases\n will be presented in alphabetical order, followed by any test cases\n from subdirectories.\n\n\nExporting an Archive\n--------------------\n\nOn the \"Zip\" tab, supply a filename and click the \"Download\" button.\nThe Zuite object will construct a zip file with the following\ncontents:\n\n``index.html``\n the \"TestRunner.html\" framework page\n\n``TestSuite.html``\n the list of test case files (rendered as static HTML)\n\n``test*``\n your test case files (appending ``.html`` if the IDs do not have\n extensions)\n\nThe archive will also contain each of the supporting ``.js`` and ``.css``\nfiles which drive the browserbot.\n\n\nCreating a Snapshot\n-------------------\n\nOn the \"Zip\" tab, supply a filename and click the \"Download\" button.\nThe Zuite object will construct a zip file with the same contents\ndescribed above, and then save it as a File object in its own contents.\n\n\nGenerating Testcases using tcpwatch\n-----------------------------------\n\n1. Download the ``tcpwatch`` product from Shane Hathaway's site:\n\n http://hathawaymix.org/Software/TCPWatch\n\n2. Unpack and run tcpwatch in its \"HTTP proxy\" mode, with recoring\n turned on. E.g., the following command runs the proxy on\n port 9999, recording the request / response data to the directory\n ``/tmp/recorded_scenario``::\n\n $ python /path/to/tcpwatch/ tcpwatch.py \\\n -p 9999 -r /tmp/recorded_scenario \n\n3. Configure your browser to use an HTTP proxy on localhost, port 9999.\n\n4. Click through your site, exercising the features you are testing.\n\n5. Stop the proxy. Run the ``generator.py`` script, pointing to the\n directory where tcpwatch was recording::\n\n $ python /path/to/Zelenium/generator.py \\\n --logfile-directory=/tmp/recorded_scenario \\\n --output-file=test_case_name.html\n\n6. Edit the generated test case, removing / correcting the various\n steps.\n\n7. Upload the test case to a Zelenium Zuite and run it.\n\n\nCapturing Results from the Test Run\n-----------------------------------\n\nSelenium has a feature which allows the testrunner to upload\nresult data from an automated test run to the server.\n\nInvoke the test suite from your browser as usual, but append the\nquery string ``?auto=true``, to the URL, e.g.:\n\n http://localhost:8080/test_suite?auto=true\n\nSelenium will run all test cases, and then upload its result data\nto the ``postResults`` method of your suite. (Note that you no longer\nneed the ``postResults`` PythonScript in the root of your site, because\nthe latest version of Selenium posts to that name relative to the\ntest suite).\n\n\nZelenium Product Changelog\n==========================\n\n1.0.3 (2010-11-10)\n------------------\n\n- Remove ``setuptools_bzr`` requirement, since that package was causing\n installs to break. Instead, add a replacement ``sdist`` command which\n aborts if ``setuptools_bzr`` cannot be imported.\n\n\n1.0.2 (2010-05-05)\n------------------\n\n- Add setuptools_bzr as a setup requirement to avoid future brown-bag\n releases.\n\n- Fix rendering of results views which contain non-ASCI text. Thanks to\n Leo Rochael for the test and the fix. Fixes lp:575415.\n\n- Updated README to indicate Zope2 prerequisite, and point to its installation\n documentation.\n\n\n1.0.1 (2010-04-07)\n------------------\n\n- Packaging update only, fixin brown-bag release (minus metadata files).\n Also, note move of bug tracker from www.zope.org to Launchpad.\n\n\n1.0 (2010-04-07)\n----------------\n\n- Eggified, tested and removed deprecations under Zope 2.12.\n\n- Moved from ``svn.zope.org`` to Launchpad.\n\n- Updated included selenium to selenium-core 0.8.3.\n\n- Applied a fix from Rob Miller to make Zelenium Zuite objects functional\n in the presence of ``five:traverse``, making ``index_html`` the explicit\n default view.\n\n- Corrected the documentation in the README for capturing results of a test\n run (``auto=1`` -> ``auto=true``, in line with the Selenium documentation).\n Thanks to Yoshinori Okuji for pointing this out.\n\n\n0.8 (2006/05/16)\n----------------\n\n- Fixed unit tests by wrapping filesystem objects that are rendered\n during ZIP file creation - code in OFS.Image wants to acquire\n REQUEST and use RESPONSE.\n\n- Found how to make the dependency on ExternalEditor optional (thanks\n to Andreas Jung for the bug report).\n\n- Stripped empty filenames out of manifest, to avoid infinite\n recursion.\n\n- Added the testsuite_name property that allows multiple test\n suites to be built up from test cases within a single filesystem\n directory.\n\n- Upgrade to selenium version 0.6\n\n- Suites now recurse through all \"folderish\" subobjects, looking\n for tests (allows, for instance, tests to be loaded from disk via\n CMF's FileSystemDirectoryView). Thanks to Malcom Cleaton for the\n patch!\n\n- Define zelenium_globals in __init__.py to be able to\n register the ``selenium`` directory for use as a CMF skin directory.\n\n- If debug-mode is set to \"on\" in zope.conf, filesystem-based testcases\n files are reloaded every time they are used, to ease development of\n filesystem-based test suites. This behavior emulates what the CMF\n Filesystem Directory Views do with debug-mode on.\n\n- Moved repository to Subversion:\n svn+ssh://svn.zope.org/repos/main/Zelenium/\n\n\n0.7 (2005/06/07)\n----------------\n\n- Upgrade to use the Selenium \"core application\" from Selenium 0.4.0.\n See http://selenium.thoughtworks.com/release-notes.html for a summary\n of changes.\n\n.. note::\n\n The semantics of ``click`` have changed; that command\n no longer waits by default, and the ``nowait`` modifier is no longer\n meaningful. Use ``clickAndWait`` to get the desired semantics.\n\n\n0.6 (2005/05/09)\n----------------\n\n- Add ability to suppress inclusion of Selenium support files in\n snapshot / download.\n\n- Add support for returning testcases from a mapped directory path,\n including recursion through subdirectories of that path. Currently,\n the implementation has the following issues:\n\n o It only creates OFS.Image.File objects for test cases (no templates,\n scripts, etc.)\n\n- Add unit tests for Zuite.__getitem__ behavior, including support files.\n\n\n0.5.1 (2005/05/07)\n------------------\n\n- Make passing / failing test cases in results view more obvious in\n printed representation by adding icons. N.B.: at the moment, we do\n this by sniffing the HTML of the test case for the \"pink\" backgrounds.\n\n- Apply patch from the selenium-devel list to fix regression in\n testcase HTML extraction in ``postTestResults``.\n\n- Make the posted results folder into its own class, derived from\n Folder (moving the template out to a PageTemplateFile).\n\n- Further repaired recursive ZIPfile generation, including normalizing\n URLs in generated HTML.\n\n- Extended zuite unittests to test ``listTestCases`` and\n ``manage_createSnapshot``, as well as recursive ZIPfile generation.\n\n\n0.5 (2005/05/04)\n----------------\n\n- Updated to use the \"TestRunner core\" from Selenium version 0.3.0.\n See http://selenium.thoughtworks.com/release-notes.html for more\n information.\n\n- Add unit tests for Zuite class.\n\n- Make ZIPfile generation work with nested suites.\n\n\n0.4.1 (2005/05/02)\n------------------\n\n- Repair breakage of ExternalEditor link in ``manage_main``.\n\n- Compensate in display of test tables for non-padded integers\n in the IDs (make them sort properly).\n\n\n0.4 (2005/04/27)\n----------------\n\n- Make Zuite instances recursively include their Zuite children's\n test cases (to allow easier organization of the test cases in a\n hierarchy).\n\n- Allow indiviual zuites to override the list of metatypes which\n can be test cases, via a new ``testcase_metatypes`` property.\n\n- Force Zuite objects to show order support, even in the presence of\n ExternalEditor, whose monkey patching seems to trip it up. Surface\n the EE icon, if the product is available\n\n Note: we are *forking* OFS/dtml/main.dtml and the version in\n ExteranalEditor/manage_main.dtml to surface order support, which\n is a pretty brutal hack. We should probably get ExteranalEditor\n fixed, instead, and rip out the forked copy.\n\n\n0.3.1 (2005/04/26)\n------------------\n\n- Record server-side data during ``postResults``: Zope version string,\n product names and versions.\n\n- Captured additional request parameters in ``postResults``: user agent,\n HTTP host, remote address).\n\n\n0.3 (2005/04/25)\n----------------\n\n- Added ``postResults`` handling code to capture results as a sub-\n folder of the suite.\n\n\n0.2.1 (2005/04/21)\n------------------\n\n- Correct the emitted HTML for input widgets (close the tr tag).\n\n- Fix unpack bug in code which punts on requests to \"foreign\" hosts.\n\n- Punt on handling XML-RPC requests (e.g., Epoz calls back to the\n server to run Tidy).\n\n\n0.2 (2005/04/20)\n----------------\n\n- Added script, ``generator.py``, to create Selenium testcase files\n from the request / response logfiles created by tcpwatch.\n\n- Allowed test cases to be PageTemplates, as well as Files, to permit\n indirecting through properties of the test suite (e.g., for\n user id / password).\n\n\n0.1 (2005/04/15)\n----------------\n\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/Products.Zelenium", "keywords": "selenium zope2", "license": "ZPL 2.1", "maintainer": null, "maintainer_email": null, "name": "Products.Zelenium", "package_url": "https://pypi.org/project/Products.Zelenium/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Products.Zelenium/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/Products.Zelenium" }, "release_url": "https://pypi.org/project/Products.Zelenium/1.0.3/", "requires_dist": null, "requires_python": null, "summary": "Run Selenium test suites from within Zope2", "version": "1.0.3" }, "last_serial": 804548, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "bda12a59f4ab99d60e96fbdcf88755eb", "sha256": "74f439fc40126176d69824b4fef94ae2e569fe383f24566c0eea7998faabab39" }, "downloads": -1, "filename": "Products.Zelenium-1.0.tar.gz", "has_sig": false, "md5_digest": "bda12a59f4ab99d60e96fbdcf88755eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19023, "upload_time": "2010-04-07T20:05:42", "url": "https://files.pythonhosted.org/packages/ae/40/646ac147a664b169e846631233f9ac17b55e200f9f873600c6e02b0b7225/Products.Zelenium-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8381d841aec00fd30ee6c60905bb902e", "sha256": "45871edd22476c6e7005d24a0fa7b2095cb44ee4b9e29d09501b618b8dbc7f85" }, "downloads": -1, "filename": "Products.Zelenium-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8381d841aec00fd30ee6c60905bb902e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1429873, "upload_time": "2010-04-08T03:59:57", "url": "https://files.pythonhosted.org/packages/0f/72/d3b4b0bef6349b514505982c29f6b8faf46a62e351544d42dc268fa6e4bb/Products.Zelenium-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "03b0e0e2dfda49732a482ab9c1445d3b", "sha256": "3a0d21ec785cf085d1a8a7fe9e020f5b082ab77b373340bd45832f8599f8fee1" }, "downloads": -1, "filename": "Products.Zelenium-1.0.2.tar.gz", "has_sig": false, "md5_digest": "03b0e0e2dfda49732a482ab9c1445d3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1424455, "upload_time": "2010-05-06T03:25:34", "url": "https://files.pythonhosted.org/packages/c0/bb/0d556d20e4590ccff49387ad183a2afc8f9639a99bc5c2f43a665be93627/Products.Zelenium-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "57e846e670c4ef139791a9bcbd51c240", "sha256": "0d9bf56da0e63f8c5f25af919ad87c2cf718ceef59f92af7c526d12c2562e1b0" }, "downloads": -1, "filename": "Products.Zelenium-1.0.3.tar.gz", "has_sig": false, "md5_digest": "57e846e670c4ef139791a9bcbd51c240", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1431995, "upload_time": "2010-11-10T18:46:45", "url": "https://files.pythonhosted.org/packages/d8/6f/c1cadc9cc2e1edf887cc8a5c5b7990be3948b6b207fc2a6a874307abdadd/Products.Zelenium-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "57e846e670c4ef139791a9bcbd51c240", "sha256": "0d9bf56da0e63f8c5f25af919ad87c2cf718ceef59f92af7c526d12c2562e1b0" }, "downloads": -1, "filename": "Products.Zelenium-1.0.3.tar.gz", "has_sig": false, "md5_digest": "57e846e670c4ef139791a9bcbd51c240", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1431995, "upload_time": "2010-11-10T18:46:45", "url": "https://files.pythonhosted.org/packages/d8/6f/c1cadc9cc2e1edf887cc8a5c5b7990be3948b6b207fc2a6a874307abdadd/Products.Zelenium-1.0.3.tar.gz" } ] }