ContributionsMost RecentMost LikesSolutionsImprovements to the Get Data dialog Hi The Get Data dialog is a great feature but the time spent using it can be reduced: Allow selection of multiple properties in test case/step, such that clicking Add generates multiple variables. Automatically place the cursor in the search box, such that mouse movement and clicks are minimized. Pressing tab, while the cursor is in the search box should move focus to the select options below. Pressing tab again could move the cursor to the next search box. Save the size of Get Data window after closing it. Regards Usability improvements to LoadUI I would like to see the following improvements to the LoadUI interface: Feedback on status of agent readyness, i.e. has the agent received/finished initializing test cases. This is would be a really nice feature as it's impossible to figure out when an agent is ready. Sometime it takes a long time for the project to be uploaded to the agent and for the agent to announce "[SceneAgent] The **** scenario was loaded." in the log, other times it never gets ready. Allow drag'n'dropping of agents under Distribution, such that they can be reoganized. Currently they are seamingly sorted by date added. Resizing Agents in the Distribution list such that a better overview can be achieved. This could also be achieved with an option to view the agents as a list, while allowing the same context menu as well as the option to turn agents ON/OFF. Prevent Horisontal scrolling of Agents under Distribution. I currently have 4 agents and the 4th is already outside of view. Floating the agents in the window will allow more agents to be within the view. Enable multiple selection for removal of scenarios from agents. It currently takes 1 right-click and 1 left-click for each scenario. I have 30 scenarios added to each of my 4 agent which would total 120 mouse click to remove all of them. It's easier to remove the agent, add it again and assign scenarios, which isn't really desirable. Better detection of online/offline agents. Example: The remote agent is running and the Agent under distribution is "ON". Close the remote agent, let ReadyAPI detect that it's disconnected and start the remote agent again. ReadyAPI won't detect that it's running. Transfer dependent files to agents. A ReadyAPI project has a "Script Library" property, so copying the contents of this would be a nice addition Also copying the contents of the -Dsoapui.ext.libraries vmoptions folder would be great. Regards Michael Running ReadyAPI groovy script improvements I'd like to se the following features when working with groovy scripts: Allow ESC to close error dialogs. Also autoselect OK button such that Space og Enter closes the dialog. TAB -> Space works but suggested options would be optimal. Create option for stopping groovy test steps. Once a groovy is running in an infinite loop for example: closing the test step (maybe?) or ReadyAPI is the only option. Try stopping 'while(true) {}'. Regards Michael General usability improvements to ReadyAPI The following feature requests seem too small to have their own feature request, so i decided to collect them in a single post. Enable ctrl+w to close open teststeps, testcases, suites etc. This is standard in a lot of programs now. Tabs in browsers as an obvious example Rename "remove" to "delete" when right clicking a test case (It seems delete is commonly used term in Ready! API). It's delete for the test steps for example. Remember size of navigators after restart. When in split view, in this case a test step on the left and a test case on the right. Double-clicking a test step within the opened test case editor should open the test step as a tab next to the test case and not in a new third and maximized window. This seems undesirable. Cloning a lot of test steps to another test case, results in a lot of work removing "Copy of " from the name. Renaming while cloning should only happen if the destination has a test step with the same name. Regards Michael Re: ReadyApi 2.0 - GetData resizeable I wholehearted agree. It's definitely more "bling" than practical. I'm taking the liberty of piggyback riding this, with some additional requests, as the topic is this specific window: Allow selection of multiple properties in test case/step , such that clicking Add generates multiple variables. Automatically place the cursor in the search box, such that mouse movement and clicks are minimized. Pressing tab, while the cursor is in the search box should move focus to the select options below. Pressing tab again could move the cursor to the next search box. Please let me know, if these should be part of a separate feature requests Re: Make the left view panes remember their hidden/visible settings between sessions I really second this. Also remembering the size of the navigator panes would be great. When the panes are resized, they are back to their default size after a restart of Ready! API. NullPointerException when adding a custom property after adding a Data Sink I'm currently developing a test suite in Ready! API 1.2.2, when i noticed that i wasn't able to add custom properties to anything (The project, test suite, test steps etc.). This happened after i added a Data Sink and set DataSink to Groovy. Doing this resulted in a java.lang.NullPointerException. Creating a new Project, Test Suite, Test Case and adding a Data Sink with Groovy does not reproduce the exception. However, tracking down the error, I was able to produce a very minimal project. This project is stripped down from a much larger project, that i won't be able to share. The excessive line breaks are produced by Ready! API, thus, they were not there, when i stripped down the project. Removing the data sink makes it possible to add custom properties again. Edit: Sorry about the smileys, but they are added automatically. <?xml version="1.0" encoding="UTF-8"?> <con:soapui-project id="7e24385f-8a4f-4a20-890d-42a90b1b6dae" activeEnvironment="Default environment" name="NPE project" resourceRoot="${projectDir}" scriptLibrary="" soapui-version="6.0.0" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:testSuite id="5ceb7db7-d4f1-4476-9380-981d9ff7155f" name="Scenarier"><con:settings/><con:runType>SEQUENTIAL</con:runType><con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="UTIL_CreateSessions" searchProperties="true" id="5522cd35-d557-4a87-877e-7159d8471716" disabled="true"> <con:settings> <con:setting id="d834a5f9-5534-4ee1-b86b-6377c41042eafileName">CreateSessions</con:setting> </con:settings> <con:testStep type="datasink" name="DataSink" id="ad576220-bbbd-401d-b56c-5f48b322443e"><con:settings/><con:config xsi:type="con:DataSinkStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:dataSink type="Groovy"><con:configuration><script/></con:configuration></con:dataSink><con:properties/></con:config></con:testStep><con:properties> </con:properties> <con:reportParameters/> </con:testCase><con:properties/><con:reportParameters/></con:testSuite><con:requirements/><con:properties/><con:wssContainer/><con:databaseConnectionContainer/><con:oAuth2ProfileContainer/><con:reporting><con:reportTemplates/><con:xmlTemplates/><con:xmlTemplates/><con:parameters/><con:parameters/></con:reporting><con:reporting/><con:authRepository/></con:soapui-project> The Stack Trace looks like this: java.lang.NullPointerException at java.util.Arrays$ArrayList.<init>(Unknown Source) at java.util.Arrays.asList(Unknown Source) at com.eviware.soapui.impl.wsdl.teststeps.WsdlDataSinkTestStep.getPropertyExpansions(WsdlDataSinkTestStep.java:356) at com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.getPropertyExpansions(PropertyExpansionUtils.java:256) at com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.getPropertyExpansions(PropertyExpansionUtils.java:272) at com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.getPropertyExpansions(PropertyExpansionUtils.java:272) at com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.getPropertyExpansions(PropertyExpansionUtils.java:272) at com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.renameProperty(PropertyExpansionUtils.java:226) at com.eviware.soapui.impl.wsdl.AbstractTestPropertyHolderWsdlModelItem.renameProperty(AbstractTestPropertyHolderWsdlModelItem.java:127) at com.eviware.soapui.impl.wsdl.panels.teststeps.support.DefaultPropertyHolderTableModel.setValueAt(DefaultPropertyHolderTableModel.java:108) at javax.swing.JTable.setValueAt(Unknown Source) at javax.swing.JTable.editingStopped(Unknown Source) at javax.swing.AbstractCellEditor.fireEditingStopped(Unknown Source) at javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(Unknown Source) at javax.swing.DefaultCellEditor.stopCellEditing(Unknown Source) at javax.swing.JTable$GenericEditor.stopCellEditing(Unknown Source) at javax.swing.plaf.basic.BasicTableUI$Actions.actionPerformed(Unknown Source) at javax.swing.SwingUtilities.notifyAction(Unknown Source) at javax.swing.JComponent.processKeyBinding(Unknown Source) at javax.swing.JTable.processKeyBinding(Unknown Source) at javax.swing.JComponent.processKeyBindings(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)