<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.3%2FDevelopers%2FQtTesting</id>
	<title>Documentation/4.3/Developers/QtTesting - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.3%2FDevelopers%2FQtTesting"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/QtTesting&amp;action=history"/>
	<updated>2026-04-09T11:59:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/QtTesting&amp;diff=61799&amp;oldid=prev</id>
		<title>Unknown user: Text replacement - &quot;slicerWiki/index.php&quot; to &quot;wiki&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/QtTesting&amp;diff=61799&amp;oldid=prev"/>
		<updated>2019-11-21T17:05:19Z</updated>

		<summary type="html">&lt;p&gt;Text replacement - &amp;quot;slicerWiki/index.php&amp;quot; to &amp;quot;wiki&amp;quot;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 17:05, 21 November 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l50&quot; &gt;Line 50:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 50:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Create your XML script ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Create your XML script ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See [http://www.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/Documentation/Nightly/SlicerApplication/QtTesting QtTesting user Wiki] to know how to create this xml script.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See [http://www.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/Documentation/Nightly/SlicerApplication/QtTesting QtTesting user Wiki] to know how to create this xml script.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Save the xml script to''' &amp;lt;code&amp;gt;Slicer/Applications/SlicerApp/Data/Input/MYTUTORIALNAME.xml''&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Save the xml script to''' &amp;lt;code&amp;gt;Slicer/Applications/SlicerApp/Data/Input/MYTUTORIALNAME.xml''&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{ambox  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{ambox  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| type = content&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| type = content&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|text = If you need data, please first add the data to the Sample Data module, and use this module during the test. See instruction [http://www.slicer.org/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki/index.php&lt;/del&gt;/SampleData here]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|text = If you need data, please first add the data to the Sample Data module, and use this module during the test. See instruction [http://www.slicer.org/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/SampleData here]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Documentation/{{documentation/version}}/Modules/SampleData Sample Data]] module according to the current Slicer version&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Documentation/{{documentation/version}}/Modules/SampleData Sample Data]] module according to the current Slicer version&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Unknown user</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/QtTesting&amp;diff=35233&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.3</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/QtTesting&amp;diff=35233&amp;oldid=prev"/>
		<updated>2013-09-05T03:34:32Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.3&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
__TOC__&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|&lt;br /&gt;
[[Image: 3DSlicerQtTesting.png]]&lt;br /&gt;
|}&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
QtTesting provides us a testing framework to test our application. It complements unit tests, by testing the application in its globality.&lt;br /&gt;
 &lt;br /&gt;
