0% found this document useful (0 votes)
125 views12 pages

List of Bug Fixes, New Features and APIs Implemented After 750 Release

The document summarizes changes made to the Sahi automation framework for desktop, Java, and API features. Key changes include: - Added new features for desktop and Java automation including element identification, drag and drop, and API additions. - Improved APIs for desktop and Java including adding methods for alignment checking, coordinates, keyboard input and more. - Fixed various issues with element identification, value setting, drag and drop and other functionality for desktop, Java applications and the Sahi controller.

Uploaded by

Amit Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
125 views12 pages

List of Bug Fixes, New Features and APIs Implemented After 750 Release

The document summarizes changes made to the Sahi automation framework for desktop, Java, and API features. Key changes include: - Added new features for desktop and Java automation including element identification, drag and drop, and API additions. - Improved APIs for desktop and Java including adding methods for alignment checking, coordinates, keyboard input and more. - Fixed various issues with element identification, value setting, drag and drop and other functionality for desktop, Java applications and the Sahi controller.

Uploaded by

Amit Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

Desktop

Features
- Added depthLimit and breadthLimit in windows automation for handling
identification in large amount loaded data
- Added Microsoft.TestApi library for drag drop issue
- Added SahiThread of python automation app for version controlling
- Added GetCoordinates function to get the coordinate related info of
given element
- Added automationId attribute for data item (telrik winform app).
- Modified code for element search recursion method
- implemented constructors with host and port for Windows, Java
Application, Android and iOS
- Implemented sahiIndex in accessor json and collect apis for json.
- Added combo with click events
- Added debugInfo in log result of windows / java
- windows : accessor_metadata changing api to name

API
- Added _areHorizontallyAligned API in windows lib
- Added _areVerticallyAligned API in windows lib
- Added _isVisiblyInside, _isVisiblyOutside,_isVisiblyOn API in windows
lib
- Added _isCentered, _fitsHeight, _fitsWidth API in windows lib
- Added _assertHorizontallyAligned, _assertVerticallyAligned,
_assertCentered, _assertVisiblyInside, _assertVisiblyOutside, _assertVisiblyOn,
_assertFitsWidth, _assertFitsHeight in windows lib
- Added _startLookInside and _stopLookInside for windows
- Added _keyPress API for windows
- Added new option of _setMode for PYTHON
- Added _setFrame and _resetFrame in scheduler_functions for python
- Added _getBackground color API for windows for identifying background
color of given element
- Modified _collectAttrinutes for regular expression index
- Added _wEdit, _wHyperlink, _wRadiobutton, _wCombobox for windows only
API
- Added _keyUp, _keyDown API
- Added _parentNode API
- Rename _getCoordinates API to _getCoordinatesAndDimension

Fixes
- Resolved issue with collect API's modified code
- Added handling language's special characters by identifying non utf 8
string example : ü
- Fixed progress-bar getValue issue in windows7
- Changes for isAccessorIgnoreCase property of windows
- FIxed select read-only combo-box with reg-ex in windows 7
- _fitsHeight, _fitsWidth fix
- Issue fixed for near API with tab elements and anchor element
identification
- Fixed _collectAttributes issue for characters case, multiple
attributes and issue for passing any property attribute
- Fixed regular expression indexing. Case - If we are searching for
second index of regex and found first in first attribute and second is in next
attribute than unable to find it as on every attribute iteration we are
reinitializing the value of object res which contains counter and element
- Fixed _dragDrop with drop in different target window
- Fixed anchor _in relation in parent child relation in identification
- Changed attribute helptext to helpText camelCase for windows json
- Updated window name for silverlight application due to IE launch in
private window
- Showing Assert and log statement in controller in non browser mode.
- Fixed working of onBeforeStep and onAfterStep for desktop and
resolved onAfterStep not calling after error in browser

===================================================================================
===================================================================================
===================================================================================
===============================================================

