[KSS-checkins] r49506 - kukit/kss.demo/trunk/kss/demo/browser
reebalazs at codespeak.net
reebalazs at codespeak.net
Fri Dec 7 13:35:28 CET 2007
Author: reebalazs
Date: Fri Dec 7 13:35:27 2007
New Revision: 49506
Added:
kukit/kss.demo/trunk/kss/demo/browser/kss_demo_suite.pt
kukit/kss.demo/trunk/kss/demo/browser/setDevMode.html
kukit/kss.demo/trunk/kss/demo/browser/setProdMode.html
Modified:
kukit/kss.demo/trunk/kss/demo/browser/configure.zcml
kukit/kss.demo/trunk/kss/demo/browser/kss_demo_index.pt
kukit/kss.demo/trunk/kss/demo/browser/registry.py
Log:
Hook upzelenium to the registry AND: make it accessable from demo index.
Modified: kukit/kss.demo/trunk/kss/demo/browser/configure.zcml
==============================================================================
--- kukit/kss.demo/trunk/kss/demo/browser/configure.zcml (original)
+++ kukit/kss.demo/trunk/kss/demo/browser/configure.zcml Fri Dec 7 13:35:27 2007
@@ -60,10 +60,24 @@
<!-- View for accessing the utility -->
<page
- for="*"
+ for="kss.demo.interfaces.ISimpleContent"
name="kss_demo_registry"
class=".registry.KSSDemoRegistryView"
- allowed_attributes="getSortedDemos getDemoGroups"
+ allowed_attributes="getSortedDemos getDemoGroups getSeleniumTests"
+ permission="zope.View"
+ />
+ <page
+ for="kss.demo.interfaces.ISimpleContent"
+ name="resource"
+ class=".registry.KSSDemoRegistryView"
+ attribute="getSeleniumTestResource"
+ permission="zope.View"
+ />
+ <page
+ for="kss.demo.interfaces.ISimpleContent"
+ name="zuite.html"
+ class=".registry.KSSDemoRegistryView"
+ attribute="getZuiteHomePage"
permission="zope.View"
/>
@@ -81,5 +95,29 @@
permission="demo.Manager"
/>
+ <!-- Resources for automated selenium tests -->
+
+ <page
+ for="kss.demo.interfaces.ISimpleContent"
+ template="kss_demo_suite.pt"
+ name="suite.html"
+ permission="zope.View"
+ />
+
+ <page
+ for="kss.demo.interfaces.ISimpleContent"
+ template="setDevMode.html"
+ name="setDevMode.html"
+ permission="zope.View"
+ />
+
+ <page
+ for="kss.demo.interfaces.ISimpleContent"
+ template="setProdMode.html"
+ name="setProdMode.html"
+ permission="zope.View"
+ />
+
+
</configure>
Modified: kukit/kss.demo/trunk/kss/demo/browser/kss_demo_index.pt
==============================================================================
--- kukit/kss.demo/trunk/kss/demo/browser/kss_demo_index.pt (original)
+++ kukit/kss.demo/trunk/kss/demo/browser/kss_demo_index.pt Fri Dec 7 13:35:27 2007
@@ -8,10 +8,20 @@
<body>
<h1>KSS demos</h1>
<p metal:use-macro="context/@@body_macros/kss_mode">Kss mode</p>
- <h2>Unit tests</h2>
+ <h2>Tests</h2>
<ul style="background-color:#E0E0C0;">
- <li><a href="@@kukittestsuite">Run all tests</a></li>
+ <li><a href="@@kukittestsuite">Run all ECMA unittests</a></li>
+ <li>Link to Zelenium object:
+ <form tal:attributes="action string:${context/absolute_url}/zuite.html">
+ <input type="text" name="path" value="zuite" />
+ <input type="submit" name="submit" value="Run all Selenium tests" />
+ </form>
+ </li>
</ul>
+ <p class="help">
+ Zelenium object link must be an absolute path from the domain root,
+ or a relative path from the demo SimpleContent's parent.
+ </p>
<tal:groups repeat="demo_group context/@@kss_demo_registry/getDemoGroups">
<tal:plugin condition="python:demo_group['is_first_plugin_namespace'] and demo_group['plugin_namespace']==''">
<h2>Core plugin</h2>
Added: kukit/kss.demo/trunk/kss/demo/browser/kss_demo_suite.pt
==============================================================================
--- (empty file)
+++ kukit/kss.demo/trunk/kss/demo/browser/kss_demo_suite.pt Fri Dec 7 13:35:27 2007
@@ -0,0 +1,44 @@
+<html>
+ <body>
+ <table id="suiteTable"
+ cellpadding="1"
+ cellspacing="1"
+ border="1"
+ class="selenium">
+ <tbody tal:define="selenium_tests context/@@kss_demo_registry/getSeleniumTests">
+ <tr><td><b>Test Suite</b></td></tr>
+ <tr>
+ <td>
+ <h4>
+ <a href="setDevMode.html">Development mode</a>
+ </h4>
+ </td>
+ </tr>
+ <tal:groups repeat="selenium_test selenium_tests">
+ <tr>
+ <td><a href="test.html"
+ tal:content="selenium_test/title"
+ tal:attributes="href selenium_test/href"
+ >Title</a></td>
+ </tr>
+ </tal:groups>
+ <!--> </-->
+ <tr>
+ <td>
+ <h4>
+ <a href="setProdMode.html">Production mode</a>
+ </h4>
+ </td>
+ </tr>
+ <tal:groups repeat="selenium_test selenium_tests">
+ <tr>
+ <td><a href="test.html"
+ tal:content="selenium_test/title"
+ tal:attributes="href selenium_test/href"
+ >Title</a></td>
+ </tr>
+ </tal:groups>
+ </tbody>
+ </table>
+ </body>
+</html>
Modified: kukit/kss.demo/trunk/kss/demo/browser/registry.py
==============================================================================
--- kukit/kss.demo/trunk/kss/demo/browser/registry.py (original)
+++ kukit/kss.demo/trunk/kss/demo/browser/registry.py Fri Dec 7 13:35:27 2007
@@ -5,6 +5,7 @@
from zope.component import getUtility
from zope.interface import implements
from kss.demo.selenium_utils.builder import cookSeleniumTests
+import os.path
try:
from Products.Five import BrowserView
BrowserView # make pyflakes happy
@@ -55,6 +56,57 @@
group.append(demo)
return demo_groups
+ @staticmethod
+ def _filename_to_title(filename):
+ """Automatic conversion of filename to readable title"""
+ if filename.lower().endswith('.html'):
+ filename = filename[:-5]
+ elif filename.lower().endswith('.htm'):
+ filename = filename[:-4]
+ words = os.path.basename(filename).split('_')
+ result = ' '.join([word.capitalize() for word in words])
+ return result
+
+ @staticmethod
+ def _filename_to_href(filename):
+ """Automatic conversion of filename to publication href"""
+ return "@@resource?filename=%s" % (filename, )
+
+ def getSeleniumTests(self):
+ """Get selenium tests annotated with title and href."""
+ return [dict(
+ href = self._filename_to_href(filename),
+ title=self._filename_to_title(filename),
+ )
+ for filename in self.selenium_test_filenames]
+
+ @property
+ def selenium_test_filenames(self):
+ """A cached representation of all filenames."""
+ try:
+ return self._cooked_selenium_test_filenames
+ except AttributeError:
+ registry = getUtility(IKSSDemoRegistry)
+ self._cooked_selenium_test_filenames = filenames = \
+ registry.selenium_tests
+ return filenames
+
+ def getSeleniumTestResource(self, filename):
+ """Return the html resource, whose absolute filename is given,"""
+ # First of all, let's check if this is one of our file.
+ # (Refuse otherwise - we don't want access to all files on the server.)
+ if filename not in self.selenium_test_filenames:
+ raise Exception, "Nonexistent resource"
+ # Return the file's content.
+ self.request.response.setHeader('Content-type', 'text/html;charset=utf-8')
+ return file(filename).read()
+
+ def getZuiteHomePage(self, path):
+ """Redirects to the Zuite home page, Zuite object is found from path."""
+ zuite = self.context.aq_inner.aq_parent.restrictedTraverse(path)
+ html = "%s?test=%s/suite.html" % (zuite.absolute_url(), self.context.absolute_url())
+ return self.request.response.redirect(html)
+
class KSSDemoRegistryAdminView(BrowserView):
"""Things that only admin should do"""
implements(IBrowserPublisher)
Added: kukit/kss.demo/trunk/kss/demo/browser/setDevMode.html
==============================================================================
--- (empty file)
+++ kukit/kss.demo/trunk/kss/demo/browser/setDevMode.html Fri Dec 7 13:35:27 2007
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>basic_commands</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">basic_commands</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>demo/@@kss_devel_mode/ui</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertTextPresent</td>
+ <td>KSS mode setup</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>button_devel</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertTextPresent</td>
+ <td>development</td>
+ <td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
Added: kukit/kss.demo/trunk/kss/demo/browser/setProdMode.html
==============================================================================
--- (empty file)
+++ kukit/kss.demo/trunk/kss/demo/browser/setProdMode.html Fri Dec 7 13:35:27 2007
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>basic_commands</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">basic_commands</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/demo/@@kss_devel_mode/ui</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertTextPresent</td>
+ <td>KSS mode setup</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>button_prod</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertTextPresent</td>
+ <td>production</td>
+ <td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
More information about the Kukit-checkins
mailing list