Author: tziade
Date: Thu Mar 23 01:03:21 2006
New Revision: 2695

Modified:
   cookbook/trunk/recipe51.en.tex
   cookbook/trunk/recipe_list.txt
Log:
translated recipe 51 (fr->en)

Modified: cookbook/trunk/recipe51.en.tex
==============================================================================
--- cookbook/trunk/recipe51.en.tex      (original)
+++ cookbook/trunk/recipe51.en.tex      Thu Mar 23 01:03:21 2006
@@ -3,17 +3,121 @@
 \include{macros}
 \status{draft}
 \author{Tarek Ziad�}
+\translator{Tarek Ziad�}
 
 \begin{document}
 
 \chapter*{Recording a user web session to write tests}
 
 \begin{problem}
-Not translated in english yet.
+Writing a functional test is most of the time driven by a precise user story,
+where all steps are made with the provided user interface. For Zope, the
+interface is most of the time the browser.
+
+Coding a full user web session can be a real pain.
+
+This recipe presents how to record browser activities and use it back, in order
+to speed up functionnal test writing.
 \end{problem}
 
 \begin{solution}
-Not translated in english yet.
+
+\section*{Knowing about the zope.app.recorder package}
+
+Zope 3 provides \code{zope.app.recorder}, wich let the developer add a special
+publisher, configured through \code{zope.conf}. This publisher acts like a
+proxy and record user actions over the browser. The problem is that its output
+are a bit raw to use and must be worked out. The extra workload to make it
+usable for \code{zope.testbrowser} can be quite long.
+
+\section*{Using zope.testrecorder}
+
+Zope Corp has created another package, called \code{zope.testrecorder}, which
+provides the same kind of features, but with output in convenient forms:
+\begin{itemize}
+\item \code{Python Doctest}, usable as is for \code{zope.testbrowser};
+\item \code{Selenium Test}, usable with \code{Selenium} tool.
+\end{itemize}
+
+\subsection*{Installing}
+
+The tool is not part of Zope 3, and must be downloaded separately. There are
+neither website nor packaged distribution yet. The source code has to be taken
+from Zope.org's subversion repository, and placed into the \code{/lib/python}
+directory of the instance.
+
+\codetitle{Getting zope.testrecorder from subversion}
+\begin{verbatim}
[EMAIL PROTECTED]:~$ cd /home/zopes/zope3/lib/python/
[EMAIL PROTECTED]:/home/zopes/zope3/lib/python$ svn co 
svn://svn.zope.org/repos/main/zope.testrecorder/trunk testrecorder
+A    testrecorder/html
+A    testrecorder/html/recorder.js
+[...]
+A    testrecorder/testrecorder.py
+R�vision 65919 extraite.
+\end{verbatim}
+
+The package is then hooked to Zope by adding a initialization file, called
+\code{testrecorder-configure.zcml}, and placed into the
+\code{etc/package-includes} directory of the instance, with the content below.
+
+\codetitle{testrecorder-configure.zcml file}
+\begin{verbatim}
+<include package="testrecorder" />
+\end{verbatim}
+
+When Zope is restarted, a new resource directory called \code{recorder} is made
+available, and points over the \code{html} directory of the package.
+
+\subsection*{Recording a session}
+
+After the installation is done, \code{testrecorder} is reachable through
+\url{/@@/recorder/index.html}. This page presents a banner where the initial
+URL to visit can be typed to start a session recording. The page appears
+under the banner and the tester can start a session recording by clicking
+around.
+
+The \code{Stop Recording} button finishes the session recording.
+
+\begin{center}
+\includegraphics[bb=0 0 302 270]{media/recipe51.screenshot1.png}
+% recipe51.screenshot1.png: 72.009dpi, width=10.65cm, height=9.52cm, bb=0 0 
302 270
+\legend{zope.testrecorder at work}
+\end{center}
+
+\subsection*{Getting back results}
+
+When the session is done, \code{testrecorder} provides two types of outputs.
+The \code{Python Doctest} one is the most used since it can be used as is in
+a Python doctest.
+
+\codetitle{An output sample:}
+\begin{verbatim}
+==============================================================================
+Doctest generated Sun Mar 12 2006 17:07:22 GMT+0100 (CET)
+==============================================================================
+
+Create the browser object we'll be using.
+
+    >>> from zope.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.open('http://localhost/')
+    >>> browser.getLink('++etc++site').click()
+    >>> browser.getLink('[top]').click()
+    >>> browser.getLink('Folder').click()
+    >>> browser.getControl(name='new_value').value = 'MyFolder'
+    >>> browser.getControl('Apply').click()
+    >>> browser.getLink('MyFolder').click()
+    >>> browser.open('http://localhost/')
+    >>> browser.getLink('[top]').click()
+    >>> browser.getLink('Folder').click()
+    >>> browser.getControl(name='new_value').value = 'test'
+    >>> browser.getControl('Apply').click()
+    >>> browser.getLink('test').click()
+\end{verbatim}
+
+This piece of Python code can be taken back and modified, to add some
+assertions over the pages for examples.
 \end{solution}
 
 \end{document}

Modified: cookbook/trunk/recipe_list.txt
==============================================================================
--- cookbook/trunk/recipe_list.txt      (original)
+++ cookbook/trunk/recipe_list.txt      Thu Mar 23 01:03:21 2006
@@ -67,7 +67,7 @@
 50 - organizing tests in a package  (TZ)
 51 - finding the good pace between coding, documenting, unit testing and
      functional testing  (TZ)
-52 - recording a user web session to write tests  (TZ)
+52 - recording a user web session to write tests  (TZ), (fr->en:TZ)
 53 - organizing the code in a package  (TZ)
 54 - using ldap to store users
 55 - using a sql database to store data
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to