Java
Features
- Java: Implemented click() for JTree nodes.
- implemented java automation with rhino js
- invoking click action from SahiJavaAutomation instead of
sahiagent_lib.js
- JAVA: Added implementation for identifiers passed as json.
- JAVA: Added sahi identifiers in list properties's list.
- Added debugInfo in log result of windows / java

API
- Java: Implemented _getAttribute, _collectAttributes,
_collectElementsInfo
- Java: Implemented _contains api and modified testapp.
- Implemented _getWindows and _contains for Java.
- Added elementNotFound exception for _highlight() api.
- Java: added api _getImageText() [to retrieve icon path] java and
applet mode.
- added _getCellIndex() [to retrieve index of row and col for table].
Tests/Doc remaining.
- Added _clickNative implementation for TreeNodes.
- Java: Added identification and _getText() for
"oracle.ewt.statusBar.StatusBar"
- JAVA: Implemented _getTableContents.
- Java: added alignment apis for java and java_applet. Fixed some code
in getPosition(comp, nativePosition)
- JAVA Fixed: _getValue(el, identifier) was not working.
- JAVA: Added _focusWindow() api.
- JAVA: 1. Removed checkNull for _contains api.
- Added _focusWindow for applet mode. Note: This api will only focus
the java application launched. This will not focus the browser window containing
applet. To focus that browser window, do _setMode("BROWSER") and then
_focusWindow() and again _setMode("JAVA_APPLET").
- Added _sahi. for scheduled apis
- Added _getCellIndex() api
- Added _getIconPath
- Added _parentNode api
- updated _launchJavaWSApplication api. It will internally call
_launchJavaApplication api
- Java: when json is passsed as an idetifier for element,
identification will happen for both "name" and "Name" when passed as a key. For eg:
_jvJRadioButton({Name:"Red", sahiIndex:0}) _jvJRadioButton({name:"Red",
sahiIndex:0}) both will work.

Fixes
- Java: Oracle Forms Fixed: _setSelected was not working.
- Oracle Forms: Last check-in reverted the fix for VPopList
_setSelected. Fixed.
- Applet- "stepInfo" was setting as null in case of Applet. Fixed.
- JAVA: Fixed identification of custom elements when no identification
info is available except Index.
- Fixed: Indexing problem was occurring when custom elements are added
in application. If two tables are present (one is JTable and other is custom table,
for both table index 0 was returned.)
- Java function invocation from Sahi: fixed path problem for different
OS.
- Oracle forms unresponsive issue for focus on elements.
- fixed _setSelected
- Fixed oracle elements automation. Oracle forms hanging issue on
focus. Added code for user_extension.js
- Fixed _keyPress not working for value 65. _setAccessorIgnoreCase was
not working.
- Fixed Java: _setValue was not working for custom table.
- Fixed Java: _click was not working for custom table.
- JAVA Fixed: _setValue() not working for Table, when boolean value is
passed, to check/uncheck checkboxes. Removed toString() conversion of value in
componentInfo.setValue.
- JAVA: Fixed fetch apis not working for JAVA mode.
- Fixed: For _setValue if we pass any int value, for instance 13, value
set is 13.0 and thus assertions were failing.
- Fixed: _dragDropNative for table when passed int values was not
working.
- JAVA Controller: Fixed: java controller not working for JAVA,Windows
mode. Added tests.
Fixed result text in java controller. Result was coming in this
format "true__SAHIDELIMITER__null".
fixed accessor callUp and callDown functionality for AVA,
JAVA_APPLET, WINDOWS mode. Remaining for IOS and Android mode.
Fixed anchor button for BROWSER, JAVA, JAVA_APPLET AND WINDOWS
mode. Remainig for IOS and ANDRIOD mode.
Fixed screen refresh after actions performed from java controller
for Android and IOS mode.
fix: Java controller recording
fixed: java controller recording/evaluate expression for iOS
json parsing exceptions were coming for parent child
identification for applet/java application.
Fixed Parent and child from controller for Android and IOS mode.
1. Android: When accessor is set, on performing actions, null
pointer exception was thrown.
2. When accessor is set, with element having index value as an
argument, int type of index value is changed to double.
Fixed: indexing problem when strict visiblity is turned on.
- Controller : For android api list was not coming. Fixed.
- JAVA: Fixed launching of java application from .sh file on OS other
than Windows.
- Controller: Fixed set action from controller. When set button is
clicked for JTree, _setSelected api should be called. When multiple items are
selected for an element, _setSelected api is not working, because syntax generated
was wrong.
- JAVA: fixed playback for elements having identificaion info in format
"text[text]", Sahi was taking anything inside square bracket as index of the
element, and thus throwing NumberFormatException. Modified sample application to
test this scenario.
- Fixed _launchJavaApplication api for launching of .exe application.
Updated batch and shell script files.
- 1) fixed _launchJavaApplication for operating systems other than
windows.
- 2) fIXED execution of java_app.sh from terminal and
_launchJavaApplication. (previously it was working from terminal only. path related
problem was there when invoked from _launchJavaApplication)
- JAVA: Fixed focusWindow() for java and java applet.
- JAVA: Implemented sending of coordinates on ctrl+shift+hover.

