NI TestStand Idea Exchange

Community Browser
Top Authors
Showing results for 
Search instead for 
Did you mean: 
Post an idea

I would like to see the possibility to add Tools (Menu > Tools) to Toolbars. See the recording below:



As you can see from Tools section I can select only "Customize". It could be great to have the ability to use custom tools when customizing toolbars and menus.

When TestStand launches, it determines the active LabVIEW version and copies the TestStand API VIs into <LabVIEW>\vi.lib\AddOns if not already present. (SOURCE)


I suggest there should be an additional step here and TestStand should call that LabVIEW version to mass compile these VIs.

Currently, the VI version remains unchanged which means when you open a LabVIEW code module which uses these, you'll sometimes find you have a 'dirty dot' due to unsaved changes because of the recompilation. It also means that you wouldn't be able to run a sequence using the LabVIEW Run-Time Engine until you've switched to Development and converted the VIs.

This is a minor annoyance but it would be nice if TestStand could cut out the additional version conversion step.


I do wonder whether the transfer of the TestStand API VIs into the vi.lib could actually occur when LabVIEW is installed if a TestStand installation is detected. Perhaps this might be relevant for other addons which existing LabVIEW installations have.

When opening a version of TestStand which is not the current version, an error dialog shows. It would be helpful if this dialog included a button to open the version selector and/or a button to open the active version.




When assigning a type to a property, the list of types is in an unordered pile. In the next release, can someone please alphabetize it?