Following is a step by step guide to create slicer unit test, or module unit test, using this framework, which can be run as part of a nightly build automatic testing.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rules for Developers=&lt;br /&gt;
&lt;br /&gt;
QtTesting records high level events, and try to not record mouse events as mouse press, release or move.&amp;lt;br&amp;gt;&lt;br /&gt;
Furthermore, QtTesting is still under heavy development and some low level events won't be properly recorded.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Please be aware of those following warning :''' &lt;br /&gt;
&lt;br /&gt;
* Use '''''&amp;quot;activated&amp;quot;''''' signal instead of '''''&amp;quot;clicked&amp;quot;''''', when connection Qt views&lt;br /&gt;
&lt;br /&gt;
=How QtTesting and CTK work=&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&lt;br /&gt;
[[Image: ctkQtTestingSchemaPlay.png|550px|]]&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&lt;br /&gt;
[[Image: ctkQtTestingSchemaRecord.png|550px]]&lt;br /&gt;
|-&lt;br /&gt;
|'''''How it works :'''''&lt;br /&gt;
When pqTestUtility starts the playback, it calls pqEvenDispatcher to play a specific script. Then&lt;br /&gt;
pqEventDispatcher finds an eventSource able to read the script. Then pqEventDispatcher forwards each&lt;br /&gt;
event to the pqEventPlayer. Finally, this last class tries to find the best player to playback the action into the&lt;br /&gt;
application. If the action has been done, we start over and over the same process until the end. If there is&lt;br /&gt;
one error, or an action couldn’t be handled, the player fails with an error.&lt;br /&gt;
|'''''How it works :'''''&lt;br /&gt;
When pqTestUtility starts to record events, it finds the observer which will write the file, creates the file,&lt;br /&gt;
and starts the pqEventRecorder.&lt;br /&gt;
Then every time there is a user action in the application, a specific translator will catch it and transform it&lt;br /&gt;
into an high level event. This high level event is sent to the pqEventTranslator, and then to the&lt;br /&gt;
pqEventObserver which writes the action recorded into a specific language, XML for example.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Write a 3DSlicer test using QtTesting=&lt;br /&gt;
&lt;br /&gt;
QtTesting framework can also be use to create module test.&amp;lt;br&amp;gt; Use the description below, but instead of &amp;lt;code&amp;gt;Slicer/Applications/SlicerApp/Testing&amp;lt;/code&amp;gt; all the path start by &amp;lt;code&amp;gt;Slicer/Path/To/The/Modules/Testing&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is the different step to create a test using QtTesting framework. &lt;br /&gt;
&lt;br /&gt;
== Create your XML script ==&lt;br /&gt;
See [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/SlicerApplication/QtTesting QtTesting user Wiki] to know how to create this xml script.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Save the xml script to''' &amp;lt;code&amp;gt;Slicer/Applications/SlicerApp/Data/Input/MYTUTORIALNAME.xml''&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{ambox &lt;br /&gt;
| type = content&lt;br /&gt;
|text = If you need data, please first add the data to the Sample Data module, and use this module during the test. See instruction [http://www.slicer.org/slicerWiki/index.php/SampleData here]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Documentation/{{documentation/version}}/Modules/SampleData Sample Data]] module according to the current Slicer version&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Create a Python script ==&lt;br /&gt;
''This Python test will start 3DSlicer and run the previously recorded xml script''&lt;br /&gt;
&lt;br /&gt;
'''''Create a python file with the following lines'''''&lt;br /&gt;
&lt;br /&gt;
    import os&lt;br /&gt;
    import slicer&lt;br /&gt;
    import ApplicationsSlicerAppData as data&lt;br /&gt;
    filepath = data.input + '/MYTUTORIALNAME.xml')     ex : NeurosurgicalPlanningTutorial.xml&lt;br /&gt;
    testUtility = slicer.app.testingUtility()&lt;br /&gt;
    success = testUtility.playTests(filepath)&lt;br /&gt;
    if not success :&lt;br /&gt;
      raise Exception('Failed to finished properly the play back !')&lt;br /&gt;
&lt;br /&gt;
'''''Save to the directory ''''' &amp;lt;code&amp;gt;Slicer/Applications/SlicerApp/Testing/Python/MYTUTORIALNAME.py &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add the test in CMake ==&lt;br /&gt;
Adding the test in CMake will allow the test to be run with CTest and will also be run by the dashboard machines every nights.&lt;br /&gt;
&lt;br /&gt;
Edit the file &amp;lt;code&amp;gt;Slicer/Applications/SlicerApp/Testing/Python/CMakeLists.txt&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Add your test at the end of the Slicer_USE_QTTESTING condition and add the name in the &amp;lt;code&amp;gt;set_tests_properties&amp;lt;/code&amp;gt; function :&lt;br /&gt;
 &lt;br /&gt;
    if(Slicer_USE_QTTESTING)&lt;br /&gt;
      {   &lt;br /&gt;
      ...&lt;br /&gt;
      slicer_add_python_test(&lt;br /&gt;
        SCRIPT MYTUTORIALNAME.py&lt;br /&gt;
        SLICER_ARGS --launcher-no-splash --qt-testing)&lt;br /&gt;
      set_tests_properties(&lt;br /&gt;
        py_NeurosurgicalPlanningTutorial&lt;br /&gt;
        py_DiffusionTensorImagingTutorial&lt;br /&gt;
        ....&lt;br /&gt;
        py_MYTUTORIALNAME&lt;br /&gt;
        ...&lt;br /&gt;
        PROPERTIES RUN_SERIAL ON&lt;br /&gt;
        )&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You just wrote a Slicer Unit Test using QtTesting framework !&lt;br /&gt;
&lt;br /&gt;
== Run your test==&lt;br /&gt;
&lt;br /&gt;
You can either use directly CTest or the pyhton script created.&lt;br /&gt;
&lt;br /&gt;
===Using CTest===&lt;br /&gt;
{|width = &amp;quot;100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Linux&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Mac&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Windows&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
You need to open a terminal.&amp;lt;br&amp;gt;Then type in the terminal:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 $ cd path/to/Slicer-Superbuild/Slicer-build&lt;br /&gt;
 $ ctest -R MYTUTORIALNAME -VV&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
You need to open a terminal.&amp;lt;br&amp;gt;&lt;br /&gt;
Start -&amp;gt; Microsoft Visual Studio 2008 -&amp;gt; Visual Studio Tools -&amp;gt; Visual Studio 2008 Command Prompt&amp;lt;br&amp;gt;&lt;br /&gt;
Then type in the terminal:&amp;lt;br&amp;gt;&lt;br /&gt;
 $ cd path\to\Slicer-Superbuild\Slicer-build&lt;br /&gt;
 $ path\to\cmake\ctest.exe -R MYTUTORIALNAME -VV&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Using the python script===&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Linux&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Mac&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Windows&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
You need to open a terminal.&amp;lt;br&amp;gt;Then type in the terminal:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 $ cd path/to/Slicer/Application/SlicerApp/Testing/Python&lt;br /&gt;
 $ python MYTUTORIALNAME.py&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
You need to open a terminal.&amp;lt;br&amp;gt;&lt;br /&gt;
Start -&amp;gt; Microsoft Visual Studio 2008 -&amp;gt; Visual Studio Tools -&amp;gt; Visual Studio 2008 Command Prompt&amp;lt;br&amp;gt;&lt;br /&gt;
Then type in the terminal:&amp;lt;br&amp;gt;&lt;br /&gt;
 $ cd path\to\Slicer\Applicaiton\SlicerApp\Testing\Python&lt;br /&gt;
 $ path\to\Slicer-Superbuild\python-build\PCBuild\python.exe MYTUTORIALNAME.py&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Create custom translator/player=&lt;br /&gt;
&lt;br /&gt;
After created a custom widget, it might be possible that all its actions are not properly recorded, or played.&amp;lt;br&amp;gt;&lt;br /&gt;
QtTesting provides us basic translator and player template, to create our custom translator and player according to the widget. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the following command to create those basic files.&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Linux&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Mac&lt;br /&gt;
! style=&amp;quot;border-bottom: 1px solid darkgrey;font-size: 75%;&amp;quot;|Windows&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
You need to open a terminal.&amp;lt;br&amp;gt;Then type in the terminal:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 $ cd path/to/Slicer-Superbuild/CTK-build/QtTesting/Utilities/Scripts&lt;br /&gt;
 $ python TranslatorPlayerWizard.py MY_WIDGET_NAME&lt;br /&gt;
 $ cd ../MY_WIDGET_NAME&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
You need to open a terminal.&amp;lt;br&amp;gt;&lt;br /&gt;
Start -&amp;gt; Microsoft Visual Studio 2008 -&amp;gt; Visual Studio Tools -&amp;gt; Visual Studio 2008 Command Prompt&amp;lt;br&amp;gt;&lt;br /&gt;
Then type in the terminal:&amp;lt;br&amp;gt;&lt;br /&gt;
 $ cd path\to\Slicer-Superbuild&lt;br /&gt;
 $ python-build\PCBuild\python.exe CTK-build\QtTesting\Utilities\Scripts\TranslatorPlayerWizard.py MY_WIDGET_NAME&lt;br /&gt;
 $ cd ../MY_WIDGET_NAME&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ambox&lt;br /&gt;
| type =  &lt;br /&gt;
| text = 4 files should have been created ! &amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;MY_WIDGET_NAMETranslator.cpp &amp;lt;br&amp;gt; &lt;br /&gt;
MY_WIDGET_NAMETranslator.h &amp;lt;br&amp;gt; &lt;br /&gt;
MY_WIDGET_NAMEPlayer.cpp &amp;lt;br&amp;gt; &lt;br /&gt;
MY_WIDGET_NAMEPlayer.h&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Those files are only the basic code. You now have to implement the functions, according to your widget, to record the events&amp;lt;br&amp;gt;Then add those files in the same folder as your widget.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Finally move the 4 files to the same directory as your widget&lt;br /&gt;
&lt;br /&gt;
 $ cd path/to/Slicer-Superbuild/CTK-build/QtTesting/Utilities/MY_WIDGET_NAME&lt;br /&gt;
 $ mv MY_WIDGET_NAMETranslator.cpp MY_WIDGET_NAMETranslator.h MY_WIDGET_NAMEPlayer.cpp MY_WIDGET_NAMEPlayer.h Path/To/My/Widget/Directory&lt;br /&gt;
&lt;br /&gt;
or just a simple copy to the same directory as your widget&lt;br /&gt;
&lt;br /&gt;
 $ cp MY_WIDGET_NAMETranslator.cpp MY_WIDGET_NAMETranslator.h MY_WIDGET_NAMEPlayer.cpp MY_WIDGET_NAMEPlayer.h Path/To/My/Widget/Directory&lt;br /&gt;
&lt;br /&gt;
=Open bugs=&lt;br /&gt;
Work in progress, following the two bug trackers :&lt;br /&gt;
&lt;br /&gt;
[http://na-mic.org/Mantis/search.php?project_id=3&amp;amp;category=QtTesting&amp;amp;sticky_issues=off&amp;amp;sortby=last_updated&amp;amp;dir=DESC&amp;amp;hide_status_id=-2 Slicer issues]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/commontk/CTK/issues?labels=Testing&amp;amp;milestone=&amp;amp;page=1&amp;amp;state=open QtTesting issues]&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>