===================================================================================
===================================================================================
===================================================================================
===============================================================

Browser

Features
- populate list of script in sahi launcher page for multiple directory
- failedSuiteFiles: adding xsl file for failed suite files
- failedSuiteFiles: Changed UI and modified filenames to link
navigating to edit script page
- Created links for failed scripts in failedSuiteFiles.
- Added Suite Analysis to Suite reports which will show details for
failures, Suite Analysis: Steps count and link updated for step-messages
- Tesseract OCR : checkdin related code, jar files and folders.
- restui: multiple file uploads, UI file upload buttons in body fields
- the file open dialog is triggered from Java
- restui: added support for embedded file-upload using base64 string of
file content. added base64 code until class
- CREATING INDEX ON SCRIPTREPORTS FOR SUITEID.
- Editor: ctrl click on commented include and methods added
- Adding SKIPPED and ABORTED status Adding changes done as part of
implementing SKIPPED and ABORTED status. the bar color in graph to brown for
aborted script
- Adding columns SKIPPEDCOUNT and ABORTEDCOUNT to SUITEREPORTS table in
order to store the corresponding counts. Also added 'depends' column in dd.csv
files.
- Added Tesseract OCR related file for version controlling changes
- Added a retry text box in playback window in Editor, testrunner,
drun, drun different master ant Ant Made retry count as property.
- Adding script retry to ant target. Added retryCount parameter to ant
xml in order to retry the failed and aborted script.
- File upload fix for IE and multiple files feature added.
- Changed the data type of depends to Set. Added depends behavior to
Failed script as well. Its being achieved by the use of tags.
- _getLayout Feature: will get layout of page in file
- Offline graph feature added
- Adding skipped and aborted count in Suite Analysis page
- Committing changes for adding new tables with scripts failed history
which includes the pass percentage and latest status (number of status is
configurable. Default is 10) for each scripts. Table 1 with scripts that have
failed in the perticular suite. Table 2 with scripts that have passed but have some
failure history.
- implemented _keyDown and _keyUp apis for flex with test script.
- Notifying users if more than one instances of Editor are being opened
- Added implementation for custom.js file. End user can write code in
javascript to invoke components method.
- Committing changes for cloud support page. Added more parameters for
launching instance.
- Implementing show/hide images in html logs.
- httpcache: initial implementation, unstable
- Implemented fetching number of images at one request in drun (worked
on ETS, they have more than 2lac images to fetch).
- Proxy will stop with closing all running threads and Dashboard will
not do System
- Custom subject in Email : add custom email in second line of
email_template.xsl, in comments. For example: <!-- Subject : $STATUS -
$SUITEINFO_SUITENAME - $SUITEINFO_HOST - $SUITEINFO_PORT -
$SUITEINFO_BASEURL -->