(PS. Do not ask about the context of this image. It's not pretty. 😏 )



right now with TestStand Sequence Analyzer utility, it is limited to analyzing a whole sequence file at once (or as much of it as you analyze before you hit the stop button).

However, if I have a long sequence file this can take quite a while, and I don't really want to wait.

Add a feature where I can select areas to analyze and have sequence analyzer just analyze those areas (for example -- select a few (sub)sequences in my sequence file, or a few steps within a sequence).  This way I can limit the area of my analysis to where I know I made changes (or where I know my biggest problems are) and focus on those and not waste time analyzing everything else. 

Hi all,


At times when I am filling out an expression, I'd like to be able to refer other developers to a specific sequence or step within the file.


I think it'd be useful to be able to add clickable "hyperlinks" to other steps or sequences within the same file.


Would anyone else use this if it were a feature?


Thanks as always,

Mr. Jim

I would like to ask to add named types support for TestStand array literals. The current behavior is described as follows:


Declares a one-dimensional array of numbers, strings, Boolean values, object references, or containers. If all elements are of the same type, the result array is an array of elements of that type. If all elements are not of the same type, the result array is an array of containers.

I would like it to be more or less like this:

Declares a one-dimensional array of numbers, strings, Boolean values, object references, containers, or named type. If all elements are of the same type, the result array is an array of elements of that type. If all elements are not of the same type, the result array is an array of containers.

The problem with the current implementation can be seen on the screen.



It is not a bug (BUG 1828580 to be more precise), it is a feature.

I would like to enhance the TestStand Message Box step to add a 'Preview' button.  When selected, it would show how the currently configured message box will look when run.


I find that I am often switching around the text, fonts, and other aspects and would like to get that straightened out before run time.  I know you can run the step individually by selecting 'Run Selected Step' but that is tedious, plus you have to take into account preconditions and other functionality.  Normally, I have to remove the precondition (if there is one) as often the step cannot be run by itself.


So here is my example with the button added.  Not exactly sure what tab it would belong on.


 Message Box with Preview






Please support triple-clicking like in LabVIEW or Firefox...


A double-click selects the word at the click position (OLD behavior),

a triple-click selects the whole text (like <CTRL>+<A>, NEW behavior)



When TestStand has a problem with a module, it provides a Red Exclamation mark to show detail on the problem. 

When you hove over the Red Exclamation mark, you get the details, sometimes with a file path to the detailed error log. 


Need a way to copy/paste the data from the details bubble. Better would be a hyperlink to the file location. 


Right now my workaround is: 

 - Screen capture while hovering over the red exclamation mark

 - Paste the screen capture in MS Paint

 - Re arrange the windows to show MS Paint & MS Explorer 

  - Navigate down file path to find the log file. 





Hi all,


There are times, for instance, when I am paused at a breakpoint and I want to copy the full name expression of some deeply nested variable that only appears at runtime.


I wish there was an option on the context menu that would allow me to copy the full path of some variable.


For instance, in the following illustration I want to be able to copy the string


I've added a context menu option called "Copy Path", but maybe that's the wrong nomenclature.


Am I ignorant of some functionality that already does this? (Besides typing it in the watch window?)


Thanks as usual,


Mr. Jim




Currently, there is no unambiguous solution for passing empty Array of X (where X is a different type than 64-bit Floating Point) as a sequence parameter. If we use {} it is assumed to be of type 64-bit Floating Point. To have an empty Array of Strings we can use ambigues Split("",""). I have no idea how to pass e.g. empty Array of Signed 64-bit Integer without creating empty variables.


It would useful to have Empty Array Literals of a particular type e.g.:

{} - default

{}i64 - for Signed 64-bit Integer

{}ui64 - for Unsigned 64-bit Integer

{}s - for String

{}b - for Boolean

{}r - for Object Reference

{}c - for Container

{}TYPE_NAME - for type definition where TYPE_NAME is type definition name; e.g. Path.

TestStand now works incredibly well with LabVIEW Classes, but there is a slight annoyance with the fact that you cannot call a Dynamic Dispatch VI with an empty Object Reference. The implication of this is that when you want to use a .lvclass, for every class instance you have to call a VI that does nothing more than return a wrapped class constant which then populates an Object Reference. Technically this is not a problem, but it means that your Sequence becomes very quickly littered with these VI's and it would be nice if there was a way within the LabVIEW module adapter settings for a class member call if when you first call a Dynamic Dispatch VI that, as within LabVIEW you can just pass in a class constant rather than a previously populated Object Reference.


The Problem - All the LabVIEW calls prefixed with 'NEW' are simply returning a class constant.




A Potentially more integrated way of doing this


The Dynamic Dispatch input has the option of either passing in an Object Reference, or a class constant.


Adapter Settings Modified.png



All compatiable classes are listed in the value box now - either as .ctls, or alternatively as .lvclasses. This could also possibly be more akin to what happens in labVIEW when you call a Class which has available overrides that it gives you a tree view of the class hierachy to choose from.


Another way you could do this is to have a checkbox adjacent to the 'Class Path:' or 'Member Name:' named 'First Call' or 'New' or 'Construct' that then changes the 'Derived Class


Adapter Settings Modified2.png



Since not every path on the hard drive can be in the drop down list, and some may be higher up in the tree from paths that are in the drop down list (and some may not be there at all) it would be great if we could specify relative paths and/or environment variables.

For example:

TestStand Application Data (for Windows 7) = "C:\ProgramData\National Instruments\TestStand". But, I want to install a file structure starting at "C:\ProgramData". Currently, my only options are to write a custom command to copy the files over after install to some other directory that's in the combo box. But this isn't great because things can be easily left behind on uninstall.

With a relative path, I could specify the subdirectory of to be "..\.." and with Windows environment variable support, I could specify %ALLUSERSPROFILE%. Either would take me to "C:\ProgramData".

Having tried both of these in TS2010sp1 installer builds, neither of these seem to be supported, and it would be awesome if they were in the future.


I was in the middle of creating an ugly expression that was parsing a string and building a file path from other standard file paths and realized that I can clean up the expressing by creating a few local variables.  But then I thought do I really want to create these local variables in my sequence that only exist for the purpose of this one expression.  Then I thought, what if I can define a variable within the expression itself, kind of how a variable is defined in C or something similar.  It only exists during the evaluation of the expression.

Currently, if you create a step type and name it OnNewStep, it will execute when an instance of the step is created.  This is pretty confusing to new users - why don't we just have an OnNewStep substep type (like prestep, edit, etc)? Custom steps would then just be meant to be called manually using the Step.ExecuteSubstep() Method as documented in the help.




We could keep the "onNewStep" custom step functionality to maintain backwards compatibility with older step types. 

Hi there,


This post is just in order to know why there is a user interface available in LabVIEW language (simple or full-featured) suitable for sequential model and NOT for Batch and Parallel models, while these are available in CVI language ?


The customer, who is an allaince member and a famous TestStand user (MESULOG) submitted this idea because he had to translate code from CVI to LabVIEW, and thnik this would be a great thing to add to the next release.







To import/export properties in TestStand the JSON format would be much more intuitive than the proprietary CSV format.
It would also better fit to the structur of the TestStands property structur.



For the moment the runtime error handling can be managed by using ...


  • Runtime error options
  • Ignore runtime error flags
  • Manually, for action steps, by handling actions returns

It should be nice to add such a kind TRY CATCH block, in order to modify the error handling in a local section of a sequence.



    Steps ...

    Steps ...


     case 35  // Error code = 35


     case default // All other error codes




Doing so, could be a way to handle runtime errors, in an other way that the global configured way.