summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Architecture.mdwn43
-rw-r--r--BeginnersGuide.mdwn2
-rw-r--r--Bugs.mdwn4
-rw-r--r--Companies_using_LDTP.mdwn11
-rw-r--r--Contribute.mdwn13
-rw-r--r--Data_XML.mdwn28
-rw-r--r--Docs.mdwn20
-rw-r--r--Docs/ldtp-doc.tar.gzbin0 -> 97689 bytes
-rw-r--r--Docs/ldtp-tutorial.pdfbin0 -> 824298 bytes
-rw-r--r--Download.mdwn33
-rw-r--r--Downloads.mdwn2
-rw-r--r--Executing_scripts_remotely.mdwn35
-rw-r--r--FAQ.mdwn165
-rw-r--r--Features.mdwn22
-rw-r--r--GIT.mdwn44
-rw-r--r--HOWTO.mdwn55
-rw-r--r--How_to_develop_component_functions_for_LDTP.mdwn45
-rw-r--r--How_to_execute_scripts.mdwn21
-rw-r--r--How_to_interpret_the_log.mdwn2
-rw-r--r--Howto_generate_Application_map.mdwn31
-rw-r--r--Howto_install_ldtp_Red_Hat_3.4.3-9.EL4.mdwn47
-rw-r--r--Howto_run_ldtp_from_vnc_session.mdwn22
-rw-r--r--Howto_run_ldtp_inside_Xvfb.mdwn5
-rw-r--r--Howto_run_ldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn49
-rw-r--r--Howto_run_pyldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn49
-rw-r--r--Howto_use_LDTP_Editor.mdwn21
-rw-r--r--LDTP_Demo.mdwn10
-rw-r--r--LDTP_TODO.mdwn17
-rw-r--r--LDTP_test_scripts_in_python.mdwn112
-rw-r--r--Mailing_List.mdwn6
-rw-r--r--Mailing_List_IRC.mdwn9
-rw-r--r--News.mdwn90
-rw-r--r--Newsletters.mdwn10
-rw-r--r--Object-Oriented_LDTP.mdwn95
-rw-r--r--Platforms.mdwn8
-rw-r--r--Projects_using_LDTP.mdwn18
-rw-r--r--RecordHOWTO.mdwn164
-rw-r--r--RecordTODO.mdwn25
-rw-r--r--SoC.mdwn6
-rw-r--r--SoC06.mdwn37
-rw-r--r--SoC07.mdwn31
-rw-r--r--TeamMembers.mdwn25
-rw-r--r--Tutorials.mdwn16
-rw-r--r--UsefulLinks.mdwn117
-rw-r--r--class.mdwn16
-rw-r--r--click.mdwn58
-rw-r--r--conversion.mdwn9
-rw-r--r--guiexist.mdwn22
-rw-r--r--index.mdwn44
-rw-r--r--ldtpUnderDapper.mdwn15
-rw-r--r--releasecontext.mdwn22
-rw-r--r--remap.mdwn30
-rw-r--r--selectmenuitem.mdwn22
-rw-r--r--setcontext.mdwn22
-rw-r--r--waittillguiexist.mdwn24
-rw-r--r--waittillguinotexist.mdwn24
56 files changed, 1873 insertions, 0 deletions
diff --git a/Architecture.mdwn b/Architecture.mdwn
new file mode 100644
index 0000000..c70f121
--- /dev/null
+++ b/Architecture.mdwn
@@ -0,0 +1,43 @@
+
+
+# LDTP Overall Architecture
+
+[[!img http://ldtp.freedesktop.org/LDTP-Overall-Arch.png]
+
+
+# LDTP Internals
+
+[[!img http://ldtp.freedesktop.org/LDTP-Engine.png]
+
+LDTP Clients can talk to LDTP engine with the set of LDTP Command Transfer Protocol (LDTPCTP) as defined in the [[Docs|Docs]] section. LDTP client wraps the LDTP Command Transfer Protcol based on the programming language (example: separate python client, maybe in future we can have Mono / Java / Perl based clients). Communication between the client and server takes place in XML format.
+
+Most of LDTP ideas are implemented from [[http://safsdev.sf.net|http://safsdev.sf.net]]. Most of the commands takes at-least 2 arguments. First argument will be context (window in which we want to operate) and the second argument will be component (object in which we want to operate, based on the current context).
+
+_Example:_ click ('*-gedit', 'btnNew') # Click operation will be performed on a window which is having *-gedit (regexp) and in that window object name 'New', which is of type 'push button'.
+
+
+## Server
+
+When a test script is started, the LDTP client will establish a connection with the LDTP engine using AF_UNIX.
+
+
+## Client Handler
+
+When ever a command is executed from the script, the client frames the XML data and send it to the server. LDTP engine parses the command request from the client and invoke the respective Component Handler.
+
+
+## Component Handler
+
+Each individual component handlers uses the AT-SPI libraries to communicate to the respective application. Based on the execution status, success or failure will be notified as a response (in XML format) to the client. In few cases the requested data from the respective component will be returned to the client, based on the request (example: gettextvalue).
+
+
+## Event Handler
+
+For unexpected windows (example: connection reset by peer /connection timed out dialogs) can be handled by registering a callback function and the respective callback function will be called, whenever the registered window with the title appears and even this window could be based on regular expression.
+
+
+## Logger
+
+Logs the execution status in XML format
+
+* [[LDTP slides|http://freedesktop.org/~nagappan/LDTP-slides.pdf]] presented in FOSS.IN/2005 - pdf format \ No newline at end of file
diff --git a/BeginnersGuide.mdwn b/BeginnersGuide.mdwn
new file mode 100644
index 0000000..781840c
--- /dev/null
+++ b/BeginnersGuide.mdwn
@@ -0,0 +1,2 @@
+
+Refer [[Docs|Docs]] page
diff --git a/Bugs.mdwn b/Bugs.mdwn
new file mode 100644
index 0000000..9eafd09
--- /dev/null
+++ b/Bugs.mdwn
@@ -0,0 +1,4 @@
+
+If you found any bug in LDTP please file it in [[Bugzilla GNOME|http://bugzilla.gnome.org/enter_bug.cgi?product=LDTP]]
+
+Existing [[LDTP bugs|http://bugzilla.gnome.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=LDTP&long_desc_type=allwordssubstr&long_desc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=anywords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=]]
diff --git a/Companies_using_LDTP.mdwn b/Companies_using_LDTP.mdwn
new file mode 100644
index 0000000..e364f47
--- /dev/null
+++ b/Companies_using_LDTP.mdwn
@@ -0,0 +1,11 @@
+
+Companies using LDTP
+
+* VMware Inc
+* Novell Inc
+* IBM
+* Intel
+* Oracle
+* Palm Source (Access Company)
+* Fujitsu
+Please feel free to add your company details here or send an email to nagappan at gmail dot com
diff --git a/Contribute.mdwn b/Contribute.mdwn
new file mode 100644
index 0000000..cbfafa9
--- /dev/null
+++ b/Contribute.mdwn
@@ -0,0 +1,13 @@
+
+There are many ways you can contribute to LDTP !
+
+* [[Download|Download]] LDTP and install them
+* Report [[Bugs|Bugs]] when you find them
+* Submit patches
+There are many exciting (new) projects that you can contribute to:
+
+* Help us to improve the Website
+* Write / Improve [[documentation|Docs]]
+* Write test scripts for [[GNOME|http://www.gnome.org]] / [[Mozilla|http://www.mozilla.org]] using [[Testcases|Testcases]]
+* Improve LDTP recording
+* Improve LDTP engine performance \ No newline at end of file
diff --git a/Data_XML.mdwn b/Data_XML.mdwn
new file mode 100644
index 0000000..033a3a5
--- /dev/null
+++ b/Data_XML.mdwn
@@ -0,0 +1,28 @@
+
+
+## LDTP Data XML Tags
+
+* We have the following tags in Data XML
+* **data** - The complete XML are tagged under this <data> and </data> tag
+* **<user defined tags>** - User defined tags with user defined values. These user defined tags can appear multiple times. If you use LDTP utils XML parser, the values from the user defined tags are returned as a list. So, you can use it with its index. The list index starts from 0.
+
+## Advantages of using LDTP Data XML
+
+* Technically its a good practice to separate script and data. Reason behind this is re-usability
+* Scripts will be written just once, based on the need we can just populate the data XML
+* In some cases for doing regression testing we will just have one script and multiple data files
+* Reason for XML format is, its easy to parse ;)
+
+## Reference
+
+* [[Sample_Data_XML|Sample_Data_XML]]
+* [[Data_XML_File_Parser|Data_XML_File_Parser]]
+
+### Optional Reference
+
+* How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]]
+* Running LDTP scripts [[How_to_execute_scripts|How_to_execute_scripts]]
+* Sequencing set of LDTP scripts using [[ldtprunner_XML|ldtprunner_XML]] file
+Obsolete
+
+* [[Generating LDTP Data XML file format|LDTPEditor/GeneratingLDTPDataXMLfileformat]] \ No newline at end of file
diff --git a/Docs.mdwn b/Docs.mdwn
new file mode 100644
index 0000000..748437f
--- /dev/null
+++ b/Docs.mdwn
@@ -0,0 +1,20 @@
+
+
+## LDTP reference manual
+
+ * [[LDTP Python User API Manual|UserAPIManual]] - Wiki (_**NOTE:** Not complete, For now you can use Online HTML_)
+ * [[LDTP Python User API Manual|http://ldtp.freedesktop.org/user-doc/index.html]] - Online HTML
+ * [[Java User API Manual|http://ldtp.freedesktop.org/javadoc/]]
+ * [[LDTP Python User API Manual|http://download.freedesktop.org/ldtp/1.x/1.1.x/ldtp-doc.tar.bz2]] - Download HTML tar archive for offline usage
+ * LDTP Tutorial [[PDF|http://download.freedesktop.org/ldtp/doc/ldtp-tutorial.pdf]] / [[ODF|http://download.freedesktop.org/ldtp/doc/ldtp-tutorial.odt]]
+ * [[LDTP Editor|http://nagappanal.blogspot.com/2007/11/linux-desktop-testing-project-editor.html]]
+
+## Documentation License
+
+Your use of all the above files are subject to the **GNU Lesser General Public License (LGPL)** unless different license terms accompany the file itself, in which case those terms govern.
+
+
+## Tutorial
+
+ * Setting LDTP in [[GNU/Linux_environment|GNU/Linux_environment]]
+ * How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]] \ No newline at end of file
diff --git a/Docs/ldtp-doc.tar.gz b/Docs/ldtp-doc.tar.gz
new file mode 100644
index 0000000..f4f5fc0
--- /dev/null
+++ b/Docs/ldtp-doc.tar.gz
Binary files differ
diff --git a/Docs/ldtp-tutorial.pdf b/Docs/ldtp-tutorial.pdf
new file mode 100644
index 0000000..7479572
--- /dev/null
+++ b/Docs/ldtp-tutorial.pdf
Binary files differ
diff --git a/Download.mdwn b/Download.mdwn
new file mode 100644
index 0000000..6208b9b
--- /dev/null
+++ b/Download.mdwn
@@ -0,0 +1,33 @@
+
+
+## Download LDTP binary / source for Windows/Linux/Mac OSX (released version - 3.5.0/3.5.0/1.0.1 respectively)
+[[!table header="no" class="mointable" data="""
+**Package**|||
+ SLES / SLED / openSUSE / Fedora / RHEL / CentOS / Mandriva | [[X86 / X86_64|http://download.opensuse.org/repositories/home:/anagappan:/ldtp2:/rpm/]] RPM
+ Ubuntu / Debian Etch | [[X86 / X86_64|http://download.opensuse.org/repositories/home:/anagappan:/ldtp2:/deb/]] DEB
+ [[Debian unstable|http://packages.debian.org/unstable/devel/ldtp]] | [[Gentoo package|http://download.freedesktop.org/ldtp/1.x/1.5.x/gentoo/ldtp-1.5.1.ebuild]]
+ LDTP [[source|http://download.freedesktop.org/ldtp/3.x/3.5.x/ldtp-3.5.0.tar.gz]] | From [[GIT|GIT]]
+ Cobra - Windows LDTP [[source|https://github.com/ldtp/cobra]] | [[Cobra - Win LDTP binary|http://code.google.com/p/cobra-winldtp/downloads/list]]
+ PyATOM (Mac LDTP) [[source|https://github.com/ldtp/pyatom]] | PyATOM (Mac LDTP) [[binary|http://pypi.python.org/pypi/atomac/]]
+"""]]
+
+
+## Download License
+
+Your use of all the above files are subject to the **GNU Lesser General Public License (LGPL)** unless different license terms accompany the file itself, in which case those terms govern.
+## Package maintainer
+[[!table header="no" class="mointable" data="""
+**Package maintainer**|||
+ SLED, OpenSuSE RPM - Frank Seidel - fseidel at suse dot de
+ Debian, Ubuntu package - Kartik Mistry - kartik dot mistry at gmail dot com
+ Sun Solaris - Dave Lin Dave - dot Lin at sun dot com and Tim Miao - Tim dot Miao at sun dot com
+ Fedora / Mandriva RPM - Nagappan Alagappan - nagappan at gmail dot com
+ Gentoo ebuild - Navtej Singh - n dot s dot buttar at gmail dot com and Jing Cheng - jingcheng01 at gmail dot com
+ Windows Binary - Nagappan Alagappan - nagappan at gmail dot com
+"""]]
+
+
+## Next step
+
+* Setting LDTP in [[GNU/Linux_environment|GNU_Linux_environment]]
+* How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]]
diff --git a/Downloads.mdwn b/Downloads.mdwn
new file mode 100644
index 0000000..18b2cbb
--- /dev/null
+++ b/Downloads.mdwn
@@ -0,0 +1,2 @@
+
+Refer [[Download|Download]] page
diff --git a/Executing_scripts_remotely.mdwn b/Executing_scripts_remotely.mdwn
new file mode 100644
index 0000000..e209307
--- /dev/null
+++ b/Executing_scripts_remotely.mdwn
@@ -0,0 +1,35 @@
+
+In LDTP you can execute the test scripts from a remote location. Say, the ldtp execution engine can run on a remote test server and you can execute the test scripts from your development box.
+
+Steps to follow:
+
+Start LDTP engine (manually) in remote location with the following options
+
+_$ ldtp **-s**_
+
+or
+
+_$ ldtp **--script-engine **_
+
+_Default port 23456 _
+
+_$ ldtp -s **-p 12345** _
+
+or
+
+_$ ldtp --script-engine **--port=12345** _
+
+from remote machine, in shell, you need to set LDTP_SERVER_ADDR with the remote server IP address or resolvable machine name (DNS entry).
+
+_**export LDTP_SERVER_ADDR=xx.xx.xx.xx** _
+
+If port number is changed in the ldtp server, then LDTP_SERVER_PORT environment variable has to be set
+
+_**export LDTP_SERVER_PORT=12345** _
+
+Now start executing the test scripts using ldtprunner or from a python prompt or from a shell.
+
+* $ python testscript.py
+* $ python
+ * >>> from ldtp import *
+ * >>> click ("*-gedit", "btnFind") \ No newline at end of file
diff --git a/FAQ.mdwn b/FAQ.mdwn
new file mode 100644
index 0000000..28800dd
--- /dev/null
+++ b/FAQ.mdwn
@@ -0,0 +1,165 @@
+## LDTP works based on some technology ?
+
+ * Yes, LDTP is based on Assistive Technology.
+ * To know more about assisitive technology <http://developer.gnome.org/projects/gap/>
+
+## Is LDTP announced ?
+
+Linux Desktop Testing Project (LDTP) was the first Test Automation Framework to use AT-SPI !!! LDTP has been open sourced by January 2005.
+
+ * LDTP 0.1.0 was anounced on [[Friday 28, January 2005|http://lwn.net/Articles/121202/]]
+ * LDTP was showcased and discussed in [[GUADEC 2005|http://live.gnome.org/Stuttgart2005_2fLightningTalks]]
+ * Published in [[opensourcetesting.org|http://opensourcetesting.org/functional.php#GNU/Linux%20Desktop%20Testing%20Project]]
+ * Published and discussed in [[Slashdot|http://slashdot.org/article.pl?sid=05/06/22/1843206]]
+
+## Why is LDTP not part of the GNOME project ?
+
+ * LDTP is Linux desktop agnostic. It aims at delivering an umbrella of test suites for Linux Desktop projects which includes the top ones like GNOME, KDE, Mozilla, Openoffice.org etc. This increases wide-spread acceptance of LDTP as a de-facto desktop testing framework.
+ * Based on the inputs recevied from some of the prominent members of the GNOME and KDE community, LDTP has been hosted on [[freedesktop.org|http://anongit.freedesktop.org/git/ldtp]]
+ * However, LDTP currently uses the [[GNOME bugzilla|http://bugzilla.gnome.org/enter_bug.cgi?product=LDTP]] for bug tracking, thanks to [[Luis Villa|http://tieguy.org/blog/index.cgi]] for making this available.
+
+## How is LDTP different from other desktop testing frameworks ?
+
+LDTP is a unique initiative to make Linux Desktops stable and rock solid by running them through rigorous suite of test conditions. At the time of writing this document, some of the prominent features of LDTP include
+
+ * LDTP concepts are derived from [[Software Testing Automation Framework|http://staf.sourceforge.net/index.php]]
+ * LDTP supports verification of actions performed (guiexist, verifystate, etc)
+ * Writing test scripts are very easy, the script writer need not know about the object hierarchy
+ * CPU / Memory performance monitoring of application-under-test can be measured
+ * From the XML log, we can gather [[HTML report|http://lists.freedesktop.org/archives/ldtp-dev/2005-October/000031.html]] using XSLT
+ * Group based execution, which provides precise control on the flow of test-script execution
+ * User-friendly Test Editor with syntax highlighting for generating and grouping test data
+I believe that the goal of another desktop testing framework would be similar to that of LDTP and hence reduntant. I welcome everyone to join hands with the LDTP community and make it the de facto desktop testing framework for *nix platform. LDTP community has made 11 dot releases so far and is active.
+
+
+## How LDTP discovers the object ?
+
+LDTP discovers the object both dynamically (using [[remap]]) and statically (using application map - [[Howto_generate_Application_map]])
+
+
+## How to enable accesssibility
+
+In gnome-control-center, open 'Assistive Technology' and click 'Enable Assistive technologies' check box. Close and logout once. Accessibility will be enabled in GNOME environment.
+
+
+## Who uses and supports LDTP ?
+
+LDTP community include hackers from:
+
+ * GNOME QA community
+ * Mozilla QA community
+ * Openoffice.org QA community
+ * KDE QA community
+ * Novell/SuSE, Sun China
+ * Palm Source (access-company)
+ * VMware Inc
+And I see increasing number of participation every week in weekly community meetings.
+
+It is great to note that the following have successfully deployed LDTP
+
+ * [[Evolution sanity scripts|http://go-evolution.org/Automation_using_LDTP]] using LDTP project will be released by November end
+ * [[Tomato|http://forge.novell.com/modules/xfmod/project/?tomato]] project is [[integrating LDTP|http://lists.freedesktop.org/archives/ldtp-dev/2005-October/000034.html]] to provide a common scripting environment for Windows and Linux QA script writers
+ * LDTP is being used for [[valgrinding Evolution|http://mail.gnome.org/archives/evolution-hackers/2005-September/msg00133.html]]
+
+## Does LDTP support platforms other than Linux ?
+
+Yes, LDTP hackers from Sun Microsystems have successfully tested LDTP on Solaris. There are people trying to use LDTP on FreeBSD as well.
+
+
+## How to use LDTP to test Java applications ?
+
+<http://mail.gnome.org/archives/gnome-accessibility-list/2003-November/msg00085.html>
+
+
+## Will LDTP support KDE ?
+
+Yes. From KDE 4.0, KDE has planed to provide QT - ATK bridge, with this bridge LDTP can be used to test KDE applications also. Refer:
+
+ * <http://trolls.troll.no/~Eharald/accessibility/>
+ * <http://accessibility.kde.org/>
+ * <http://accessibility.kde.org/developer/bridge.php>
+
+## How accessibility technology works ?
+
+Refer:
+
+* <http://www.mozilla.org/projects/ui/accessibility/unix/architecture.html>
+* <http://accessibility.kde.org/developer/atk.php>
+
+## Can I run my tests from a remote location ?
+
+Accessibility for remote GNOME apps is still on the roadmap. Because the accessibility framework uses CORBA, it works in theory, but in practice, the bonobo-activation mechanism which GNOME uses to register with the at-spi registry is tied to localhost. So the missing link is a remote bonobo-activation; once you have that, the rest should fall into place.
+
+Refer: [[Mail from Bill Haneman|http://mail.gnome.org/archives/gnome-accessibility-list/2005-January/msg00020.html]]
+
+
+## Why does error message 'Unidentified Object' displayed ?
+
+* When accessibility is not enabled.
+* When object name in 'Testtable' differs from object defination in appmap
+* If LDTP has not yet provided support for the corresponding type of object.
+
+## Where do i get information about python ?
+
+ * If you have _**Novell Linux Desktop**_ and if you have installed python-doc package, you can see python documentation in /usr/share/doc/packages/python/html directory.
+ * Alternate online - <http://docs.python.org/> You can download them for offline reading from [[http://docs.python.org/download.html|http://docs.python.org/download.html]]
+**General Python links**
+
+ * <http://www.vex.net/~x/parnassus/>
+
+## How can I write component functions for LDTP ?
+
+ * [[AT-SPI API documentation|http://developer.gnome.org/doc/API/2.0/at-spi/index.html]]
+ * [[How_to_develop_component_functions_for_LDTP]]
+
+## Is there any tutorial available for writing test scripts ?
+
+How to create [[LDTP_test_scripts_in_python]]
+
+
+## After adding new file, when I try to generate rpm, I'm getting error like <new file> not found ?
+
+Rpm distribution module tries to read MANIFEST file in local directory. If this file already exist and if you have added a new file in setup.py, on building you won't get any error. But on creating rpm you will get an error like <you new file name> not found. Remove MANIFEST file in local directory and generate the rpm file.
+
+
+## When I try to generate appmap for applications like gimp, gaim, I'm getting an error message "application not running" ?
+
+ * Try running the application seperately and try to poke them with at-poke.
+ * If at-poke is not able to detect, then try at-poke <application name>. Example: at-poke gaim
+ * If at-poke is able to detect, then you can generate appmap with the following steps:
+ * Type the following environment variable in terminal
+ * export GTK_MODULES=gail:atk-bridge
+ * export GNOME_ACCESSIBILITY=1 now invoke the application from the terminal in which you have typed the above environment variables. Ex: gaim
+
+## When xscreensaver runs, GNU/LDTP is unable to proceed ?
+
+Seems to be accessibility bug. As a work around, use the command 'xscreensaver-command -exit'
+
+
+## I don't see any console output which are printed with g_print ?
+
+ * Use export LDTP_DEBUG=1 to get messages in console
+ * Use export LDTP_DEBUG=2 to get verbose messages in console
+
+## LDTP supported platforms
+
+ * [[OpenSuSE|http://www.opensuse.org/]]
+ * [[OpenSolaris|http://opensolaris.org/]]
+ * [[Ubuntu|http://ubuntu.com/]]
+ * [[Debian GNU/Linux|http://www.debian.org/]]
+ * [[Fedora Core|http://fedora.redhat.com/]]
+ * [[FreeBSD|http://www.freebsd.org/]]
+
+## How to Compile LDTP under Ubuntu Dapper?
+
+Check [[ldtpUnderDapper]]. You will need automake 1.9 and aclocal 1.9 installed.
+
+
+## Recommended GNOME Version
+
+[[GNOME|http://www.gnome.org]] 2.10 and above
+
+
+## With LDTPv2 I get ResponseNotReady
+
+If proxy environment variable is set, you might get this, unset it. eg: 'unset http_proxy'
diff --git a/Features.mdwn b/Features.mdwn
new file mode 100644
index 0000000..541ed33
--- /dev/null
+++ b/Features.mdwn
@@ -0,0 +1,22 @@
+
+
+## LDTP Features
+
+ * LDTP concepts are derived from [[Software Automation Framework Support|http://safsdev.sourceforge.net/Default.htm]]
+ * LDTP supports verification of actions performed (guiexist, verifystate, etc) - [[API Reference|Docs]]
+ * Writing test scripts are very easy, the script writer need not know about the object hierarchy
+ * CPU / Memory performance monitoring of application-under-test can be measured - [[Class_pstats|Class_pstats]]
+
+## Deprecated
+
+ * From the XML log, we can gather [[HTML report|http://lists.freedesktop.org/archives/ldtp-dev/2005-October/000031.html]] using XSLT
+ * Group based execution, which provides precise control on the flow of test-script execution - [[ldtprunner_XML|ldtprunner_XML]]
+ * Scripts can be written as a reusable component and for that the data can be stored / retrieved in XML - [[Data_XML|Data_XML]]
+ * User-friendly Text Editor with syntax highlighting for generating and grouping test data [[Howto_use_LDTP_Editor|Howto_use_LDTP_Editor]]
+ * Objects are identified both [[statically|http://gnomebangalore.org/ldtp/index.php/Howto_generate_Application_map]] and [[dynamically|http://gnomebangalore.org/ldtp/index.php/Remap]]
+ * [[Record / Playback|RecordHOWTO]]
+
+## Next step
+
+ * Setting LDTP in [[GNU/Linux_environment|GNU/Linux_environment]]
+ * How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]] \ No newline at end of file
diff --git a/GIT.mdwn b/GIT.mdwn
new file mode 100644
index 0000000..9fe4bbc
--- /dev/null
+++ b/GIT.mdwn
@@ -0,0 +1,44 @@
+
+
+## Linux Desktop Testing Project
+
+LDTPv2
+[[!table header="no" class="mointable" data="""
+ **Check out LDTPv2 source** | **Check out Windows LDTP**
+ git clone git://anongit.freedesktop.org/git/ldtp/ldtp2.git | git clone git://github.com/ldtp/cobra.git
+ **Check out LDTPv2 source via http proxy** | **Check out Windows LDTP via http proxy**
+ git clone [[http://anongit.freedesktop.org/git/ldtp/ldtp2.git|http://anongit.freedesktop.org/git/ldtp/ldtp2.git]] | git clone [[https://github.com/ldtp/cobra.git|https://github.com/ldtp/cobra.git]]
+ **Checkout LDTPv2 source from freedesktop.org GIT as a developer** | **Checkout Windows LDTP source from github as a developer**
+ git clone [[ssh://username@git.freedesktop.org/git/ldtp/ldtp2.git|ssh://username@git.freedesktop.org/git/ldtp/ldtp2.git]] | git clone [[git@github.com|mailto:git@github.com]]:ldtp/cobra.git
+ **Browse Source online** |
+ [[LDTP|http://cgit.freedesktop.org/ldtp/ldtp2/tree/]] | [[Cobra - Windows LDTP|https://github.com/ldtp/cobra]]
+ [[PyATOM - Mac LDTP|https://github.com/ldtp/pyatom]] |
+"""]]
+
+LDTPv1
+[[!table header="no" class="mointable" data="""
+ **Check out LDTP source** | **Check out Python auto-suite test-scripts**
+ git clone git://anongit.freedesktop.org/git/ldtp/ldtp.git | git clone git://anongit.freedesktop.org/git/ldtp/pyautosuite.git
+ **Check out LDTP source via http proxy** | **Check out Python auto-suite test-scripts via http proxy**
+ git clone [[http://anongit.freedesktop.org/git/ldtp/ldtp.git|http://anongit.freedesktop.org/git/ldtp/ldtp.git]] | git clone [[http://anongit.freedesktop.org/git/ldtp/pyautosuite.git|http://anongit.freedesktop.org/git/ldtp/pyautosuite.git]]
+ **Checkout LDTP source from freedesktop.org GIT as a developer** |
+ git clone [[ssh://username@git.freedesktop.org/git/ldtp/ldtp.git|ssh://username@git.freedesktop.org/git/ldtp/ldtp.git]] |
+ **Browse Source online** |
+ [[LDTP|http://cgit.freedesktop.org/ldtp/ldtp/tree/]] |
+ [[Python autosuite|http://cgit.freedesktop.org/ldtp/pyautosuite/tree]] |
+ [[a11y-test-suite|http://cgit.freedesktop.org/ldtp/a11y-test-suite/tree]] |
+"""]]
+
+
+## Next
+
+Setting LDTP in [[GNU/Linux_environment|GNU/Linux_environment]]
+
+How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]]
+
+
+## Obsolete CVS modules
+
+**Check out Application map generation utility**
+
+git clone git://anongit.freedesktop.org/git/ldtp/appmap.git
diff --git a/HOWTO.mdwn b/HOWTO.mdwn
new file mode 100644
index 0000000..9e5b17f
--- /dev/null
+++ b/HOWTO.mdwn
@@ -0,0 +1,55 @@
+
+
+## Using LDTP
+
+Setting LDTP in [[GNU/Linux_environment|GNU/Linux_environment]]
+
+How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]]
+
+[[Executing_scripts_remotely|Executing_scripts_remotely]]
+
+
+## Using LDTP in Xvfb environment
+
+[[Howto_run_ldtp_from_vnc_session|Howto_run_ldtp_from_vnc_session]]
+
+[[Howto_run_ldtp_inside_Xvfb|Howto_run_ldtp_inside_Xvfb]]
+
+[[Howto_run_ldtp_inside_Xvfb_which_runs_in_xinit_session|Howto_run_ldtp_inside_Xvfb_which_runs_in_xinit_session]]
+
+
+## Hacking LDTP
+
+[[How_to_develop_component_functions_for_LDTP|How_to_develop_component_functions_for_LDTP]]
+
+
+## Papers about testing
+
+[[The White Paper on Keyword Driven Automation Framework|http://safsdev.sourceforge.net/FRAMESDataDrivenTestAutomationFrameworks.htm]]
+
+
+## Obsolete HOWTOs
+
+Running LDTP scripts [[How_to_execute_scripts|How_to_execute_scripts]]
+
+Sequencing set of LDTP scripts using [[ldtprunner_XML|ldtprunner_XML]] file
+
+Script input [[Data_XML|Data_XML]] file - Useful to maintain a generic script
+
+[[Record user events and generate LDTP scripts|RecordHOWTO]]
+
+[[Test-case_generation_procedure|Test-case_generation_procedure]]
+
+[[Howto_generate_Application_map|Howto_generate_Application_map]]
+
+[[Howto_use_LDTP_Editor|Howto_use_LDTP_Editor]]
+
+[[Generating LDTP Data XML file format|LDTPEditor/GeneratingLDTPDataXMLfileformat]]
+
+[[Generating ldtprunner XML file format|LDTPEditor/GeneratingldtprunnerXMLfileformat]]
+
+[[Test-case_generation_procedure|Test-case_generation_procedure]]
+
+[[Release_notes_for_Evolution-2.5.1_Sanity_suite|Release_notes_for_Evolution-2.5.1_Sanity_suite]]
+
+[[Howto_install_ldtp_Red_Hat_3.4.3-9.EL4|Howto_install_ldtp_Red_Hat_3.4.3-9.EL4]]
diff --git a/How_to_develop_component_functions_for_LDTP.mdwn b/How_to_develop_component_functions_for_LDTP.mdwn
new file mode 100644
index 0000000..ce43273
--- /dev/null
+++ b/How_to_develop_component_functions_for_LDTP.mdwn
@@ -0,0 +1,45 @@
+
+1. How to identify the object in an application (ex: scrollbar) using at-poke
+
+ * a) The application is poked using at-poke tool. The command for the application to be poked is at-poke <application name> eg.at-poke gedit b) The command open the application along with the at-poke window. The application name is selected from the list of applications in the window. c) Click "poke" button. d) Another window with the application name on the left pane appears. Select the application name and click "Expand" on the right pane. The application gets expanded displaying all the components, their name and their corresponding attributes on the right pane. e) Scroll down on the left pane to select the required object, whose object name is displayed on the right pane. Example: To identify scroll bar object in gedit application Poke the gedit application. Expand it and scroll down to identify the object.Note that as the component is selected on the at-poke window, the corresponding component in the application is highlighted. When the scrollbar is identified, the object name "Scroll bar" is displayed on the right pane.
+2. Before writing a component function what all links / documents needs to be refered ?
+
+ * [[AT-SPI C Bindings Reference Manual|http://developer.gnome.org/doc/API/2.0/at-spi/index.html]]
+ * [[Basic Accessible Object Methods and Interface Query|http://developer.gnome.org/doc/API/2.0/at-spi/spi-accessible.html]]
+ * [[Subinterface Methods|http://developer.gnome.org/doc/API/2.0/at-spi/spi-component.html]]
+ * Check existing component function implementation ([[check_box.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/check_box.c]], ...)
+3. How to write a function ?
+
+ * Initially, the component for which the function is to be written should be identified (Refer point 1) and studied in detail.
+ * The [[AT-SPI C Bindings|http://developer.gnome.org/doc/API/2.0/at-spi/index.html]] provided in the link is used in the modules for various functions. For eg, the 'Accessible' Interface is used for all the basic operations on the Accessible object, '[[AccessibleAction|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-AccessibleAction-Interface.html]]' Interface is used for the [[AccessibleAction|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-AccessibleAction-Interface.html]] operations on the object.
+ * The various actions that can be performed on the component should be analysed and identified from the [[AccessibleAction|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-AccessibleAction-Interface.html]] Interface in at-poke(for eg, for push_button, [[AccessibleAction|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-AccessibleAction-Interface.html]] is "click"), and their corresponding functions from the AT-SPI C Bindings are invoked in the code. If there is no predefined [[AccessibleAction|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-AccessibleAction-Interface.html]] available for the component, then user-defined actions can be included in the code(for eg, for scroll_bar, scroll_up and scroll_down).
+ * The various states for the component can be viewed on the right panel of the At-poke window. The '[[AccessibleState|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-State-and-StateSets.html]]' Interface is used to check the states of the component. For eg, the [[AccessibleState(s)|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-State-and-StateSets.html]] for push_button are 'VISIBLE', 'ENABLED', etc. **Note**: that it is not necessary to check all the states listed by At-poke for the component. Checking those states, that are required for the component is sufficient. For eg, it is sufficient to check the 'VISIBLE', 'HORIZONTAL' and 'VERTICAL' states for the scroll_bar, though more states like 'SENSITIVE', 'ENABLED' etc.. are available.
+ * Finally, before proceeding with a function, studying the existing modules in the 'src' directory would give a clear picture.
+4. Coding style (How to name function, variable)
+
+ * Write all the function name in lower case
+ * Except the main function write all the other functions as static
+ * Atmost try to return the status (PASS - 0/1 or FAIL -1/0) of current function
+ * Try to free all the SPI resources ([[SPI_freeString|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-SPI-main-loop-and-initialization.html#SPI-freeString]], [[Accessible_unref|http://developer.gnome.org/doc/API/2.0/at-spi/at-spi-cspi-Accessible-Objects.html#Accessible-unref]])
+5. What all should be in your new file (Give reference to safsdev.sf.net with an example to your source code scroll_bar.c)
+
+The file should contain the following functions to perform the corresponding operations:
+
+ * To check whether the selected component for which the test case is written is the invoked object. For ex. is_object_scroll_bar
+ * To check the required states for the component. For ex. is_scroll_bar_state_visible and is_scroll_bar_state_vertical are used to check the SPI states 'VISIBLE' and 'VERTICAL' respectively.
+ * To perform the corresponding actions for the Accessible Object. For ex. 'click' for push_button or user-defined actions like 'one_up' and 'one_down' for scroll_bar. These can be identified with the help of the 'SAFSDEV' reference link [[Component Function list|http://safsdev.sourceforge.net/sqabasic2000/ComponentFunctionsList.htm]]
+ * A main function, which includes a pointer to all the above functions written in the module and returns the function called-for. For ex. scroll_bar_main
+6. What all files you need to modify ?
+
+ * In [[gui.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/gui.c]] file, add your [[class|class]] in function get_class_id. Before making entry please verify, how other [[class|class]]es are implemented.
+ * In [[ldtp.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/ldtp.c]]file, order your new [[class|class]] in process_current_record function and add the required entries. Before making entry please verify, how other [[Class|Class]]es are called.
+ * object_state_contains function implemented in [[gui.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/gui.c]] uses object_state structure in [[states.h|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/states.h]]. Make sure that your [[class|class]] has all the common fields. Add your <component_name>_main function in [[ldtp.h|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/ldtp.h]]
+7. How to Link your source code in main ldtp source ?
+
+ * Edit [[Makefile.am|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/ldtp/src/Makefile.am]] and add your new <component_name>.c file entry under ldtp_SOURCES tag. After making the entry, change to previous directory and run ./autogen.sh and run 'make' in command prompt.
+8. How to test your new component ?
+
+ * Edit the appmap file in 'input' folder, to include an entry for your component (if it is not already included). Ex. To test the 'scrollbar' component for 'gedit' application, the gedit.map file is edited and an entry for the scrollbar is made.
+ * [gedit] scrollBar={class=scroll_bar}
+ * Write a test case which includes the component and the corresponding action. For eg. scrolldown ('gedit', 'scrollBar')
+ * Execute the test case as given in the link [[Tutorials|Tutorials]] and verify the results. \ No newline at end of file
diff --git a/How_to_execute_scripts.mdwn b/How_to_execute_scripts.mdwn
new file mode 100644
index 0000000..74f13d9
--- /dev/null
+++ b/How_to_execute_scripts.mdwn
@@ -0,0 +1,21 @@
+
+
+## How to execute LDTP scripts
+
+Make sure that you have the following files in current working directory
+
+* You need to have test scripts to be executed
+* You can have [[Data_XML|Data_XML]] - Optional
+* You can have [[ldtprunner_XML|ldtprunner_XML]] - Optional
+* Make sure ldtp, ltfx (optional), digwin (optional), ldtprunner, ldtprecord (optional) are installed
+If you have [[ldtprunner_XML|ldtprunner_XML]] then invoke like:
+
+* $ _ldtprunner <ldtprunner XML>_
+If you have only scripts in the current directory then invoke like:
+
+ * $ _python <script file name.py>_
+
+## Reference
+
+ * How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]]
+ * Refer [[How_to_interpret_the_log|How_to_interpret_the_log]] \ No newline at end of file
diff --git a/How_to_interpret_the_log.mdwn b/How_to_interpret_the_log.mdwn
new file mode 100644
index 0000000..80cb530
--- /dev/null
+++ b/How_to_interpret_the_log.mdwn
@@ -0,0 +1,2 @@
+
+TODO
diff --git a/Howto_generate_Application_map.mdwn b/Howto_generate_Application_map.mdwn
new file mode 100644
index 0000000..566a625
--- /dev/null
+++ b/Howto_generate_Application_map.mdwn
@@ -0,0 +1,31 @@
+
+
+# Obsolete
+
+Using this tool you can generate application map which will be recognized by ldtp.
+
+How to use this tool ?
+
+* Ensure accessibility is turned on
+* Open the application for which you want to generate appmap.
+* Run appmap. Syntax: `appmap <application>`
+_Note: The application map will be stored in the current directory, i.e. the directory from where you execute the command `appmap <application>`_
+
+Example:
+
+ * Open gedit
+ * appmap gedit An application map called "gedit.map" will be generated in the current directory.
+_Note: Some GUI objects/applications may note be recognized by appmap - in this case you will need to complete the following steps in order to generate an application map for these GUI objects / applications_
+
+* - Launch the component for which test automation has to be done. - Launch at-poke from terminal, select the component and then click on 'Poke'. - Then click on 'Expand' in 'A tool for poking things'.
+_Note: If you find that at-poke is not capturing the application this is probably because you have not enabled accessibility._
+
+* - Scroll down and click on each of the objects in 'A tool for poking things'. You will be able to identify details of object you are looking for on right hand side, that will display object type, label associated with the object.
+ * To specify in the appmap capture object type, label of the object, if label is not associated with the object then you need to find out instance index. Instance index is position of the 'X' type of object under parent. If object 'Y' of type 'Z' is existing under parent 'X' first, then instance_index is 'Zero'. If object 'Y' of type 'Z' is existing under parent 'X' second, then instance_index is '1'. The example given below might make things more clear.
+ * Open Gedit, click on Edit->Preferences.
+ * In the Edit Preferences dialog box there are 3 spin button items, 'Tabs width', 'Autosave files every' and 'Undo Limit to'. The instance index for 'Tabs width' is 0, the instance index for 'Autosave files every' is 1 and instance index for 'Undo Limit to' is 2.
+ * The syntax for these GUI objects can be written in the appmap as follows:
+ * _sbtnTabs={class=spin_button, instance_index=0}_
+ * _sbtnAutosave={class=spin_button, instance_index=1}_
+ * _sbtnUndo={class=spin_button, instance_index=2}_ - Edit application map file generated by appmap, specify object name which follows naming conventions of object, type of object, label instance index. - Once the application map for a particular application is complete, it is in the appmap directory with the extension .map (for example application map for gedit is gedit.map). Copy the appmap of that application and save it in the input directory.
+More details about internals of appmap refer [[About_Appmap|About_Appmap]]
diff --git a/Howto_install_ldtp_Red_Hat_3.4.3-9.EL4.mdwn b/Howto_install_ldtp_Red_Hat_3.4.3-9.EL4.mdwn
new file mode 100644
index 0000000..f8f0d35
--- /dev/null
+++ b/Howto_install_ldtp_Red_Hat_3.4.3-9.EL4.mdwn
@@ -0,0 +1,47 @@
+
+
+# Obsolete
+
+Installing ldtp on Red Hat 3.4.3-9.EL4 (using VMWare)
+
+Assumption: A linux user (say harsha) The symbol $ is run as user in the terminal The symbol # is run as root in the terminal
+
+1. Praveen A (J4V4M4N) checked out the entire ldtp project(s) for me (Thank you buddy)
+
+2. I compiled the ldtp project (not pyldtp)
+
+ * Procedure: $ cd ~harsha/ldtp $./autogen.sh $ ./configure # make # make install #cd python # ./setup.py build # ./setup.py install
+3. I discoverd i had python:
+
+ * Python 2.3.4 (#1, Feb 2 2005, 11:44:49) [GCC 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
+4. I installed python2.4 rpms (core and devel)
+
+5. I set the <logfile>/home/harsha/EXAMPLES/gedit/gedit-log.xml</logfile> values in gedit-execution.xml
+
+6. Then I tried executing gedit-execution.xml
+
+7. I got a log message saying python imaging library (PIL) is not installed
+
+8. I downloaded PIL and again ran
+
+ * # python2.4 ~harsha/PIL/setup.py build # ~harsha/PIL/setup.py install
+9. again i ran
+
+ * $ cd ~harsha/ldtp/python # python2.4 ./setup.py build # python2.4 setup.py install running install running build running build_py running install_lib copying build/lib/ldtputils.py -> /usr/lib/python2.4/site-packages copying build/lib/ldtp.py -> /usr/lib/python2.4/site-packages byte-compiling /usr/lib/python2.4/site-packages/ldtputils.py to ldtputils.pyc byte-compiling /usr/lib/python2.4/site-packages/ldtp.py to ldtp.pyc running install_data
+and ldtprunner got copied to /usr/bin
+
+10. Now I went to Start Menu/Preferences/Accesibility/Assistive Technology Support <click>
+
+ * in the window that appears select "Enable Assistive Technology Support" and say ok
+11. I opened one more terminal and typed
+
+ * $ ldtp &
+ * (server should run right)
+12. I opened gedit application
+
+13. now cd ~harsha/EXAMPLES/gedit
+
+14 run the command
+
+ * $ python2.4 /usr/bin/ldtprunner gedit-execution.xml
+15. and the Magic started to happen Hurray Yummy yummy!!! I am happy ;)
diff --git a/Howto_run_ldtp_from_vnc_session.mdwn b/Howto_run_ldtp_from_vnc_session.mdwn
new file mode 100644
index 0000000..c1bebdd
--- /dev/null
+++ b/Howto_run_ldtp_from_vnc_session.mdwn
@@ -0,0 +1,22 @@
+
+Install x11vnc for SuSE / NLD from [[x11vnc|http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=%2FNetwork/x11vnc/]]
+
+Install vnc2swf for SuSE / NLD from [[vnc2swf|http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=Multimedia/vnc2swf/]]
+
+_**Only for first time**_
+
+Start vncserver once
+
+Edit ~/.vnc/xstartup and modify the last entry to gnome-session &
+
+_Make sure that no other instance of gnome-session is running with the same user name_
+
+kill the current running vncserver (command: vncserver -kill :1 # assuming that the display started in :1)
+
+_**Every time**_
+
+start vncserver
+
+Howto use [[vnc2swf|http://www.unixuser.org/~euske/vnc2swf/vnc2swf.html]]
+
+Configuring an [[XDMCP Server For VNC|http://www.linux-mag.com/content/view/1298/2205/]]
diff --git a/Howto_run_ldtp_inside_Xvfb.mdwn b/Howto_run_ldtp_inside_Xvfb.mdwn
new file mode 100644
index 0000000..48ad8dc
--- /dev/null
+++ b/Howto_run_ldtp_inside_Xvfb.mdwn
@@ -0,0 +1,5 @@
+
+
+## Steps based on SuSE 9.3
+
+* - Install [[Xvfb|ftp://ftp.univie.ac.at/systems/linux/suse/i386/supplementary/X/Xorg/Xorg-X11R6.8.2/i386/suse92/xorg-x11-Xvfb-6.8.2-35.1.i586.rpm]] - [[Start Xvfb|http://www.xfree86.org/4.0.1/Xvfb.1.html#toc6]] - I used **Xvfb :1 -screen 0 1024x768x24 -ac -noreset -v -fbdir /tmp/** - Opened one terminal and cd to pyautosuite/gedit directory - export DISPLAY=localhost:1 - run gedit (gedit &) - commented launchapp ('gedit') in gedit.py. Because this takes 100% CPU. Needs investigation - start test-script (./gedit.py) \ No newline at end of file
diff --git a/Howto_run_ldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn b/Howto_run_ldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn
new file mode 100644
index 0000000..0cde902
--- /dev/null
+++ b/Howto_run_ldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn
@@ -0,0 +1,49 @@
+
+
+## Steps based on SuSE 9.3
+
+* Install [[Xvfb|ftp://ftp.univie.ac.at/systems/linux/suse/i386/supplementary/X/Xorg/Xorg-X11R6.8.2/i386/suse92/xorg-x11-Xvfb-6.8.2-35.1.i586.rpm]]
+* Install [[x11vnc|http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=%2FNetwork/x11vnc/]] for SuSE / NLD
+* [[Start Xvfb|http://www.xfree86.org/4.0.1/Xvfb.1.html#toc6]]
+* Created .xinitrc in home directory
+* Content of .xinitrc
+ * $ cat ~/.xinitrc
+ * gnome-session
+* I issued **xinit -- /usr/X11R6/bin/Xvfb :1 -screen 0 1024x768x24 -fbdir /tmp :1** command from one terminal
+* Logged into a terminal and cd to pyautosuite/gedit directory
+* export DISPLAY=localhost:1
+* run gedit (gedit &)
+* commented launchapp ('gedit') in gedit.py. Because this takes 100% CPU. **Needs investigation**
+* Start test-script (./gedit.py)
+* Started **x11vnc -display :1** in one terminal
+* Started **vncviewer localhost:0** in another terminal
+_Now I got the complete Xvfb in vncviewer !!!_
+
+
+## Readonly vnc session
+
+* Start **x11vnc -display :1 -viewonly**
+
+## Shared vnc session
+
+* Start **x11vnc -display :1 -shared**
+
+## Read directly from frame buffer file
+
+* start **x11vnc -display :1 -rawfb map:/tmp/Xvfb_screen0**
+
+## Don't disconnect even if vnc session got disconnected
+
+* start **x11vnc -display :1 -forever**
+
+## Some anonymous user has left the following info, looks very useful
+
+I have recently come up with an improvement to the x11vnc + Xvfb technique that may have useful application in a testing framework.
+
+The idea is to not use Xvfb, but to use Xorg or XFree86 directly using the "dummy" device driver. The advantage this has over Xvfb is that the X server is closer to the real one in use. (e.g. has RANDR, RENDER,etc.,extensions).
+
+Previously to do this one had to patch the Xorg or XFree86 server to not do VT switching. However, I have come up with a hack that uses LD_PRELOAD with a stock X server to disable the VT switching.
+
+It is here: [[Xdummy script|http://www.karlrunge.com/x11vnc/Xdummy]]
+
+More info on the method [[is here|http://www.karlrunge.com/x11vnc/#faq-xvfb]].
diff --git a/Howto_run_pyldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn b/Howto_run_pyldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn
new file mode 100644
index 0000000..0cde902
--- /dev/null
+++ b/Howto_run_pyldtp_inside_Xvfb_which_runs_in_xinit_session.mdwn
@@ -0,0 +1,49 @@
+
+
+## Steps based on SuSE 9.3
+
+* Install [[Xvfb|ftp://ftp.univie.ac.at/systems/linux/suse/i386/supplementary/X/Xorg/Xorg-X11R6.8.2/i386/suse92/xorg-x11-Xvfb-6.8.2-35.1.i586.rpm]]
+* Install [[x11vnc|http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=%2FNetwork/x11vnc/]] for SuSE / NLD
+* [[Start Xvfb|http://www.xfree86.org/4.0.1/Xvfb.1.html#toc6]]
+* Created .xinitrc in home directory
+* Content of .xinitrc
+ * $ cat ~/.xinitrc
+ * gnome-session
+* I issued **xinit -- /usr/X11R6/bin/Xvfb :1 -screen 0 1024x768x24 -fbdir /tmp :1** command from one terminal
+* Logged into a terminal and cd to pyautosuite/gedit directory
+* export DISPLAY=localhost:1
+* run gedit (gedit &)
+* commented launchapp ('gedit') in gedit.py. Because this takes 100% CPU. **Needs investigation**
+* Start test-script (./gedit.py)
+* Started **x11vnc -display :1** in one terminal
+* Started **vncviewer localhost:0** in another terminal
+_Now I got the complete Xvfb in vncviewer !!!_
+
+
+## Readonly vnc session
+
+* Start **x11vnc -display :1 -viewonly**
+
+## Shared vnc session
+
+* Start **x11vnc -display :1 -shared**
+
+## Read directly from frame buffer file
+
+* start **x11vnc -display :1 -rawfb map:/tmp/Xvfb_screen0**
+
+## Don't disconnect even if vnc session got disconnected
+
+* start **x11vnc -display :1 -forever**
+
+## Some anonymous user has left the following info, looks very useful
+
+I have recently come up with an improvement to the x11vnc + Xvfb technique that may have useful application in a testing framework.
+
+The idea is to not use Xvfb, but to use Xorg or XFree86 directly using the "dummy" device driver. The advantage this has over Xvfb is that the X server is closer to the real one in use. (e.g. has RANDR, RENDER,etc.,extensions).
+
+Previously to do this one had to patch the Xorg or XFree86 server to not do VT switching. However, I have come up with a hack that uses LD_PRELOAD with a stock X server to disable the VT switching.
+
+It is here: [[Xdummy script|http://www.karlrunge.com/x11vnc/Xdummy]]
+
+More info on the method [[is here|http://www.karlrunge.com/x11vnc/#faq-xvfb]].
diff --git a/Howto_use_LDTP_Editor.mdwn b/Howto_use_LDTP_Editor.mdwn
new file mode 100644
index 0000000..19ed290
--- /dev/null
+++ b/Howto_use_LDTP_Editor.mdwn
@@ -0,0 +1,21 @@
+
+
+# Obsolete
+
+[[Generating ldtprunner XML file format|LDTPEditor/GeneratingldtprunnerXMLfileformat]]
+
+[[Generating LDTP Data XML file format|LDTPEditor/GeneratingLDTPDataXMLfileformat]]
+
+
+## LDTP Editor dependancy
+
+[[pygtk|http://www.pygtk.org]]
+
+[[python|http://www.python.org]]
+
+
+## Where can I get the LDTP Editor ?
+
+In [[Downloads|Downloads]] page, latest released LDTP editor is available.
+
+You can also download the current development version of LDTP editor from [[GIT|GIT]].
diff --git a/LDTP_Demo.mdwn b/LDTP_Demo.mdwn
new file mode 100644
index 0000000..23ab291
--- /dev/null
+++ b/LDTP_Demo.mdwn
@@ -0,0 +1,10 @@
+
+Evolution Address Book Automation using LDTP [[OGG|http://people.freedesktop.org/~prashmohan/evolution-addrbook-low.ogg]] / [[AVI|http://people.freedesktop.org/~prashmohan/evolution-addrbook-low.avi]]
+
+Evolution Calendar Automation using LDTP [[OGG|http://people.freedesktop.org/~prashmohan/evolution-calendar-low.ogg]] / [[AVI|http://people.freedesktop.org/~prashmohan/evolution-calendar-low.avi]]
+
+jhbuild running LDTP tests — Screencast [[AVI|http://people.freedesktop.org/~prashmohan/jhbuild-screencast-low.avi]]
+
+[[Evolution IMAP Sanity|http://download.freedesktop.org/ldtp/movies/evolution-imap-sanity.html]] using LDTP(3.7 MB)
+
+LDTP Recording Demo inside [[Netbeans editor|http://people.freedesktop.org/~nagappan/ldtpguidemo.html]] !
diff --git a/LDTP_TODO.mdwn b/LDTP_TODO.mdwn
new file mode 100644
index 0000000..c8684e8
--- /dev/null
+++ b/LDTP_TODO.mdwn
@@ -0,0 +1,17 @@
+
+
+##### Port LDTP to Python from existing C implementation - http://bugzilla.gnome.org/show_bug.cgi?id=360928
+
+We have initial code checked in to the GIT repository, though this code path will not be executed by default.
+
+
+##### Improve LDTP recording
+
+Check [[Recording TO DO|RecordTODO]]
+
+
+##### Populate widget information in LDTP editor - Will be useful for the script writers
+
+Similar to at-poke / accerciser, but with the information based on LDTP naming convention.
+
+_If you have any other ideas, please feel free to contact Nagappan Alagappan <nagappan (@) gmail (dot) com>_
diff --git a/LDTP_test_scripts_in_python.mdwn b/LDTP_test_scripts_in_python.mdwn
new file mode 100644
index 0000000..f53a221
--- /dev/null
+++ b/LDTP_test_scripts_in_python.mdwn
@@ -0,0 +1,112 @@
+
+
+# Writing LDTP test scripts in Python scripting language
+
+
+## Setup LDTP
+
+* Download the binary files from [[Download|Download]]
+* Or download the source files from [[GIT|GIT]] and follow the steps to install LDTP in [[GNU/Linux_environment|GNU/Linux_environment]] from source.
+* Enable accessibility (Assistive Technology)
+
+### Platform
+
+* - Does your platform supported ? Refer - [[LDTP supported platforms|FAQ/LDTPsupportedplatforms]] - Any environment dependency to run ldtp ?
+ * Yes you need to have **GNOME 2.10 / KDE 4.0** and above
+
+## import LDTP modules
+
+ * _from ldtp import *_ _from ldtputils import *_ **Reason** why we do importing based on the above format instead of 'import ldtp' is, if we do the first one, we can just directly use all the ldtp functions just by calling their name. If we import the module as 'import ldtp', then we need to call the corresponding function as ldtp.<function name>
+**Example 1:**
+
+ * _from ldtp import *_ _selectmenuitem ('*-gedit', 'mnuFile;mnuNew')_
+**Example 2:**
+
+ * _import ldtp_ _ldtp.selectmenuitem ('*-gedit', 'mnuFile;mnuNew')_
+
+## LDTP API
+
+ * Refer [[LDTP API|http://ldtp.freedesktop.org/user-doc/index.html]] page for list of implemented LDTP API's
+
+## Call a function to perform an operation
+
+LDTP generally operates on the given object in a particular window.
+
+To select a menu item, you need to call [[selectmenuitem|selectmenuitem]] function. For example, to select open menu item in gedit application, call the below function
+
+ * _selectmenuitem ('frmUnsavedDocument1-gedit', 'mnuFile;mnuOpen')_
+When you call the above a new dialog box will be poped up, you can verify whether the window is opened or not either by [[guiexist|guiexist]] or by [[waittillguiexist|waittillguiexist]]
+
+ * guiexist function immediately returns either 1 (window exist) or 0 (window does not exist) waittillguiexist waits for the window to appear. Wait time out is by default 30 seconds. This default time out can be either increased on decreased using GUI_TIMEOUT
+If you want to operate on a push button in a window, you need to call [[click|click]] function:
+
+To press 'Cancel' button in a GTK Open File Selector dialog
+
+ * _click ('dlgOpenFile', 'btnCancel')_
+When you do the above operation the GTK File selector dialog disappears. To verify whether the window actually quits or not use [[waittillguinotexist|waittillguinotexist]] function
+
+If you modify any opened file in gedit, the window title will be modified. To continue operating on the window you need to change your context of operation. Reason: As you are aware that LDTP works based on individual window, the context of window will be changed, when the title changes. To over come this use [[setcontext|setcontext]] function and when you don't require them use [[releasecontext|releasecontext]]
+
+Edit your current opened file using:
+
+ * _settextvalue ('frmUnsavedDocument1-gedit', 'txt0', 'Testing editing')_
+This will change the window title. Note, before doing the above operation, title will be 'Unsaved Document 1 - gedit' and after editing the title will look like '*Unsaved Document 1 - gedit'. To further operate on the same window, use
+
+ * _setcontext ('Unsaved Document 1 - gedit', '*Unsaved Document 1 - gedit')_
+So that you can continue using the same window name, for example:
+
+ * _selectmenuitem ('frmUnsavedDocument1-gedit', 'mnuFile;mnuSaveAs')_
+The above function will invoke the GTK save dialog box
+
+If any of the action releated functions (example: selectmenuitem, click, settextvalue) fail, an exception is raised. It has to be handled by the program to either continue operating on execution or just halt
+
+
+## Executing LDTP scripts
+
+ * Sequencing set of LDTP scripts [[ldtprunner_XML|ldtprunner_XML]]
+ * [[How_to_execute_scripts|How_to_execute_scripts]]
+
+## Debugging LDTP issues
+
+ * **export LDTP_DEBUG=1** to get the list of commands issued from LDTP python to LDTP engine and also to check the return value from LDTP engine. _**NOTE:**_ This will be handy, if you are not logging the status of execution.
+ * **export LDTP_DEBUG=2** and start LDTP engine in a terminal and your scripts from a different terminal. This will give a detailed info of whats happening with the current command.
+
+## Generating LDTP scripts
+
+ * [[RecordHOWTO|RecordHOWTO]] - To generate scripts based on users actions
+ * _**Note:**_ _Above mentioned steps is to create scripts manually_
+
+## Test Data
+
+ * Identify the list of variable arguments and have it in a separate [[Data_XML|Data_XML]] file
+
+## Test cases / Scenarios
+
+ * List the test scenarios which you are planing to automate - Refer [[Testcases|Testcases]]
+
+## Reference
+
+ * Existing LDTP test scripts - [[http://cgit.freedesktop.org/ldtp/pyautosuite/|http://cgit.freedesktop.org/ldtp/pyautosuite/]]
+ * If you have any issues in writing scripts, you can contact us either through mail or IRC - Refer [[BeginnersGuide|BeginnersGuide]]
+
+## Filing bugs
+
+ * If existing feature in LDTP does not work, please file a [[bug|http://bugzilla.gnome.org/enter_bug.cgi?product=LDTP]] and select component as ldtp. Also provide us the steps to reproduce, so that we can fix it at the earliest.
+ * If new feature needs to be added in LDTP, please file an enhancement [[bug|http://bugzilla.gnome.org/enter_bug.cgi?product=LDTP]]
+
+## LDTP usage help
+
+ * Join the LDTP team on IRC for technical help, online.
+ * Server : irc.freenode.net Channel : #ldtp
+ * Join the LDTP [[Mailing_List|Mailing_List]]
+ * Refer [[FAQ|FAQ]], [[HOWTO|HOWTO]]
+
+## Hacking LDTP
+
+ * If you are interested in writing a new component function - Refer [[How_to_develop_component_functions_for_LDTP|How_to_develop_component_functions_for_LDTP]]
+ * LDTP internal [[Architecture|Architecture]] page
+
+## Useful Links
+
+ * [[UsefulLinks|UsefulLinks]]
+_Other Reference_ [[About_Appmap|About_Appmap]], [[Appmap convention|Appmap convention]]
diff --git a/Mailing_List.mdwn b/Mailing_List.mdwn
new file mode 100644
index 0000000..9318608
--- /dev/null
+++ b/Mailing_List.mdwn
@@ -0,0 +1,6 @@
+
+[[Subscribe to LDTP Development Mailing list|http://lists.freedesktop.org/mailman/listinfo/ldtp-dev]]
+
+[[Browse LDTP Development Mailing list Archive|http://lists.freedesktop.org/archives/ldtp-dev/]]
+
+[[Browse LDTP Development Mailing list Archive|http://forge.novell.com/modules/xfmod/maillist/archbrowse.php/ldtp-dev/?id=1458&prjname=ldtp&mlname=dev]] - Old since _Monday, September 19 2005_
diff --git a/Mailing_List_IRC.mdwn b/Mailing_List_IRC.mdwn
new file mode 100644
index 0000000..f57493d
--- /dev/null
+++ b/Mailing_List_IRC.mdwn
@@ -0,0 +1,9 @@
+##### LDTP Mailing list
+
+Archives - http://lists.freedesktop.org/archives/ldtp-dev/
+
+Subscribe - http://lists.freedesktop.org/mailman/listinfo/ldtp-dev
+
+##### IRC
+
+
diff --git a/News.mdwn b/News.mdwn
new file mode 100644
index 0000000..d6ee227
--- /dev/null
+++ b/News.mdwn
@@ -0,0 +1,90 @@
+[[!table header="no" class="mointable" data="""
+Cobra WinLDTP 3.5.0 released [[Download|Download]] - Wednesday May 22 2013
+LDTP 3.5.0 released [[Download|Download]] - Tuesday Apr 30 2013
+Cobra WinLDTP 3.0.0 released [[Download|Download]] - Tuesday Jan 8 2013
+ATOMac 1.0.1 released [[PyATOM|http://pyatom.com]] - Friday Oct 12 2012
+Cobra WinLDTP 2.5.0 released [[Download|Download]] - Thursday Oct 4 2012
+LDTP 3.0.0 released [[Download|Download]] - Friday Aug 3 2012
+Cobra WinLDTP 2.0 released [[Download|Download]] - Thursday Aug 2 2012
+C#/VB.NET/PowerShell API support released [[Download|Download]] - Tue Jun 19 2012
+Ruby API support released [[Download|Download]] - Tue Jun 19 2012
+Java API support released [[Download|Download]] - Thu May 24 2012
+Cobra WinLDTP 1.0 released [[Download|Download]] - Wednesday Apr 18 2012
+LDTP 2.3.1 released [[Download|Download]] - Saturday Feb 25 2012
+LDTP 2.3.0 released [[Download|Download]] - Thursday Feb 16 2012
+LDTP 2.2.0 released [[Download|Download]] - Wednesday Sep 21 2011
+LDTP 2.1.1 released [[Download|Download]] - Tuesday Feb 1 2011
+LDTP 2.1.0 released [[Download|Download]] - Monday Jan 3 2011
+LDTP 2.0.6 released [[Download|Download]] - Wednesday Apr 14 2010
+LDTP 2.0.5 released [[Download|Download]] - Monday Mar 29 2010
+LDTP 2.0.4 released [[Download|Download]] - Thursday Mar 25 2010
+LDTP 1.7.2 released [[Download|Download]] - Thursday Feb 11 2010
+LDTP 2.0.3 released [[Download|Download]] - Wednesday Feb 10 2010
+LDTP 2.0.2 released [[Download|Download]] - Tuesday Jan 26 2010
+LDTP 2.0.1 released [[Download|Download]] - Monday Jan 18 2010
+LDTP 1.7.1 released [[Download|Download]] - Thursday Aug 13 2009
+LDTP 1.7.0 released [[Download|Download]] - Thursday Aug 13 2009
+LDTP 1.6.0 released [[Download|Download]] - Sunday May 10 2009
+LDTP 1.5.1 released [[Download|Download]] - Tuesday March 10 2009
+LDTP 1.5.0 released [[Download|Download]] - Monday February 09 2009
+LDTP 1.4.0 released [[Download|Download]] - Monday December 01 2008
+LDTP 1.3.0 released [[Download|Download]] - Wednesday August 27 2008
+[[Ubuntu|http://ubuntutesting.wordpress.com/2008/08/01/dealing-with-utf-8-characters/]] officially started using LDTP for their automation - Friday August 1 2008
+LDTP 1.2.0 released [[Download|Download]] - Tuesday July 8 2008
+LDTP 1.1.0 released [[Download|Download]] - Tuesday April 29 2008
+LDTP has been moved from CVS to [[GIT|http://bugs.freedesktop.org/show_bug.cgi?id=14596]] - Thursday April 24 2008
+LDTP 1.0.0 released [[Download|Download]] - Saturday February 23 2008
+LDTP 0.9.2 released [[Download|Download]] - Tuesday September 04 2007
+LDTP 0.9.1 released [[Download|Download]] - Monday September 03 2007
+LDTP 0.9.0 released [[Download|Download]] - Tuesday August 28 2007
+LDTP is now integrated into jhbuild setup - Saturday April 14 2007
+LDTP has been selected for Google [[SoC07|SoC07]] under Mozilla organization - Wednesday April 11 2007
+LDTP 0.8.0 released [[Download|Download]] - Wednesday February 14 2007
+LDTP 0.7.0 released [[Download|Download]] - Thursday, December 07 2006
+Prashanth Mohan Google [[SoC|SoC]] tasks under GNOME organization - Thursday, June 01 2006
+ [[Prashanth Mohan|http://prashblog.be/]] has replaced existing nominee [[Shankar Ganesh|http://shagancisco.blogspot.com/]] for Google Summer of Code 2006 under GNOME organization - [[List|http://live.gnome.org/SummerOfCode2006/]] of selected applications - Thursday, June 01 2006
+ [[LDTP ported to ARM hardware|http://lists.freedesktop.org/archives/ldtp-dev/2006-May/000326.html]] by [[Palm Source|http://www.palmsource.com]] - Thursday, May 25 2006
+ [[Shankar Ganesh|http://shagancisco.blogspot.com/]] has been selected for Google Summer of Code 2006 under GNOME organization - [[List|http://live.gnome.org/SummerOfCode2006/]] of selected applications - Tuesday, May 23 2006
+ Received 5 applications for LDTP under [[GNOME organization|http://live.gnome.org/SummerOfCode2006/Ideas]] for [[Google Summer of Code|http://code.google.com/soc]] - Monday, May 8 2006
+ LDTP 0.4.0 released [[Download|Download]] - Thursday, March 30 2006
+ LDTP 0.3.1 released [[Download|Download]] - Thursday, February 23 2006
+ LDTP 0.3.0 released [[Download|Download]] - Wednesday, February 01 2006
+ [[Sun Solaris LDTP package|http://lists.freedesktop.org/archives/ldtp-dev/2005-October/000059.html]] will be built biweekly by Sun LDTP Hackers - Tuesday, October 11 2005
+ LDTP [[FAQ|FAQ]] has been [[updated|http://nagappanal.blogspot.com/2005/10/faqs-about-ldtp.html]] - Monday, October 10 2005
+ [[Evolution sanity scripts|http://go-evolution.org/Automation_using_LDTP]] using LDTP project will be released by November end
+ [[Tomato|http://forge.novell.com/modules/xfmod/project/?tomato]] project is [[integrating LDTP|http://lists.freedesktop.org/archives/ldtp-dev/2005-October/000034.html]] to provide a common scripting environment for Windows and Linux QA script writers - Sunday, October 2 2005
+ LDTP 0.2.0 released [[Download|Download]] - Wednesday, September 28 2005
+ LDTP is being used for [[valgrinding Evolution|http://mail.gnome.org/archives/evolution-hackers/2005-September/msg00133.html]] - Mon, September 26 2005
+ [[CVS|CVS]] hosted in [[http://cvs.freedesktop.org/ldtp/|http://cvs.freedesktop.org/ldtp/]] - Monday, September 19 2005
+ [[Mailing_List|Mailing_List]] hosted in [[http://lists.freedesktop.org/archives/ldtp-dev/|http://lists.freedesktop.org/archives/ldtp-dev/]] - Monday, September 19 2005
+ [[TeamMembers|TeamMembers]] page added - Monday, August 22 2005
+ Deb packages contributed by Prashanth [[Downloads|Downloads]] - Monday, August 18 2005
+ LDTP 0.1.9 release [[Download|Download]] - Monday, August 17 2005
+ LDTP 0.1.8 release [[Download|Download]] - Monday, August 1 2005
+ Fedora Core 4 LDTP rpm has been generated and available for [[Downloads|Downloads]] - Thursday, August 4 2005
+ Luis Villa created [[LDTP in GNOME bugzilla|http://forge.novell.com/modules/xfmod/maillist/archbrowse.php/ldtp-dev/2005-July/000397.html?id=1458&prjname=ldtp&mlname=dev]] - Friday, July 22 2005
+ First ever LDTP [[community Meeting|community Meeting]] - Wednesday, July 20 2005
+ LDTP 0.1.7 release [[Download|Download]] - Monday, July 18 2005
+ Created first LDTP [[Newsletters|Newsletters]]
+ LDTP 0.1.6 release [[Download|Download]] - Thursday, June 23 2005
+ Published a small write up [[about GNU/LDTP in slashdot|http://slashdot.org/article.pl?sid=05/06/22/1843206]] - Wednesday, June 22 2005
+ Luis Villa trying to setup [[LDTP to work with GNOME Tinderbox|http://forge.novell.com/modules/xfmod/maillist/archbrowse.php/ldtp-dev/2005-June/000354.html?id=1458&prjname=ldtp&mlname=dev]] - Wednesday, June 15 2005
+ Announced LDTP in [[GUADEC|http://2005.guadec.org/]] conference - [[Lightning Talk|http://live.gnome.org/Stuttgart2005_2fLightningTalks]]- Monday, May 30 2005
+ Created ldtp project in sf.net/projects/ldtp and updated CVS [[sf.net cvs|http://cvs.sourceforge.net/viewcvs.py/ldtp]] - Wednesday, May 18 2005
+ Added [[Howto_run_pyldtp_inside_Xvfb_which_runs_in_xinit_session|Howto_run_pyldtp_inside_Xvfb_which_runs_in_xinit_session]] - Friday, April 29 2005
+ LDTP 0.1.5 released [[Download|Download]] - Wednesday, April 20 2005
+ Luis Villa demonstrated LDTP in [[Linux Conference Australia|http://www.gnomebangalore.org/pipermail/ldtp/2005-April/000307.html]] - Tuesday, April 19 2005
+ Added GNU/LDTP project to [[http://cia.navi.cx/stats/project/ldtp|http://cia.navi.cx/stats/project/ldtp]] - Friday, April 15 2005
+ LDTP Hack Fest + [[GnomeBangalore Meet|http://www.gnomebangalore.org/?q=node/view/782]] in Novell, Bangalore - Saturday, April 16 2005
+ LDTP 0.1.4 released [[Download|Download]] - Friday, March 11 2005
+ LDTP presented inside Novell, Bangalore - Wednesday, March 09 2005
+ LDTP 0.1.3 released [[Download|Download]] - Monday, February 14 2005
+ LDTP hack fest in Novell, Bangalore - Thursday, February 10 2005
+ gPdf basic test checked-in - Tuesday, February 08 2005
+ LDTP has been discussed in [[Swatantra National Symposium|http://swatantra.info/]]
+ LDTP 0.1.2 released with python bindings [[Download|Download]] - Monday, February 07 2005
+ LDTP 0.1.1 released [[Download|Download]]
+ LDTP has been discussed in [[Hackers Crackdown|http://nitt.edu/hackercrackdown/]]
+ LDTP announced in [[LINDEC|http://www.gnomebangalore.org/lindec/]]
+ [[LDTP CVS|http://forge.novell.com/modules/xfmod/cvs/cvspage.php/ldtp/]] created in [[forge.novell.com|http://forge.novell.com/modules/xfmod/project/?ldtp]]
+"""]]
diff --git a/Newsletters.mdwn b/Newsletters.mdwn
new file mode 100644
index 0000000..cebe911
--- /dev/null
+++ b/Newsletters.mdwn
@@ -0,0 +1,10 @@
+
+[[Issue_5_-_26_Oct_2005|Issue_5_-_26_Oct_2005]]
+
+[[Issue_4_-_30_Sep_2005|Issue_4_-_30_Sep_2005]]
+
+[[Issue_3_-_18_Aug_2005|Issue_3_-_18_Aug_2005]]
+
+[[Issue_2_-_2_Aug_2005|Issue_2_-_2_Aug_2005]]
+
+[[Issue_1_-_18_July_2005|Issue_1_-_18_July_2005]]
diff --git a/Object-Oriented_LDTP.mdwn b/Object-Oriented_LDTP.mdwn
new file mode 100644
index 0000000..f3159d6
--- /dev/null
+++ b/Object-Oriented_LDTP.mdwn
@@ -0,0 +1,95 @@
+# Object Oriented LDTP bundled with LDTP package
+
+With this implementation, the code can be like
+
+Approach 1
+
+ from ooldtp import *
+
+ gedit = context ('*-gedit')
+ btnFind = gedit.getchild ('btnFind')
+ btnFind.click ()
+
+Approach 2
+
+ from ooldtp import *
+
+ gedit = context ('*-gedit')
+ gedit.click ('btnFind')
+
+# Welcome to Object-Oriented LDTP (EXPERIMENTAL) by Palm Source
+
+
+## What it is Object-Oriented LDTP?
+
+Till now LDTP supports this kind of syntax:
+
+ click('*gedit', btncopy)
+ selectmenuitem('*gedit', 'mnuFile;mnuOpen')
+
+it does not support appmap anymore. however I prefer using appmap to maximize its maintainability of our automation script. and I want ldtp have ability to using the following syntax to write script:
+
+ frmgedt.btncopy.click()
+ frmgedit.mnuOpen.click()
+
+and
+
+ Window('frm*gedit').PushButton('btncopy').click()
+ Window('frm*gedit').MenuItem('mnuFile;mnuOpen').pick()
+
+so I write a wrapper for LDTP, it wraps/improves most of LDTP API.
+
+
+
+## How to use?
+
+
+### use convert.py to generate the window declaration
+
+* cmd line:
+ * convert windowname output e.g.
+ * convert frm*gedit geditclass.py it will generate geditclass.py
+
+### open the file, you can find the code looks like below:
+
+ from window import *
+
+ class Gedit(Window):
+ name = '*gedit'
+
+ btncopy = Window.PushButton('btncopy', name)
+ btncut = Window.PushButton('btncut', name)
+ btnfind = Window.PushButton('btnfind', name)
+ btnfindandreplace = Window.PushButton('btnfindandreplace', name)
+ btngtkundo = Window.PushButton('btngtk-undo', name)
+
+ mnuAbout = Window.MenuItem('mnuHelp;mnuAbout', name)
+ mnuAda = Window.MenuItem('mnuView;mnuHighlightMode;mnuSources;mnuAda', name)
+ mnuAllLowerCase = Window.MenuItem('mnuEdit;mnuChangeCase;mnuAllLowerCase', name)
+ mnuAllUpperCase = Window.MenuItem('mnuEdit;mnuChangeCase;mnuAllUpperCase', name)
+ # ...
+ frmGedit = Gedit()
+
+### now you can do something like this
+
+To select a menuitem:
+
+ frmGedit.mnuAbout.select()
+ or write this
+ Window('*gedit').Menu('mnuHelp;mnuAbout').select()
+
+To click a button:
+
+ frmGedit.btnfind.click()
+ or write this
+ Window('*gedit').PushButton('btnfind').click()
+
+You can find more wrapped APIs in window.py
+
+### also you can add your own methods to this class.
+
+### That's all, enjoy it ;)
+
+##### Found any bug please email me:
+
+tae.ccf(at)gmail.com
diff --git a/Platforms.mdwn b/Platforms.mdwn
new file mode 100644
index 0000000..c778b7e
--- /dev/null
+++ b/Platforms.mdwn
@@ -0,0 +1,8 @@
+## LDTP supported platforms
+
+ * [[OpenSuSE|http://www.opensuse.org/]]
+ * [[OpenSolaris|http://opensolaris.org/]]
+ * [[Ubuntu|http://ubuntu.com/]]
+ * [[Debian GNU/Linux|http://www.debian.org/]]
+ * [[Fedora Core|http://fedora.redhat.com/]]
+ * [[FreeBSD|http://www.freebsd.org/]]
diff --git a/Projects_using_LDTP.mdwn b/Projects_using_LDTP.mdwn
new file mode 100644
index 0000000..2613b1a
--- /dev/null
+++ b/Projects_using_LDTP.mdwn
@@ -0,0 +1,18 @@
+
+[[GNOME Desktop Testing|http://live.gnome.org/DesktopTesting]]
+
+[[Ubuntu Desktop Testing|https://wiki.ubuntu.com/Testing/Automation/Desktop/]]
+
+[[VMware Workstation / Player / View client|http://www.vmware.com/products/]]
+
+[[Palm Source / Access Company|http://lavixu.livejournal.com/8774.html]] - Embedded mobile testing
+
+[[Evolution automation using LDTP|http://go-evolution.org/Automation_using_LDTP]]
+
+[[LDTP in assisting Valgrinding Evolution|http://mail.gnome.org/archives/evolution-hackers/2005-September/msg00133.html]]
+
+[[LDTP - TOMATO Integeration|http://forge.novell.com/modules/xfmod/maillist/archbrowse.php/ldtp-dev/2005-September/000466.html?id=1458&prjname=ldtp&mlname=dev]]
+
+[[Gedit|http://live.gnome.org/Gedit_2fTestCases]]
+
+[[Anjuta|https://launchpad.net/atfa]]
diff --git a/RecordHOWTO.mdwn b/RecordHOWTO.mdwn
new file mode 100644
index 0000000..3bb56d5
--- /dev/null
+++ b/RecordHOWTO.mdwn
@@ -0,0 +1,164 @@
+
+Want to use LDTP to test your application? Or do you want to automate the actions you do often? Or are you a GNU/Linux user who want to show “magic” to your friends by recording your actions and playing them back? You can use LDTP for this. But one small issue with LDTP is that you should know the LDTP Python API to write any test suite. But with the new LDTP Editor, this makes your job really simple. A screenshot of the LDTP Editor is shown below.
+
+[[!img http://farm4.static.flickr.com/3123/2810015513_68257528f7.jpg]
+
+This is a simple HOWTO for recording and playing back the recorded script.
+
+<ins>Requirements:</ins> <ins>
+
+* ldtp with ldtpeditor installed</ins> <ins>
+* GNOME 2.14 or above
+* Assistive Technology enabled
+Installing LDTP. </ins> <ins>
+
+* Download the lastest LDTP source code from</ins> [[GIT|GIT]] <ins>
+* Compile the code using ./configure and make
+* If you don’t have the access to install softwares, run the ldtpeditor file in the python folder
+* If you have access to install softwares, then run “make install”
+* Perform actions in the gcalctool. Check out [[this video|http://download.freedesktop.org/ldtp/movies/gcalctool-record.ogg]] to see the actions i recorded in my computer .
+* After you’re done with the actions in the gcalctool, click the Stop button in the LDTP Editor.
+* You can see that the ‘Recorded Code’ tab is updated with code as when you perform actions in gcalctool.
+* Click the convert button in the LDTP Editor. You’ll see that the Generated LDTP Code and Generated LDTP XML tabs are filled with generated code.
+* Hit the play button and see the converted code play in the same order you recoded your actions.
+* Save the contents of the ‘Generated LDTP Code’ into a python file (for ex frisco.py). (**Note:** that if the file name you specify already exists, then it OVERWRITES the filename without any warning)
+Note:: After installing LDTP Editor, when I tried to run ldtpeditor, I got an error sayin:
+
+
+[[!format txt """
+hari@hari-laptop:~/ldtp/ldtp-0.9.2$ ldtpeditor (ldtpeditor:11130): libglade-WARNING **: could not find glade file '/usr/share/local/ldtp/glade/ldtpeditor.glade' Glade file not found
+"""]]
+The ldtpeditor.glade file is present in the python folder. I got this error because I compiled the code as ./configure. If I had done it as ‘./configure –prefix=/usr’, then I wouldn’t have got this error. Anyway I copied the file manually to that folder.
+
+
+[[!format txt """
+hari@hari-laptop:~/ldtp/ldtp-0.9.2$ sudo mkdir -p /usr/share/local/ldtp/glade/
+hari@hari-laptop:~/ldtp/ldtp-0.9.2$ sudo cp python/ldtpeditor.glade /usr/share/local/ldtp/glade/
+hari@hari-laptop:~/ldtp/ldtp-0.9.2$ ldtpeditor
+"""]]
+After that when I ran ldtpeditor, it ran without any issues.
+
+Record using LDTP Editor</ins> <ins>
+
+For this let us consider recording the actions performed in gcalctool.
+
+* First make sure Assistive Technology is enabled in your desktop. If you are not sure about this, open gnome-control-center and in that open Assistive Technology Preferences. You should have Enable Assistive Technologies checked to use LDTP.
+* If you are enabling Assistive Technology only now, logout and login again.
+* Run ldtpeditor and gcalctool.
+* Make sure both you have enabled ‘Always on Top’ or both the applications and both the window doesn’t overlap with each other(just to get a clear view of whats going on).
+* Click the Start button the LDTP Editor. All actions performed on gcalctool after this are recorded.
+* When done click Stop button.
+* Click 'Convert' to get the code converted in LDTP format (It does some post processing, so its required)
+* The actions you performed while recording will be played back again :)
+* Click save button to save generated python script, if 2nd tab is empty, then it will try to get the contents of first tab and store it in the file you specify. If file already exist, it will *OVER-WRITE* _**NOTE:**_ _control+c, control+v doesn't work_
+* You can run the saved file from command line like: _hari@hari-laptop:~$ python frisco.py_
+* Sometime the resource will go high as the application map info is collected from the application, so no need to worry. With Thunderbird, the recording really sucks. LDTP Editor Preferences</ins> <ins>
+Using the LDTP Preferences, you can control what all actions you can control. A brief summary about the options given in the Preferences window.
+
+* Listen key events _This option is not yet implemented. Checking/Unchecking this doesn’t make any difference now._
+* Listen mouse events _This option is not yet implemented. Checking/Unchecking this doesn’t make any difference now._
+* Generate LDTP Code _Only when if this option is enabled, Convert will generated to LDTP code in the ‘Generated LDTP Code’ tab. This is enabled by default when you run LDTP Editor._
+* Generate Data XML _If this option is enabled, the LDTP Editor will generate data XML for the actions you perform._
+* Generate keyboard events code _Generates code for the keyboard events you performed during the recording session._
+* Generate wait time code _Calculates the delay one takes between each action during the recording session and generates code so that similar time delay is generated while play back._
+* Generate Memory / CPU statistics. _The code to generate Memory and CPU statistics will be generated. You need to install pystatgrab and libstatgrab packages._
+* _Edit App List: with this option you can edit the names of the windows ldtpeditor supports. For more on how to customize window support see LDTP Editor Wildcard Support._
+
+### LDTP Editor Wildcard Support (new)
+
+_Reasons to add window support to ldtpeditor:_ </ins> <ins>
+
+Ldtpeditor recognizes all windows it records by the window name. It ignores the white spaces, so if you are working with Xchat you will find lines like these recorded:
+
+
+[[!format txt """
+click ("frmXChat:shrink@FreeNode/#mandriva(+tncPz)", "tbtnT")
+click ("frmXChat:shrink@FreeNode/#opensocial(+sn)", "tbtnS")
+"""]]
+Here "_frmXChat:shrink@FreeNode/#mandriva(+tncPz)_" and "frmXChat:shrink@FreeNode/#opensocial(+sn)" are the window names. It is this window name that the LDTP engine later uses when you play the converted python scripts. You will notice that as you continue recording, the window name changes. So if the window name is not exactly the same when you are playing the converted code, ldtpeditor gives and error.
+
+To overcome this difficulty we introduce the feature of window name support. This feature takes advantage of the LDTP engine's ability to recognise windows using wildcards.
+
+So when we add the window name 'XChat' in the "Supported Application" list, here is what the ldtpeditor records:
+
+
+[[!format txt """
+click ("*XChat*", "tbtnT")
+click ("*XChat*", "tbtnS")
+"""]]
+Thus the converted code runs even when the window name changes as long as it contains the string "XChat".
+
+To help ldtpeditor recognize the application you are working with follow the following very simple steps:
+
+* First recognize the string which almost always is contained in your window name (in our example above its "XChat"). Drop the white spaces, so "Mozilla Firefox" becomes "[[MozillaFirefox|MozillaFirefox]]". Make sure its unique to your window and is not contained in other windows open when you play your converted script. If such a window exists which may cause trouble while playing, close it!
+* Click Edit App List in Preference window. You will see a treeview of all supported applications.
+* Click on Add_**.**_
+* Type in the string which identifies your window and click OK.
+* You will find the string you typed in in the list. Click OK to save it or Cancel otherwise.
+* Feel free to delete any window name which you think is not required in the list.
+* Record and Play as you normally do. You will find that is the Window name is present in any recorded string, its gets wildcard-ed B-)
+_**LDTP Editor Object Oriented LDTP (OOLDTP) Support (new):**_
+
+LDTP Editor can now generate ooldtp scripts when the "Generate ooldtp scripts" option is selected in preferences._** **_
+
+**Normal LDTP Scripts:**
+
+
+[[!format txt """
+from ldtp import *
+from ldtputils import *
+try:
+selectrow ("*BuddyList*", "ttbl0", "Ashim Paul")
+selectrow ("*BuddyList*", "ttbl0", "D. Dhinesh\nProxy War..")
+waittillguinotexist ("*BuddyList*")
+waittillguiexist ("*XChat*")
+click ("*XChat*", "btnConnect")
+selectmenuitem ("*XChat*", "mnuChannelTab")
+waittillguinotexist ("*XChat*")
+except LdtpExecutionError, msg:
+raise
+"""]]
+**Object Oriented LDTP Scripts:**** **
+
+
+[[!format txt """
+from ldtp import *
+from ldtputils import *
+from ooldtp import *
+try:
+ BuddyList = context("*BuddyList*")
+ BuddyList.selectrow ("ttbl0", "Ashim Paul")
+ BuddyList.selectrow ("ttbl0", "D. Dhinesh\nProxy War..")
+ BuddyList.waittillguinotexist ()
+ XChat = context("*XChat*")
+ XChat.waittillguiexist ()
+ XChat.click ("btnConnect")
+ XChat.selectmenuitem ("mnuChannelTab")
+ XChat.waittillguinotexist ()
+except LdtpExecutionError, msg:
+ raise
+"""]]
+
+
+---
+
+ _** ** **********_** _** ** _
+
+************Note:_** The generated code had many unwanted waittillguiexist. I saw waittillguiexist (”dlg0″) in many p</ins>l<ins>aces. If your playback is stopped because of this, remove that before running the scripts. Sometime the resource will go high as the application map info is collected from the application, so no need to worry.If you find any issues regarding LDTP Editor, report it to ldtp-dev at</ins> lists.freedesktop.org or nagappan at gmail dot com or sp2hari at gmail dot com <ins> ** _ _
+
+
+## Known issues
+
+[[Recording TO DO|RecordTODO]]
+
+
+## Demo of LDTP Recording
+
+* Inside [[netbeans|http://freeshell.in/~taggy/ldtp/ldtpguidemo.html]] editor
+
+## Reference
+
+* How to create [[LDTP_test_scripts_in_python|LDTP_test_scripts_in_python]]
+* Running LDTP scripts [[How_to_execute_scripts|How_to_execute_scripts]]
+* Sequencing set of LDTP scripts using [[ldtprunner_XML|ldtprunner_XML]] file
+* Script input [[Data_XML|Data_XML]] file - Useful to maintain a generic script \ No newline at end of file
diff --git a/RecordTODO.mdwn b/RecordTODO.mdwn
new file mode 100644
index 0000000..fc6bbdb
--- /dev/null
+++ b/RecordTODO.mdwn
@@ -0,0 +1,25 @@
+
+
+## TODO for Record
+
+**Check box**
+
+* With respect to gedit->edit->preferences events are getting generated automatically. So the respective calls are generated.
+**Table cell**
+
+* To select a table cell we need to click it two times for the firs time.
+* In few cases the select row event raised two many times. For example, font selector dialog box, under gedit->edit->preferences->Fonts & Colors->Editor Font
+Combo box
+
+* In some cases the selected list items events are not properly captured and the respective LDTP API is not generated
+**Menu item**
+
+* As of now, if we are navigating menu item, then we have to select it. After navigation, If we are not going to select any menu item, then the last navigated menu item will be added to the generated code.
+**Text**
+
+* Gedit text region is not captured
+
+## Command line options
+
+* Preferences option must be worked upon
+**Ref:** [[How to use Recording|RecordHOWTO]]
diff --git a/SoC.mdwn b/SoC.mdwn
new file mode 100644
index 0000000..4f272d6
--- /dev/null
+++ b/SoC.mdwn
@@ -0,0 +1,6 @@
+
+LDTP participating in Google Summer of Code under different organizations
+[[!table header="no" class="mointable" data="""
+[[SoC07|SoC07]] | Firefox automation and Tinderbox integration under Mozilla organization
+[[SoC06|SoC06]] | Evolution automation and Tinderbox integration under GNOME organization
+"""]]
diff --git a/SoC06.mdwn b/SoC06.mdwn
new file mode 100644
index 0000000..e8e694e
--- /dev/null
+++ b/SoC06.mdwn
@@ -0,0 +1,37 @@
+
+* **Google Summer of Code '06 - Under GNOME Organization**
+
+# Tasks
+
+* Tinderbox integration
+* Evolution automation -- [[Test_Cases|Test_Cases]]
+* LDTP Regression suite
+
+# schedule
+
+* LDTP integration into jhbuild
+([[ScreenCast|ScreenCast]] available at: [[http://people.freedesktop.org/~prashmohan/soc/screencasts/jhbuild-screencast-low.ogg|http://people.freedesktop.org/~prashmohan/soc/screencasts/jhbuild-screencast-low.ogg]]) (Patch available at [[http://people.freedesktop.org/~prashmohan/soc/jhbuild.patch|http://people.freedesktop.org/~prashmohan/soc/jhbuild.patch]])
+
+* Present - June 15th -- Integration of ldtp into jhbuild June 16th - June 22th -- Integration of ldtp into jhautobuild,tinderbox June 22nd - June 30th -- Buffer, error correction, comments, start early work on evolution automation, submit code
+* Evolution Automation
+(Code Available at [[http://people.freedesktop.org/~prashmohan/soc/evolution/|http://people.freedesktop.org/~prashmohan/soc/evolution/]])
+
+* July 1st - July 10th -- Mailer Automation
+ * (short screencast at: [[http://prashblog.be/2006/07/11/evolution-mailer-automation-using-ldtp/|http://prashblog.be/2006/07/11/evolution-mailer-automation-using-ldtp/]])
+July 11th - July 20th -- Address, Tasks Automation (Screencast Available at: [[http://people.freedesktop.org/~prashmohan/soc/screencasts/evolution-addrbook-low.ogg|http://people.freedesktop.org/~prashmohan/soc/screencasts/evolution-addrbook-low.ogg]]) July 21st - July 31st -- Calendar Automation (Screencast Available at: [[http://people.freedesktop.org/~prashmohan/soc/screencasts/evolution-calendar-low.ogg|http://people.freedesktop.org/~prashmohan/soc/screencasts/evolution-calendar-low.ogg]]) August 1st - August 5th -- Buffer for Evolution Automation,Submit code to ldtp-dev list
+
+* LDTP Regression Suite
+(Code available at: [[http://people.freedesktop.org/~prashmohan/soc/reg-suite/|http://people.freedesktop.org/~prashmohan/soc/reg-suite/]])
+
+* August 6th - August 15th -- LDTP Regression Suite August 16th -August 20th -- Buffer for all activities August 21st -- Final Submission of Code to ldtp-dev, Google
+
+# Student
+
+[[Prashanth Mohan|http://prashblog.be/]]. Final report available at [[http://people.freedesktop.org/~prashmohan/soc/|http://people.freedesktop.org/~prashmohan/soc/]]
+
+
+# Mentor
+
+[[Veerapuram Varadhan|http://varadhan.blogspot.com/]]
+
+[[Emily Chen|http://blogs.sun.com/roller/page/emily]]
diff --git a/SoC07.mdwn b/SoC07.mdwn
new file mode 100644
index 0000000..e96bcea
--- /dev/null
+++ b/SoC07.mdwn
@@ -0,0 +1,31 @@
+
+* **Google Summer of Code '07 - Under Mozilla Foundation**
+
+# Tasks
+
+* Firefox Automation
+* Tinderbox Integration
+
+# schedule
+
+* Firefox Automation
+ * Automate most Basic Functional Tests (BFT) cases from [[Litmus.mozilla.org|http://litmus.mozilla.org/]]for Firefox Trunk build.
+ * Schedule : April 20 - June 30 Test cases status available [[here|Firefox_Test_Cases]].
+* Tinderbox Integration
+ * July 1 - August 15
+
+# Student
+
+[[Harishankaran|http://sp2hari.blogspot.com/]]
+
+
+# Mentor
+
+[[NagappanAlagappan|http://nagappanal.blogspot.com/]]
+
+[[Emily Chen|http://blogs.sun.com/roller/page/emily]]
+
+
+# SoC 07 status
+
+Can be tracked from [[Firefox_Test_Cases|Firefox_Test_Cases]]
diff --git a/TeamMembers.mdwn b/TeamMembers.mdwn
new file mode 100644
index 0000000..c968a99
--- /dev/null
+++ b/TeamMembers.mdwn
@@ -0,0 +1,25 @@
+[[!table header="no" class="mointable" data="""
+**Core Team**|||
+ Emily Chen (emily (dot) chen (@) sun (dot) com) | Patrick Gu (Patrick (dot) Gu (@) Sun (dot) COM)
+ Nagappan A (nagappan (@) gmail (dot) com) (LDTP Maintainer) | Venkateswaran S (wenkat (dot) s (@) gmail (dot) com)
+ Prem Kumar J (jpremkumar (@) novell (dot) com) | S.Theyagarajan (theyaga (@) gmail (dot) com)
+ K.Harishankaran (sp2hari (@) gmail (dot) com) | Varadhan (vvaradhan (@) novell (dot) com)
+ Prashanth Mohan (prashmohan (@) gmail (dot) com) | Guofu Xu (Guofu (dot) Xu (@) palmsource (dot) com)
+ Shreyank Gupta (shreyankg (@) gmail (dot) com) | Yingjun Li (yingjunli (@) gmail (dot) com) (Cobra Maintainer)
+"""]]
+[[!table header="no" class="mointable" data="""
+**Active Contributors**|||
+ Khasim Shaheed (khasim.shaheed (@) gmail (dot) com) | Thanikachalam S (thanika_1999 (@) yahoo (dot) com)
+ Harry (harry (dot) lu (@) sun (dot) com) | Kaveri (kaveri (dot) murthy (@) hp (dot) com)
+ Krishnan R (aparkrish (@) gmail (dot) com) | Alex.Yu (hao (dot) yu (@) palmsource (dot) com)
+ Shankar Ganesh (shagan (dot) glare (@) gmail (dot) com) | Raghu Dandin (Raghu (dot) Dandin (@) palmsource (dot) com)
+ Tao Miao (Tim (dot) Miao (@) sun (dot) com) | Poornima Nayak (pnayak (@) novell (dot) com)
+"""]]
+[[!table header="no" class="mointable" data="""
+**Package maintainer**|||
+ SLED, OpenSuSE RPM - Frank Seidel (fseidel (@) suse (dot) de)
+ Debian, Ubuntu package - Kartik Mistry (kartik (dot) mistry (@) gmail (dot) com)
+ Sun Solaris - Dave Lin (Dave (dot) Lin (@) sun (dot) com)
+ Fedora / Mandriva RPM - Nagappan A (nalagappan (@) vmware (dot) com)
+ Gentoo ebuild - Navtej Singh (n (dot) s (dot) buttar (@) gmail (dot) com))
+"""]]
diff --git a/Tutorials.mdwn b/Tutorials.mdwn
new file mode 100644
index 0000000..c18682c
--- /dev/null
+++ b/Tutorials.mdwn
@@ -0,0 +1,16 @@
+
+[[The White Paper on Keyword Driven Automation Framework|http://safsdev.sourceforge.net/FRAMESDataDrivenTestAutomationFrameworks.htm]]
+
+[[How_to_write_test_scripts_in_python|How_to_write_test_scripts_in_python]] / [[How_to_create_Test_Scripts_for_LDTP|How_to_create_Test_Scripts_for_LDTP]]
+
+[[How_to_develop_component_functions_for_LDTP|How_to_develop_component_functions_for_LDTP]]
+
+[[Test-case_generation_procedure|Test-case_generation_procedure]]
+
+[[How to use Recording|RecordHOWTO]]
+
+**Absolete:**
+
+[[Howto_generate_Application_map|Howto_generate_Application_map]]
+
+[[Howto_use_LDTP_Editor|Howto_use_LDTP_Editor]]
diff --git a/UsefulLinks.mdwn b/UsefulLinks.mdwn
new file mode 100644
index 0000000..59eac5e
--- /dev/null
+++ b/UsefulLinks.mdwn
@@ -0,0 +1,117 @@
+
+
+## Automation Framework
+
+[[http://safsdev.sourceforge.net|http://safsdev.sourceforge.net]]
+
+
+## Accessibility
+
+[[http://developer.gnome.org/projects/gap/|http://developer.gnome.org/projects/gap/]]
+
+[[http://developer.gnome.org/projects/gap/guide/gad/|http://developer.gnome.org/projects/gap/guide/gad/]]
+
+[[http://developer.gnome.org/doc/API/|http://developer.gnome.org/doc/API/]]
+
+[[http://developer.gnome.org/doc/API/2.0/atk/atk.html|http://developer.gnome.org/doc/API/2.0/atk/atk.html]]
+
+[[http://developer.gnome.org/doc/API/2.0/at-spi/index.html|http://developer.gnome.org/doc/API/2.0/at-spi/index.html]]
+
+
+## Mozilla Accessibility
+
+[[http://www.mozilla.org/access/|http://www.mozilla.org/access/]]
+
+[[http://www.mozilla.org/access/architecture|http://www.mozilla.org/access/architecture]]
+
+[[http://www.mozilla.org/projects/ui/accessibility/unix/architecture.html|http://www.mozilla.org/projects/ui/accessibility/unix/architecture.html]]
+
+
+## KDE Accessibility
+
+[[http://accessibility.kde.org/|http://accessibility.kde.org/]]
+
+[[http://trolls.troll.no/~harald/accessibility/|http://trolls.troll.no/~harald/accessibility/]]
+
+[[http://accessibility.kde.org/developer/atk.php|http://accessibility.kde.org/developer/atk.php]]
+
+
+## Linux Accessibility
+
+[[http://www.faqs.org/docs/Linux-HOWTO/Accessibility-HOWTO.html|http://www.faqs.org/docs/Linux-HOWTO/Accessibility-HOWTO.html]]
+
+
+## Java access bridge - ATK
+
+[[http://www.linuxfromscratch.org/blfs/view/cvs/gnome/java-access-bridge.html|http://www.linuxfromscratch.org/blfs/view/cvs/gnome/java-access-bridge.html]]
+
+[[http://mail.gnome.org/archives/gnome-accessibility-list/2003-November/msg00085.html|http://mail.gnome.org/archives/gnome-accessibility-list/2003-November/msg00085.html]]
+
+
+## OpenOffice.org
+
+[[http://ui.openoffice.org/accessibility/at-support.html|http://ui.openoffice.org/accessibility/at-support.html]]
+
+[[http://ui.openoffice.org/accessibility/AWB.html|http://ui.openoffice.org/accessibility/AWB.html]]
+
+
+## Windows GUI test tools and Wine
+
+[[http://kegel.com/wine/testsw.html|http://kegel.com/wine/testsw.html]]
+
+
+## Python related links
+
+If you have _**Novell Linux Desktop**_ and if you have installed python-doc package, you can see python documentation in /usr/share/doc/packages/python/html directory.
+
+Alternate online - [[http://docs.python.org/|http://docs.python.org/]] You can download them for offline reading from [[http://docs.python.org/download.html|http://docs.python.org/download.html]]
+
+**General Python links**
+
+[[http://www.byteofpython.info/|http://www.byteofpython.info/]] - Python Cook Book
+
+[[http://www.vex.net/~x/parnassus/|http://www.vex.net/~x/parnassus/]]
+
+[[http://heather.cs.ucdavis.edu/~matloff/python.html|http://heather.cs.ucdavis.edu/~matloff/python.html]]
+
+[[http://www.scipy.org/wikis/topical_software/TopicalSoftware|http://www.scipy.org/wikis/topical_software/TopicalSoftware]]
+
+[[http://pydoc.org/2.3/|http://pydoc.org/2.3/]]
+
+[[http://www.amk.ca/|http://www.amk.ca/]]
+
+**Python Debugging links**
+
+[[http://www.python.org/doc/current/lib/module-pdb.html|http://www.python.org/doc/current/lib/module-pdb.html]]
+
+[[http://pydoc.org/2.3/pdb.html|http://pydoc.org/2.3/pdb.html]]
+
+Exception Handling: [[http://docs.python.org/tut/node10.html|http://docs.python.org/tut/node10.html]]
+
+**Python specific to GTK**
+
+[[http://www.pygtk.org/|http://www.pygtk.org/]]
+
+[[http://www.moeraki.com/pygtktutorial/pygtk2tutorial/index.html|http://www.moeraki.com/pygtktutorial/pygtk2tutorial/index.html]]
+
+[[http://pygtk.org/pygtk2reference/index.html|http://pygtk.org/pygtk2reference/index.html]]
+
+[[http://www.python.org/moin/PyGtk|http://www.python.org/moin/PyGtk]]
+
+**Python specific to Java script**
+
+[[http://wwwsearch.sourceforge.net/|http://wwwsearch.sourceforge.net/]]
+
+[[http://wwwsearch.sourceforge.net/python-spidermonkey/|http://wwwsearch.sourceforge.net/python-spidermonkey/]]
+
+
+## IRC through web interface
+
+[[http://www.chriscole.info/cgiirc/irc.cgi|http://www.chriscole.info/cgiirc/irc.cgi]] _**or**_ [[http://www.ictoadd.com/cgiirc/irc.cgi|http://www.ictoadd.com/cgiirc/irc.cgi]]
+
+[[http://ircatwork.com/|http://ircatwork.com/]]
+
+
+## Project development state
+
+[[http://cia.navi.cx/stats/project/ldtp|http://cia.navi.cx/stats/project/ldtp]]
diff --git a/class.mdwn b/class.mdwn
new file mode 100644
index 0000000..90741aa
--- /dev/null
+++ b/class.mdwn
@@ -0,0 +1,16 @@
+
+
+## Syntax
+
+<name>={class=<type of object>[, <optional arguments>]
+
+Example: gedit={class=frame, app_name=gedit}
+
+
+## Description
+
+class keyword, is used to identify the object type.
+
+Refer: [[gui.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/gui.c]], [[parser.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/appmap/parser.c]]
+
+Check all the [[class_keywords|class_keywords]] implemented
diff --git a/click.mdwn b/click.mdwn
new file mode 100644
index 0000000..f5e6ccb
--- /dev/null
+++ b/click.mdwn
@@ -0,0 +1,58 @@
+
+
+## Syntax
+
+click ('<window name>', '<component name>')
+
+
+## Description
+
+click on radio button / check box / push button/ combo box/ radio menu item/ toggle button/ radio button.
+
+
+## Implementation
+
+_**Radio Button**_
+
+If radio button is already in checked state, then this function will uncheck (unset) it.
+
+If radio button is already in unchecked state, then this function will check (set) it.
+
+Refer: [[radio_button.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/radio_button.c]]
+
+_**Check Box**_
+
+If check box is already in checked state, then this function will uncheck (unset) it.
+
+If check box is already in unchecked state, then this function will check (set) it.
+
+Refer: [[check_box.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/check_box.c]]
+
+_**Push Button**_
+
+If push button state is enabled, then click on the object.
+
+Refer: [[push_button.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/push_button.c]]
+
+_**Toggle Button**_
+
+Click on the toggle button.
+
+Refer: [[toggle_button.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/toggle_button.c]]
+
+_**Combo Box**_
+
+Clicks on combo box, drop down list of combo box will be visible if not already else drop down list of combo box closes.
+
+Refer: [[combo_box.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/combo_box.c]]
+
+
+## Examples
+
+Example for push button (With respect to gedit open dialog)
+
+click ('dlgOpen', 'btnOpen')
+
+For Check box, Check menu item, on doing this action, the state will be toggled.
+
+For Radio button, Radio menu item, if they are not already selected, they are selected, otherwise silently ignored.
diff --git a/conversion.mdwn b/conversion.mdwn
new file mode 100644
index 0000000..3e959ce
--- /dev/null
+++ b/conversion.mdwn
@@ -0,0 +1,9 @@
+# MoinMoin to Ikiwiki conversion
+
+If you have an account on Annarchy, you can help out with the conversion of this wiki.
+
+You can follow the [[page conversion|http://wiki.freedesktop.org/sitewranglers/wiki/moin2iki_page_selection/]] instructions using `PROJECT="ldtp"`.
+
+Here is a list of broken links, which should be a starting place for what needs converting:
+
+[[!brokenlinks]]
diff --git a/guiexist.mdwn b/guiexist.mdwn
new file mode 100644
index 0000000..ffc58de
--- /dev/null
+++ b/guiexist.mdwn
@@ -0,0 +1,22 @@
+
+
+## Syntax
+
+guiexist ('<window name>')
+
+
+## Description
+
+If the given window name exist, this function returns 1. If window doesnot exist, then this function returns 0.
+
+Ref: [[ldtp.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/ldtp.c]]
+
+
+## Implementation
+
+returns 1 on success and 0 on no existing window
+
+
+## Example
+
+guiexist ('dlgOpen')
diff --git a/index.mdwn b/index.mdwn
new file mode 100644
index 0000000..00a6f9c
--- /dev/null
+++ b/index.mdwn
@@ -0,0 +1,44 @@
+
+_**Cross Platform GUI Test Automation tool**_ Linux version is [[LDTP|http://ldtp.freedesktop.org]], Windows version is [[Cobra|https://github.com/ldtp/cobra]] and Mac version is [[PyATOM|https://github.com/pyatom/pyatom]].
+
+* Linux GUI testing is known to work on GNOME / KDE (QT >= 4.8) / Java Swing / [[LibreOffice|LibreOffice]] / Mozilla application on all major Linux distribution
+* Windows GUI testing is known to work on application written in .NET / C++ / Java / QT on Windows XP SP3 / Vista SP2 / Windows 7 / Windows 8
+* Mac GUI testing is known to work on OS X Snow Leopard/Lion/Mountain Lion. Where ever ATOMac runs, LDTP should work on it
+
+The GNU/Linux Desktop (GUI Application) Testing Project (GNU LDTP) aimed at producing high quality test automation framework and cutting-edge tools that can be used to test and improve the GNU/Linux or Solaris desktops. It uses the **Accessibility** libraries to discover through the application's user interface.
+
+**Supported OS**
+
+GNU LDTP is a GNU/Linux / Unix GUI application testing tool. It runs on GNU/Linux, Windows, Mac, Solaris, FreeBSD, NetBSD and Embedded environments ([[Palm source|http://www.access-company.com/about/opensource/contributions.html]]).
+
+**Supported application**
+
+As of now, GNU LDTP can test any GNOME-based GUI applications, which are accessibility-enabled, Mozilla, Openoffice.org, any Java application (should have a UI based on swing), KDE 4.x applications based on QT 4.8, Windows applications. LDTP can be used to perform functional, regression testing, so on.. of GUIs built out of the above mentioned GNOME, KDE, Windows and Java technologies.
+
+**Supported language**
+
+* [[Python|http://ldtp.freedesktop.org/user-doc/index.html]]
+* [[Java|http://ldtp.freedesktop.org/javadoc/]]
+* [[Ruby|http://ldtp.freedesktop.org/user-doc/index.html]]
+* [[Perl|http://ldtp.freedesktop.org/user-doc/index.html]]
+* [[C#|http://ldtp.freedesktop.org/user-doc/index.html]]
+* [[VB.NET|http://ldtp.freedesktop.org/user-doc/index.html]]
+* [[PowerShell|http://ldtp.freedesktop.org/user-doc/index.html]]
+* [[Clojure|https://github.com/RedHatQE/gnome.ldtp]]
+**Tutorial**
+
+_If you are a LDTP **beginner**, we recommend you to read the **GNU LDTP Tutorial** [[PDF|http://download.freedesktop.org/ldtp/doc/ldtp-tutorial.pdf]]_
+
+**Credit**
+
+VMware open sources Cobra - Windows version of LDTP works on Windows XP SP3 / Vista SP2 / Windows 7 SP1 / Windows 8.
+
+We encourage you to join the project and help us to create a robust, reliable and stable test tool/framework for Windows/Linux/Mac Desktops. Thanks to **GNOME** Accessibility team and **Microsoft** Accessibility team for their great work and their continuous support.
+[[!table header="no" class="mointable" data="""
+ [[News|News]] | [[Features|Features]] | [[Binary / Source download|Download]] | [[GIT|GIT]] | [[Documentation|Docs]] |
+ [[HOWTO|HOWTO]] | [[FAQ|FAQ]] | [[Bugs|Bugs]] | [[Mailing list / IRC|Mailing list / IRC]] | [[Projects_using_LDTP|Projects_using_LDTP]] | [[LDTP_Demo|LDTP_Demo]]
+ [[Object-Oriented_LDTP|Object-Oriented_LDTP]] | [[TeamMembers|TeamMembers]] | [[Planet LDTP|http://ldtp.freedesktop.org/planet]] | [[Google SoC|SoC]] | [[Platforms|FAQ/LDTPsupportedplatforms]] | [[LDTP_TODO|LDTP_TODO]]
+ [[Contribute|Contribute]] | [[LDTP forum|http://ldtp.myfastforum.org/index.php]] | [[Companies using LDTP|Companies using LDTP]] | | |
+"""]]
+
+This wiki is undergoing [[conversion]]. If you have a fd.o shell account, you can help!
diff --git a/ldtpUnderDapper.mdwn b/ldtpUnderDapper.mdwn
new file mode 100644
index 0000000..0e770f3
--- /dev/null
+++ b/ldtpUnderDapper.mdwn
@@ -0,0 +1,15 @@
+
+If you are bulding LDTP under [[Ubuntu Dapper|http://www.ubuntu.com/]], You will need to make a few changes before you compile LDTP.
+
+* Get the Accessibility Dependancies
+ * sudo apt-get install at-spi libatk1.0-0 libatspi1.0-0 libgail-common libgail-gnome-module libgail17 libtool libatspi-dev libgail-dev libgail-gnome-dev
+* You could _optionally_ install the _at-poke_ and _python-imaging_ package
+ * sudo apt-get install at-poke python-imaging
+* Get _automake 1.9_ and _aclocal 1.9_
+ * sudo apt-get install automake1.9
+* Choose automake1.9 over automake1.4
+ * sudo update-alternatives --config automake
+* Now continue compiling the package as usual
+ * ./autogen.sh --prefix=/usr
+ * make
+ * sudo make install \ No newline at end of file
diff --git a/releasecontext.mdwn b/releasecontext.mdwn
new file mode 100644
index 0000000..39f6dbb
--- /dev/null
+++ b/releasecontext.mdwn
@@ -0,0 +1,22 @@
+
+
+## Syntax
+
+releasecontext ()
+
+
+## Description
+
+Release the last context set.
+
+
+## Implementation
+
+Release the existing (last) context set using [[setcontext|setcontext]] function.
+
+
+## Examples
+
+In some applications the window title changes based on the operation we are doing. For example, when we browse any URL in Firefox browser, the title bar changes. Once title bar changed, then we can change the context using this function.
+
+releasecontext ()
diff --git a/remap.mdwn b/remap.mdwn
new file mode 100644
index 0000000..10a8ad4
--- /dev/null
+++ b/remap.mdwn
@@ -0,0 +1,30 @@
+
+
+## Syntax
+
+remap ('<application-name>', '<dialog name>')
+
+undoremap ('<application-name>', '<dialog name>')
+
+
+## Description
+
+We can handle dynamically created widgets (meaning widgets created at run time) using this remap function. Calling remap will generate appmap for the given dialog at run time and update the hash table. Then we can access the new widgets. But please make sure to call undoremap() once the required functions are performed so that the hash table will be reverted back to its original state. The reason for having undoremap() is that subsequent calls to remap() might corrupt the hash table containg the appmap entries.
+
+Please not that the <application-name> should be same as the one given as the commmand-line argument for appmap generation.
+
+
+## Implementation
+
+It uses the same logic that appmap module uses to generate appmap. Please refer to the following link for the source code of the remap functionality [[remap.c|http://cvs.freedesktop.org/ldtp/pyldtp/remap.c?view=markup]]
+
+
+## Examples
+
+For handling widgets created at runtime in the New Appointment creation dialog in Evolution Calendar we can use the remap function as mentioned below.
+
+remap ('evolution', 'dlgAppointment-Nosummary')
+
+. .
+
+undoremap ('evolution', 'dlgAppointment-Nosummary')
diff --git a/selectmenuitem.mdwn b/selectmenuitem.mdwn
new file mode 100644
index 0000000..4e353ac
--- /dev/null
+++ b/selectmenuitem.mdwn
@@ -0,0 +1,22 @@
+
+
+## SelectMenuItem
+
+selectmenuitem ('<window name>', '<menu hierarchy>')
+
+
+## Description
+
+Selects the menu item specified.
+
+
+## Implementation
+
+TODO
+
+
+## Example
+
+With respect to gedit menu structure
+
+selectmenuitem ('gedit', 'mnuFile;mnuNew')
diff --git a/setcontext.mdwn b/setcontext.mdwn
new file mode 100644
index 0000000..d2bf800
--- /dev/null
+++ b/setcontext.mdwn
@@ -0,0 +1,22 @@
+
+
+## Syntax
+
+setcontext ('<previous title name>', '<new title name>')
+
+
+## Description
+
+LDTP selects window (frame / dialog / alert / font chooser) based on the title name.
+
+
+## Implementation
+
+set the context to new title name. Changes are done in is_matching function in gui.c
+
+
+## Examples
+
+In some applications the window title changes based on the operation we are doing. For example, when we browse any URL in Firefox browser, the title bar changes. Once title bar changed, then we can change the context using this function.
+
+setcontext ('Mozilla Firefox', 'NOVELL: Novell and Linux - Mozilla Firefox')
diff --git a/waittillguiexist.mdwn b/waittillguiexist.mdwn
new file mode 100644
index 0000000..8c1f898
--- /dev/null
+++ b/waittillguiexist.mdwn
@@ -0,0 +1,24 @@
+
+
+## Syntax
+
+waittillguiexist ('<window name>')
+
+
+## Description
+
+If the given window name exist, this function returns 1. If window doesnot exist, then this function returns 0. Difference between [[guiexist|guiexist]] and waitguiexist is, waitguiexist waits for maximum 30 seconds. Still the window doesn't appear, then 0 is returned. We can set the environment variable 'GUI_TIMEOUT' to change the default waiting time.
+
+Ref: [[ldtp.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/ldtp.c]]
+
+
+## Implementation
+
+returns 1 on success and 0 on no existing window
+
+
+## Example
+
+waittillguiexist ('dlgOpen')
+
+This function will be useful, when some event is fired and after that if a new window is expected, we can use this function to wait for window to appear.
diff --git a/waittillguinotexist.mdwn b/waittillguinotexist.mdwn
new file mode 100644
index 0000000..b13af31
--- /dev/null
+++ b/waittillguinotexist.mdwn
@@ -0,0 +1,24 @@
+
+
+## Syntax
+
+waittillguinotexist ('<window name>')
+
+
+## Description
+
+If the given window name does not exist, this function returns 1. If window exist, then this function returns 0. Difference between [[guiexist|guiexist]] and waitguinotexist is, waitguinotexist waits for maximum 30 seconds. Still the window does not disappear, then 0 is returned. We can set the environment variable 'GUI_TIMEOUT' to change the default waiting time.
+
+Ref: [[ldtp.c|http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/ldtp/pyldtp/ldtp.c]]
+
+
+## Implementation
+
+returns 1 on success and 0 on no existing window
+
+
+## Example
+
+waittillguinotexist ('dlgOpen')
+
+This function will be useful, when some event is fired and after that if an existing window should close, we can use this function to wait till the window closes.