- File Upload: adding extension to files


- httpcache: added few cache control mechanisms.
- handles max-age,smax-age,public,private directives
implemented no-cache directives
added more props. description
added public directive check
- etag: setting etag to true
- Added Starts with functionality in Logs by using ^ symbol
- Added filtering click-box inside suite
- Multiple file upload test cases added
- reports: added multiple checkboxes filtering for suite report
- Central License Server related changes. Add property
"sahi.central.license_server.enabled=true" in sahi.properties, to enable license
verification from Central License Server and add requisite
"sahi.license_server.host" and "sahi.license_server.port" values.
- added typescript related files in installer.
- Implemented aborted retry and failure retry instead of common retry.
- Committing fix for MySql connection issue with new connector. Added
sql in create_report for setting the sql mode to 'NO_BACKSLASH_ESCAPES'
- certgen: added nss-util command to import Sahi certificate in NSS
trusted certificates database
- Add functionality of storing input stream from http response to
machine disk file and send data from file to output stream of http response
- Add functionality of forwarding subject alternative names of ssl
certificate and shorten URL if size of URL is bigger
Add domain as subject alternative name in SSL certificate
- Fix for Editor Slowness
1. Added index
2. Made getAllFunction method global
3. Made getAutocomplete method global
4. Changed getAutocomplete for specific root directory
5. Made getInclude method asynchronous
6. Removed refreshAllTabsMEtadata while loading a tab
7. Average time and estimated time changed to load only when info
is clicked
8. Refresh only tabs from same root directory
9. Modify query of getAutocomplete method
10. Chaged to StringBuilder in toJSON2D method in utils
- Added batch and java file to delete suite reports of particular
durationAdded batch and
- Suite list Page: Added Consolidated Report functionality to Suite
List
- Generate file name based on previous filename when sahi script name
is empty while record is clicked
- Consolidated Report: Download as Excel functionality Added

API
- _addResponseSubstitutionRule _removeResponseSubstitutionRule
- Modified getImageText() api for custom icons. Add metadata in json
file for the icon.
- Modified _count API for working with alternate identifiers and
modification with near API for not count given near element Case insensitive
_getAttribute's attributeName to give same behaviour as sahi browser Returning
attribute sahiText value as element name
- Added extra param isPasswordEncrypted in _getDB.
- Parsing: _log([email protected]()) was throwing error, while trying
to fetch data from xml file.

Fixes
- 1. Fixed: _aasertNull(null) was not working.
- 2. Implemented_containsText for java/java_applet mode.
- save file script directory auto selected if multiple directory
configured. alert on create suite by selecting files from multiple directories.
- _activeElement api bug fixed.
- stop recording multiple comment line in ar file.
- failedSuiteFiles: Modified xsl to show script details causing failure
- restui: decode xml string from body to post soap request, update
test.
- Code Coverage fix when script reloads, JS Code Coverage IFrame fix
- 401: merging the recent curl related changes made for the v701 to
curl master
- Committing fix for considering Square bracket elements as a single
parameter while importing functions at Scenario files.
- Restui: encode special character from body for send xml as body
- restui: removed redundant encoding of the REST request fields
- Parsing: Fixed: When anonymous function is passed as an argument to
Sahi Api, Sahi is throwing error "<api> not defined."
- Email Report: 1 Added "view logs" link. 2 Added test case report
table
- Dload log graph change from flash to d3 graph, Dload log ui changes,
show step number correctly, Test Summary Show Scripts UI changed.
- Fixed: email format for outlook. Text with background color was not
visible in outlook.
- ddcsv: fix for commented file not opening
- conatinsText: indexOf not defined fix on IE enterprise
- Fixing _disableInfoLogging for misc_function e.g. (_lockWindow,
_focusWindow, _unlockWindow)
- Scenario file commented test case running issue fixed
- MAC fix: Failure message link updated since on MAC link was resulting
in script not found.
- 401: merging recent changes
- uses sahi session store to persist curl bridge connection for
requests from same domain and scheme
- has toggle to use file streams for headers and payload
responses
- has option to set headers cache size
401: added persistent connection support
- Fixed: cannot identify elements using relation APIs in IE
- Email_Template: Added failed Scripts and version in
email_template.xsl.
- _testcase fix: after one test case failed all testcases were showed
as failed
- Removed _dumpElementInfo from js, java, applet and windows's lib.js
as it was renamed to _collectElementsInfo
- Fixed for cross domain iframe issues.(Cisco reported) 1. Some steps
will execute twice. 2. Sometime iframe take the step of main window.
- Committing fix for _wait() calling after launching a new window.
Removed the incrementing part when the step is not matched for _wait() api.
- Implemented suite.time_between_tests
- charset fix: charset was not being set
- etag: adding initial etag implementation to the master branch.
- failed tests were showing as passed in logs
- fnInfo popup fix: for functions below scrollbar fnInfo was not being
shown
- file Upload: Sending file instead of blob for browsers which have
file constructor since few applications have this check
- fix: Commented testcase was also showing in result at Script Report
Page
- fix for Proxy.callShutdownObservers method missing when Sahi was run
from the Proxy class.
- setValue Fix: frameworks not allowing to trigger change event fix
- isArray IE fix: modified isArray function so that it works as
expected in all IE scenarios
- Infinite loop fix: In the case of parent having children with
attribute value code was going in loop
- IE popup not displaying fix on function click
- fixed image/artifacts sync by batch logic
- file Upload fix for uploading more than two files
- takePageScreenshot fix: taking screenshot of element inside scrolled
element, for pages with scroll
- commented escaping values for TestCase Summary (generating XML with
escaped values). if user passes HTML contents in TestCaseId, so it was showing
escaped content on browser instead of showing actual HTML output
- removed disable-output-escaping=true from script_report.xml for
testCaseSummary
- fixed FailedTestCase
- CREATED INDEX for STEPID to improve the performance of drun in case
of screenshot steps.
- takePageScreenshot fix when scrolled element does not take whole
browser width.
- Fixed Junit test calling start method of Proxy.
- etag: few fixes, added custom header fetch methods, added condition
to remove etag header only if the etag is disabled
- reports: fix for postgresql database issue
- Fixed offline report download and email in load Testing using ant xml
(Jay)
- AR fix: clearing AR cache so on changing AR file, AR value updates
from changed AR file
- Killing ProxyProcessor properly on stopping the proxy.
- Fixed email_template.xsl for outlook. Suite Name was displayed
properly in outlook.
- Browser Hang fix because of getAssociatedLabel
- Fixed for chrome/ opera handsontable column size fix on tab change.
- Hiding _setPassword decrypted value if step fails.
- fixed reading long XLSX file (Heap Space issue)
- EDITOR: Create Function : if no parameters are selected for function
then don't show "param" in JSDOC.
- Broken Show all network functionalities fixed
- Chanhge for _count API for large number of data with regular
expression /.*/
- escaping ]]> to fix the xml parsing error in logs.
- Create AR: Manual changes of AR key will reflect on creating AR
- Added --no-first-run in mac and linux to fix first time(before the
user profiles) default browser check in chrome.
- Logs Identification: For selected link on navigation bar in suite
page, accessors were not correct. Selected link is both a tag and bold, but
accessors were generated for only _link api. and for same element two different
accessors with index were getting generated. Because for bold tag accessors, _link
was coming instead of _bold
- Graph UI fixed in all browsers
- fixed: Test Cases showing failed after one fails and errors showing
passed issue
- Broken filter fix on Suite List Page
- Fixed UI break of Suite Report on resizing or on small screens
- EDITOR scenario files MAC: prevented opening of context menu on
ctrl+click in mac.
- Fixing compare logs in suite report page.
- Create AR issue fix in case AR file does not exist
- Fixing Matric stream har issue for post request if server is
returning HTTP/1.1 200 200 instead of HTTP/1.1 200 OK.
- restui: fixed filling"undefined" string when clicking on browse
button for file upload and Sahi is off
- Fixing sahiIndex json for Accessor.
- Editor Save issue fix when Script directory not selected from
dropdown
- 401: adding license references for curljava
- licenses.txt in docs/licenses/curljava
- library name reference in NOTICE.txt, NOTICE.htm,
NOTICE_RUNNER.htm, NOTICE_RUNNER.txt
- firefox90sec: fix for minimizing firefox 90 seconds error
- firefox uses prefetch
- 90 seconds timeout occurs in rare cases, 1/200 browser sessions
due to unknown reason, stalls at Player_auto url
- believe that combination of the changes minimizes the 90
seconds timeout
- Auto Suggestion was not working for script line having more than one
")" symbols
- Fixing broken har viewer for the request having decoded charchers
e.g. SAHI INJECTED CODE.
- Restui: Replacing field separator from dot to extended ASCII '\u00ac'
- Ignoring _takeScreenShots if image related api is used(not fixed on
phantomjs)
- controller : changed msg "Press CTRL key and hover mouse over any
element." for mac to "Press COMMAND key and hover mouse over any element."
- Set original text when parsing of text is undefined while generating
docs of sahi script
- AR from Editor: Editing AR key and value functionality modified
- Screenshot: Dual Screen issue fix
- Fix for heap space error Removed JSDocs from autoCompletelist call
and added new method to retrieve JSDocs for each functions at the time of
selecting them.
- Fixing misc_functions.txt parsing to see the html logs correctly with
accessor(variable) value.
- Fixed: Screenshot is not appear in script report for last step when
_takeScreenShots(true) is specified in script
- Set suit report link target to index.html when traverse from retry
logs in offline report

===================================================================================
===================================================================================
===================================================================================
===============================================================
Key features

= automatic failur/aborted retry


= etag caching
= suite analysis
= editor slowness
= AR repo
= run a script depends on another
= database size deletion
= licenses
= sahi user license will not support sahi runner ans concurrent will
support only 2.

bug
= scenarion file comment a test case
= _testcase

===================================================================================
===================================================================================
===================================================================================
===============================================================

Mobile

Feature

- Implemented element identification with respect to anchor from


controller
- make an AJAX call for getting iOS device list.
- Added support for allowing a script to continue after internal
failures There are some actions that cause internal XCTest failures that cannot be
recovered from. These include a) tapping on an element that cannot be made visible
even by scrolling and b) launching / activating an app with an incorrect bundle
id.
Once these actions fail, further steps will only get executed
with errors. In case of a simple script, this may not be a problem since the
script will usually stop after an error.
But if the script were to contain multiple unit tests, or if it
is a scenario file with multiple test cases, an error in one test should not cause
failures in the other tests. The other tests should get executed independent of
the error in the previous test.
- In order to facilitate this, SahiUITestAutomator runs a
configurable number of XC tests, one after the other.
- When an unrecoverable error is encountered, that test will
terminate and the next test will start. Since this is an entirely new XC test, it
will execute just fine till it encounters an unrecoverable error. Thus, depending
upon the number of XC tests, we can handle multiple unit test failures caused by
unrecoverable errors.
- The number of tests to run is sent from the desktop. It is
currently hardcoded to 10 in test_without_building.sh.
- If the execution of the script has been completed as part of a
testcase, the rest of the testcases will exit without doing anything.
- Sahi classes do not keep state of a XCTestCase.
- added "ios.keyboard.buttons.autoclick" property in which you can
specify the keyboard buttons name array to automatically click on it after setting
value in textbox
- Viewer optimization changes
- "Optimize Viewer" checkbox has been removed from the UI.
- By default, viewer is optimized. If there is an element
identification failure, we refresh the snapshot and try to fetch the element again.
This is possible now because we have multiple testcases running on iOS and hence
the visibility check failure from the snapshot can be recovered from, in the next
testcase.
- If the element fetch fails again, we turn optimization OFF.
- If there is an element identification failure with optimization
OFF, we show an alert to the user that the page cannot be automated, but we do not
disconnect the session. If it is possible for the user to continue manually on a
different page, the Viewer may still continue to work.
- 1) report implementation
- 2) device list will be get from android_devices.xml
(sahi/userdata/config folder)
- 3) script can be played with sahi alias name, displayName,
deviceName, deviceId (used from android_devices.xml).
- 4) added _deviceInfo API
- 1) added ios_devices.xml and added android_devices.xml in Mobile
installer 2) android_devices.xml will be copied to userdata/config runtime merging
devices list from xml with the connected device list
- 1) report implementation 2) device list will be get from
ios_devices.xml (sahi/userdata/config folder) 3) script can be played with sahi
alias name, display name, device name, device id or device params (used from
ios_devices.xml)
- added ANDROIDDEVICE, ANDROIDDEVICEINFO, IOSDEVICE and IOSDEVICEINFO
columns in All database
- isVisibleFromViewer added
- This method throws a HITTABLE_CHECK_FAILED exception if there
is an internal error. This internally calls isVisible.
- isVisible will throw a generic exception "Element not visible"

- added "ios.stop.wait.timeout" and "ios.testcase.count" property for


both IOSViewer and Script Playback. If we increase the testcase count for viewer,
we need to increase the stop wait timeout for viewer only so that it won't affect
the script playback
- 1) device stop wait timeout will be different for both IOSViewer
(ios.stop.wait.timeout.for.viewer) and Script Playback
(ios.stop.wait.timeout.for.playback)
- 2) externalize the testcase count from sahi property. Two different
property for both IOSViewer (ios.testcase.count.for.viewer) and Script Playback
(ios.testcase.count.for.playback)
- Renamed lastSnapshotFrame to appSnapshotFrame
- Removed UITestAutomatorRunner references from UITestAutomatorLib
- UITestAutomatorRunner was part of UITestAutomatorLib initially. It
is not used anymore since UITestAutomator is now a separate project.
- Removed all references to UITestAutomatorRunner from inside
UITestAutomatorLib
- Made cachedFrame private to SahiUIElement
- Moved this from the header file into the class extension
- Exposed a couple of methods in SahiUIElement that uses cashedFrame
internally.
- Near and ParentNode implementations call these methods.
- Added UIAndUnitTesting.txt
- Added details of a few UITestAutomatorLib classes in
ProjectDetails.txt
- implemented constructors with host and port for Windows, Java
Application, Android and iOS
- prevent click from viewer for Other, Application and Window elements.
- added check for IOS in showAccessor command in case of
alternatePossibleCandidates
- Viewer optimization changes
- "Optimize Viewer" checkbox has been removed from the UI.
- By default, viewer is optimized. If there is an element
identification failure, we refresh the snapshot and try to fetch the element again.
This is possible now because we have multiple testcases running on iOS and hence
the visibility check failure from the snapshot can be recovered from, in the next
testcase.
- If the element fetch fails again, we turn optimization OFF.
- If there is an element identification failure with optimization
OFF, we show an alert to the user that the page cannot be automated, but we do not
disconnect the session. If it is possible for the user to continue manually on a
different page, the Viewer may still continue to work.
- Android Device and iOS Device values in reports.
- implemented auto click on the keyboard button (specified by sahi
property "ios.keyboard.buttons.autoclick") after setting value in textbox
- added property ios.viewer.optimize (default value to true). property
is used in IOS Viewer to check the element visibility based on the value of
property (true = check visibility from cached frame and false = check visibility
dynamically)
- Removed the try catch block in hideKeyboard function. If tapping on
the keyboard button FAILED then it will shows in logs "Failed to tap element".
Breaking the for loop if button tap successfully done.
- added ImageMatcher.template file. Change the extension to .java to
use. It requires OpenCV library in class path.
Usage (from sahi script):-
// pass Main Image and Sub Image which you need to find inside
the Main
Image
$im = new net.sf.sahi.util.ImageMatcher($mainImage, $subImage);
// set the ROI (region of interest) where you want to find the
Sub Image
$im.setRoi($ROI[0], $ROI[1], $ROI[2], $ROI[3]);
// run the image matcher.
$im.run();
// get the location of sub Image
$im.getMatchedLocation();
- handle space in key while writing property in file
- Set default value of column androiddevice, androiddeviceinfo,
iosdevice and iosdeviceinfo to empty string ('') for h2, mssql, mysql, postgresql
database and set space(' ') for oracle database
- Reason for space in oracle : It treats empty string as null.

Api Implemented

- replace _alert with _iAlert in iOS scripts


- added _deviceInfo API for both Android and iOS
- removed _setAccessorIgnoreCase scheduling for all modes. In Android
mode it should be scheduling this step (overridden in Android's lib.js)
- Removed references to _launchedApps since this is no longer used.
- implemented element identification with anchor on from controller
- record activateApplication instead of _mActivateApplication for java
controller
- implemented _iSetAutoDismissKeyboard API (User can toggle the
automatically dismissing keyboard functionality using this API)
- implemented 3rd parameter in _setValue as an object of keyboard
button identifier (like, {"iOSKeyboardButton":"Done"}) which will overrides the
default button array specified in sahi.properties

Fixes
- change the identifier preference. Identifier order will come from
android.json (attributes property). If not specified than it will take the default
identifier preference (Text, ResourceId, Index).
- 1) removed _wait API from action-apis.html, because it is already
written in script-execution-control-apis.html 2) removed _selectBrowser from
multiple-mobile-browsers.html. already written in multiple-browsers.html
- fixed browserType not coming in testcase report
- fixed product bundle id was not writing in
build_ios_binaries_for_device.sh file while installing mobile installer.
- fixed reading long XLSX file (Heap Space issue)
- fixed: _near. Ignoring same element from descendant array if its
coming multiple times.
- fixed _connectDevice and _selectDevice was not recorded along with
_setMode
- fixed: Android/IOS script playback from scenario file using Java
Driver.
- fixed _setValue for Android versions below KitKat (including KitKat).
It was a bug in Android UiAutomator setText function. For now fixed it by using
reflection. It will be removed once it is fixed in Android UiAutomator itself.
Still it is a bug in password type EditText, because passwordfield.getText()
returns null so we can't do selection without the length of the current text.
- fix: Java controller recording
- fixed startNativeSession hangs from viewer
- fixed: if device list dropdown does not contains the deviceId from
history then it will be blank on page load of android viewer.
- When checking visibility, use the primary instead of index accessor -
Index accessors will mostly be visible even if the screen changes. But the primary
accessor will likely not be.
- 1) fixed: element identification when accessorIgnoreCase is set. It
should use predicate without regex.
- 2) setting accessorIgnoreCase to true while clicking on the the
keyboard button, and reverting it after click.
- change the order of iOS keyboard buttons. Issue: In Webview, keyboard
is shown with two buttons: "return" and
"Done".
"return" button works as Enter. So if we set username value
in Sahi's sample application in iOS Webview then by clicking on "return" button it
will perform submit action.
- Fixed: JTree automation. removed DefaultMutableTreeNode as typecast
because sometimes it doesn't work (throws typeCast Exception). Removed all JTree
related conditions where we are calculating TreePath.
- Fix Installer:1) Enable mobile automation property by batch/shell
script 2) Disable mobile automation property by Uninstaller 3) Adding property for
iOS/Android in installer itself. (It will be removed from sahi.properties from now
on.)
- fixed product bundle id was not writing in
build_ios_binaries_for_device.sh file while installing mobile installer.

You might also like