Skip to content

Latest commit

 

History

History
1077 lines (976 loc) · 86.6 KB

CHANGELOG.md

File metadata and controls

1077 lines (976 loc) · 86.6 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

9.2.3

  • [BUG FIX]
    • Properly represent FeaturesMatchingResult model if multiple option is enabled #2170
    • Use current class loader for the ByteBuddy wrapper #2172
      This fixes errors like NoClassDefFoundError: org/openqa/selenium/remote/RemoteWebElement, NoClassDefFoundError: io/appium/java_client/proxy/HasMethodCallListeners when PageFactory is used.
    • Correct extension name for mobile: replaceElementValue #2171
  • [DEPRECATION]
    • Deprecate AppiumProtocolHandshake class #2173
      The original ProtocolHandshake class only supports W3C protocol now. There is no need to hack it anymore.
  • [REFACTOR]
    • Replace Guava HttpHeaders with Selenium HttpHeader #2151
  • [DEPENDENCY CHANGE]
    • Bump SLF4J from 2.0.12 to 2.0.13 #2158
    • Bump Gson from 2.10.1 to 2.11.0 #2175

9.2.2

  • [BUG FIX]
    • fix: Fix building of Android key event parameters #2145
    • fix: Fix building of Android geo location parameters #2146

9.2.1

  • [REFACTOR]
    • Replace private usages of Guava Collections API with Java Collections API #2136
    • Remove usages of Guava's @VisibleForTesting annotation #2138. Previously opened internal API marked with @VisibleForTesting annotation is private now:
      • io.appium.java_client.internal.filters.AppiumUserAgentFilter#containsAppiumName
      • io.appium.java_client.service.local.AppiumDriverLocalService#parseSlf4jContextFromLogMessage
  • [DEPENDENCY CHANGE]
    • Bump minimum supported Selenium version from 4.17.0 to 4.19.0 #2142

9.2.0

  • [ENHANCEMENTS]
    • Incorporate poll delay mechanism into AppiumFluentWait #2116 (Closes #2111)
    • Make server startup error messages more useful #2130
  • [BUG FIX]
    • Set correct geolocation coordinates of the current device #2109 (Fixes #2108)
    • Always release annotated element reference from the builder instance #2128
    • Cache dynamic proxy classes created by ByteBuddy #2129 (Fixes #2119)
  • [DEPENDENCY CHANGE]
    • Bump SLF4J from 2.0.11 to 2.0.12 #2115
  • [DOCUMENTATION]
    • Improve release steps #2107

9.1.0

  • [ENHANCEMENTS]
    • Introduce better constructor argument validation for the AppiumFieldDecorator class. #2070
    • Add toString to AppiumClientConfig. #2076
    • Perform listeners cleanup periodically. #2077
    • Add non-W3C context, orientation and rotation management endpoints removed from Selenium client. #2093
    • Add non-W3C Location-management endpoints deprecated in Selenium client. #2098
  • [BUG FIX]
    • Properly unwrap driver instance if the ContextAware object is deeply nested. #2052
    • Update hashing and iteration logic of page object items. #2067
    • Assign method call listeners directly to the proxy instance. #2102
    • Use JDK 11 to build Jitpack snapshots. #2083
  • [DEPRECATION]
    • Deprecate custom functional interfaces. #2055
  • [REFACTOR]
    • Use Java 9+ APIs instead of outdated/3rd-party APIs. #2048
    • Migrate to new Selenium API for process management. #2054
  • [DEPENDENCY CHANGE]
    • Bump minimum supported Selenium version from 4.14.1 to 4.17.0.
    • Bump SLF4J from 2.0.9 to 2.0.11. #2091, #2099
  • [DOCUMENTATION]
    • Describe the release procedure. #2104

9.0.0

  • [DOCUMENTATION]
    • Add 8 to 9 migration guide. #2039
  • [BREAKING CHANGE] #2036
    • Set minimum Java version to 11.
    • The previously deprecated MobileBy class has been removed. Use AppiumBy instead.
    • The previously deprecated launchApp, resetApp and closeApp methods have been removed. Use extension methods instead.
    • The previously deprecated WindowsBy class and related location strategies have been removed.
    • The previously deprecated ByAll class has been removed in favour of the Selenium one.
    • The previously deprecated AndroidMobileCapabilityType interface has been removed. Use driver options instead
    • The previously deprecated IOSMobileCapabilityType interface has been removed. Use driver options instead
    • The previously deprecated MobileCapabilityType interface has been removed. Use driver options instead
    • The previously deprecated MobileOptions class has been removed. Use driver options instead
    • The previously deprecated YouiEngineCapabilityType interface has been removed. Use driver options instead
    • Removed several misspelled methods. Use properly spelled alternatives instead
    • Removed startActivity method from AndroidDriver. Use 'mobile: startActivity' extension method instead
    • Removed the previously deprecated APPIUM constant from the AutomationName interface
    • Removed the previously deprecated PRE_LAUNCH value from the GeneralServerFlag enum
    • Moved AppiumUserAgentFilter class to io.appium.java_client.internal.filters package
  • [REFACTOR]
    • Align Selenium version in test dependencies. #2042
  • [DEPENDENCY CHANGE]
    • Removed dependencies to Apache Commons libraries.

8.6.0

  • [BUG FIX]
    • Exclude abstract methods from proxy matching. #1937
    • AppiumClientConfig#readTimeout to call super.readTimeout. #1959
    • Use weak references to elements inside of interceptor objects. #1981
    • Correct spelling and semantic mistakes in method naming. #1970
    • Change scope of selenium-support dependency to compile. #2019
    • Fix Code style issues to match Java standards. #2017
    • class of proxy method in AppiumClientConfig. #2026
  • [ENHANCEMENTS]
    • Mark Windows page object annotations as deprecated. #1938
    • Deprecate obsolete capabilities constants. #1961
    • patch AutomationName with Chromium. #1993
    • Implementation of Chromium driver plus capabilities. #2003
  • [REFACTOR]
    • Increase server start timeout for iOS tests. #1983
    • Fix Android test: --base-path arg must start with /. #1952
    • Added fixes for No service provider found for io.appium.java_client.events.api.Listener. #1975
    • Run tests against latest Selenium release. #1978
    • Use server releases from the main branch for testing. #1994
    • Remove obsolete API calls from tests. #2006
    • Automate more static code checks. #2028
    • Limit the maximum selenium version to 4.14. #2031
    • Remove the obsolete commons-validator dependency. #2032
  • [DOCUMENTATION]
    • Add the latest versions of clients to the compatibility matrix. #1935
    • Added correct url path for the latest appium documentation. #1974
    • Add Selenium 4.11.0, 4.12.0, 4.12.1 & 4.13.0 to compatibility matrix. #1986 & #1999 & #2002 & #1986
    • Add known compatibility issue for Selenium 4.12.1. #2008
  • [DEPENDENCY UPDATES]
    • org.owasp.dependencycheck was updated to 8.4.0.
    • org.junit.jupiter:junit-jupiter was updated to 5.10.0.
    • commons-io:commons-io was updated to 2.14.0.
    • checkstyle was updated to 10.12.1.
    • org.apache.commons:commons-lang3 was updated to 3.13.0.
    • gradle was updated to 8.4.0.
    • io.github.bonigarcia:webdrivermanager was updated to 5.5.3.
    • org.seleniumhq.selenium:selenium-bom was updated to 4.13.0.
    • org.projectlombok:lombok was updated to 1.18.30.

8.5.1

  • [BUG FIX]
    • Use correct exception type for fallback at file/folder pulling. #1912
    • Update autoWebview capability name. #1917
  • [REFACTOR]
    • Move execution of E2E tests to GitHub Actions. #1913
    • Replace cglib with bytebuddy. #1923
    • Improve the error message on service startup. #1928
  • [DOCUMENTATION]
    • Initiate Selenium client compatibility matrix. #1918
  • [DEPENDENCY UPDATES]
    • io.github.bonigarcia:webdrivermanager was updated to 5.3.3.
    • org.projectlombok:lombok was updated to 1.18.28.
    • commons-io:commons-io was updated to 2.12.0.

8.5.0

  • [BUG FIX]
    • Restore Jitpack builds. #1911
    • Add fallback commands for file management APIs. #1910
  • [REFACTOR]
    • Replace performance data APIs with mobile extensions. #1905
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 4.9.1.
    • org.junit.jupiter:junit-jupiter was updated to 5.9.3.

8.4.0

  • [ENHANCEMENTS]
    • Added possibility to connect to a running session. #1813
    • deprecate tapWithShortPressDuration capability.#1825
    • Add SupportsEnforceAppInstallOption to XCUITestOptions.#1895
  • [BUG FIX]
    • Use ipv4 address instead of localhost. #1815
    • Fix test broken by updates in appium-xcuitest-driver. #1839
    • Merge misc tests suite into unit tests suite. #1850
    • Avoid NPE in destroyProcess call. #1878
    • Send arguments for mobile methods depending on the target platform. #1897
  • [REFACTOR]
    • Run Gradle wrapper validation only on Gradle files changes. #1828
    • Skip GH Actions build on changes in docs. #1829
    • Remove Checkstyle exclusion of removed Selenium package. #1831
    • Enable Checkstyle checks for test code. #1843
    • Configure CODEOWNERS to automate review requests. #1846
    • Enable execution of unit tests in CI. #1845
    • Add Simple SLF4J binding to unit tests runtime. #1848
    • Improve performance of proxy Interceptor logging. #1849
    • Make unit tests execution a part of Gradle build lifecycle. #1853
    • Replace non-W3C API calls with corresponding extension calls in app management. #1883
    • Switch the time getter to use mobile extensions. #1884
    • Switch file management APIs to use mobile: extensions. #1886
    • Use mobile extensions for app strings getters and keyboard commands. #1890
    • Finish replacing iOS extensions with their mobile alternatives. #1892
    • Change some Android APIs to use mobile extensions. #1893
    • Change backgroundApp command to use the corresponding mobile extension. #1896
    • Switch more Android helpers to use extensions. #1898
    • Perform xcuitest driver prebuild. #1900
    • Finish migrating Android helpers to mobile extensions. #1901
    • Avoid sending unnecessary requests if corresponding extensions are absent. #1903
  • [DOCUMENTATION]
    • Describe transitive Selenium dependencies management. #1827
    • Fix build badge to point GH Actions CI. #1844
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 4.8.2.
    • org.slf4j:slf4j-api was updated to 2.0.7.
    • org.owasp.dependencycheck was updated to 8.2.1.
    • gradle was updated to 8.1.0.
    • com.google.code.gson:gson was updated to 2.10.1.
    • io.github.bonigarcia:webdrivermanager was updated to 5.3.2.
    • org.junit.jupiter:junit-jupiter was updated to 5.9.2.
    • checkstyle was updated to 10.0.
    • jacoco was updated to 0.8.8.
    • org.projectlombok:lombok was updated to 1.18.26.
    • com.github.johnrengelman.shadow was updated to 8.1.1.

8.3.0

  • [DOCUMENTATION]
    • Added troubleshooting section. #1808
    • Added CHANGELOG.md. #1810
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 4.7.0.
    • org.slf4j:slf4j-api was updated to 2.0.5.

8.2.1

  • [ENHANCEMENTS]
    • BYACCESSABILITY is deprecated in favor of BYACCESSIBILITY. #1752
    • Connect directly to Appium Hosts in Distributed Environments. #1747
    • use own User Agent. #1779
    • Add alternative proxy implementation. #1790
    • Automated artefact publish to maven central. #1803 & #1807
  • [BUG FIX]
    • Enforce usage of Base64 compliant with RFC 4648 for all operations. #1785
    • Override getScreenshotAs to support the legacy base64 encoding. #1787
  • [REFACTOR]
    • BYACCESSABILITY is deprecated in favor of BYACCESSIBILITY. #1752
    • JUnit5 test classes and methods are updated to have default package visibility. #1755
    • Verify if the PR title complies with conventional commits spec. #1757
    • Use Lombok in direct connect class. #1789
    • Update readme and remove obsolete documents. #1792
    • Remove unnecessary annotation. #1791
    • Force unified imports order. #1793
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 4.5.0.
    • org.owasp.dependencycheck was updated to 7.3.2.
    • io.github.bonigarcia:webdrivermanager was updated to 5.3.1.
    • org.junit.jupiter:junit-jupiter was updated to 5.9.1.
    • org.slf4j:slf4j-api was updated to 2.0.4.
    • com.google.code.gson:gson was updated to 2.10.0.

8.2.0

  • [ENHANCEMENTS]
    • AppiumDriverLocalService can handle outputStreams. #1709
    • Add creating a driver with ClientConfig. #1735
  • [BUG FIX]
    • Update the environment argument type for mac SupportsEnvironmentOption. #1712
  • [REFACTOR]
    • Deprecate Appium ByAll in favour of Selenium ByAll. #1740
    • Bump Node.js version in pipeline. #1713
    • Switch unit tests to run on Junit 5 Jupiter Platform. #1721
    • Clean up unit tests asserting thrown exceptions. #1741
    • Fix open notification test. #1749
    • update Azure pipeline to use macos-11 VM image. #1728
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 4.4.0.
    • org.owasp.dependencycheck was updated to 7.1.2.
    • io.github.bonigarcia:webdrivermanager was updated to 5.3.0.
    • gradle was updated to 7.5.1.
    • com.google.code.gson:gson was updated to 2.9.1.

8.1.1

  • [BUG FIX]
    • Perform safe typecast while getting the platform name. #1702
    • Add prefix to platformVersion capability name. #1704
  • [REFACTOR]
    • Update e2e tests to make it green. #1706
    • Ignore the test which has a connected server issue. #1699

8.1.0

  • [ENHANCEMENTS]
    • Add new EspressoBuildConfig options. #1687
  • [DOCUMENTATION]
    • delete all references to removed MobileElement class. #1677
  • [BUG FIX]
    • Pass orientation name capability in uppercase. #1686
    • correction for ping method to get proper status URL. #1661
    • Remove deprecated option classes. #1679
    • Remove obsolete event firing decorators. #1676
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 4.2.0.
    • org.owasp.dependencycheck was updated to 7.1.0.1.
    • org.springframework:spring-context was removed. #1676
    • org.aspectj:aspectjweaver was updated to 1.9.9.
    • io.github.bonigarcia:webdrivermanager was updated to 5.2.0.
    • org.projectlombok:lombok was updated to 1.18.24.

8.0.0

  • [DOCUMENTATION]
    • Set minimum Java version to 1.8.0. #1631
  • [BUG FIX]
    • Make interfaces public to fix decorator creation. #1644
    • Do not convert argument names to lowercase. #1627
    • Avoid fallback to css for id and name locator annotations. #1622
    • Fix handling of chinese characters in AppiumDriverLocalService. #1618
  • [DEPENDENCY UPDATES]
    • org.owasp.dependencycheck was updated to 7.0.0.
    • org.springframework:spring-context was updated to 5.3.16.
    • actions/setup-java was updated to 3.
    • actions/checkout was updated to 3.
    • io.github.bonigarcia:webdrivermanager was updated to 5.1.0.
    • org.aspectj:aspectjweaver was updated to 1.9.8.
    • org.slf4j:slf4j-api was updated to 1.7.36.
    • com.github.johnrengelman.shadow was updated to 7.1.2.

8.0.0-beta2

  • [DOCUMENTATION]
    • Add a link to options builder examples to the migration guide. #1595
  • [BUG FIX]
    • Filter out proxyClassLookup method from Proxy class (for Java 16+) in AppiumByBuilder. #1575
  • [REFACTOR]
    • Add more nice functional stuff into page factory helpers. #1584
    • Switch e2e tests to use Appium2. #1603
    • relax constraints of Selenium dependencies versions. #1606
  • [DEPENDENCY UPDATES]
    • Upgrade to Selenium 4.1.1. #1613
    • org.owasp.dependencycheck was updated to 6.5.1.
    • org.springframework:spring-context was updated to 5.3.14.
    • actions/setup-java was updated to 2.4.0.
    • gradle was updated to 7.3.

8.0.0-beta

  • [ENHANCEMENTS]
    • Start adding UiAutomator2 options. #1543
    • Add more UiAutomator2 options. #1545
    • Finish creating options for UiAutomator2 driver. #1548
    • Add WDA-related XCUITestOptions. #1552
    • Add web view options for XCUITest driver. #1557
    • Add the rest of XCUITest driver options. #1561
    • Add Espresso options. #1563
    • Add Windows driver options. #1564
    • Add Mac2 driver options. #1565
    • Add Gecko driver options. #1573
    • Add Safari driver options. #1576
    • Start adding XCUITest driver options. #1551
    • Implement driver-specific W3C option classes. #1540
    • Update Service to properly work with options. #1550
  • [BREAKING CHANGE]
    • Migrate to Selenium 4. #1531
    • Make sure we only write W3C payload into create session command. #1537
    • Use the new session payload creator inherited from Selenium. #1535
    • unify locator factories naming and toString implementations. #1538
    • drop support of deprecated Selendroid driver. #1553
    • switch to javac compiler. #1556
    • revise used Selenium dependencies. #1560
    • change prefix to AppiumBy in locator toString implementation. #1559
    • enable dependencies caching. #1567
    • Include more tests into the pipeline. #1566
    • Tune setting of default platform names. #1570
    • Deprecate custom event listener implementation and default to the one provided by Selenium4. #1541
    • Deprecate touch actions. #1569
    • Deprecate legacy app management helpers. #1571
    • deprecate Windows UIAutomation selector. #1562
    • Remove unused entities. #1572
    • Remove setElementValue helper. #1577
    • Remove selenium package override. #1555
    • remove redundant exclusion of Gradle task signMavenJavaPublication. #1568
  • [DEPENDENCY UPDATES]
    • org.owasp.dependencycheck was updated to 6.4.1.
    • com.google.code.gson:gson was updated to 2.8.9.

7.6.0

  • [ENHANCEMENTS]
    • Add custom commands dynamically [Appium 2.0]. #1506
    • New General Server flags are added [Appium 2.0]. #1511
    • Add support of extended Android geolocation. #1492
  • [BUG FIX]
    • AndroidGeoLocation: update the constructor signature to mimic order of parameters in org.openqa.selenium.html5.Location. #1526
    • Prevent duplicate builds for PRs from base repo branches. #1496
    • Enable Dependabot for GitHub actions. #1500
    • bind mac2element in element map for mac platform. #1474
  • [DEPENDENCY UPDATES]
    • org.owasp.dependencycheck was updated to 6.3.2.
    • org.projectlombok:lombok was updated to 1.18.22.
    • com.github.johnrengelman.shadow was updated to 7.1.0.
    • actions/setup-java was updated to 2.3.1.
    • io.github.bonigarcia:webdrivermanager was updated to 5.0.3.
    • org.springframework:spring-context was updated to 5.3.10.
    • org.slf4j:slf4j-api was updated to 1.7.32.
    • com.google.code.gson:gson was updated to 2.8.8.
    • gradle was updated to 7.1.1.
    • commons-io:commons-io was updated to 2.11.0.
    • org.aspectj:aspectjweaver was updated to 1.9.7.
    • org.eclipse.jdt:ecj was updated to 3.26.0.
    • 'junit:junit was updated to 4.13.2.

7.5.1

  • [ENHANCEMENTS]
    • Add iOS related annotations to tvOS. #1456
  • [BUG FIX]
    • Bring back automatic quote escaping for desired capabilities command line arguments on windows. #1454
  • [DEPENDENCY UPDATES]
    • org.owasp.dependencycheck was updated to 6.1.2.
    • org.eclipse.jdt:ecj was updated to 3.25.0.

7.5.0

  • [ENHANCEMENTS]
    • Add support for Appium Mac2Driver. #1439
    • Add support for multiple image occurrences. #1445
    • BOUND_ELEMENTS_BY_INDEX Setting was added. #1418
  • [BUG FIX]
    • Use lower case for Windows platform key in ElementMap. #1421
  • [DEPENDENCY UPDATES]
    • org.apache.commons:commons-lang3 was updated to 3.12.0.
    • org.springframework:spring-context was updated to 5.3.4.
    • org.owasp.dependencycheck was updated to 6.1.0.
    • io.github.bonigarcia:webdrivermanager was updated to 4.3.1.
    • org.eclipse.jdt:ecj was updated to 3.24.0.
    • org.projectlombok:lombok was updated to 1.18.16.
    • jcenter repository was removed.

7.4.1

  • [BUG FIX]
    • Fix the configuration of selenium-java dependency. #1417
  • [DEPENDENCY UPDATES]
    • gradle was updated to 6.7.1.

7.4.0

  • [ENHANCEMENTS]
    • Add ability to set multiple settings. #1409
    • Support to execute Chrome DevTools Protocol commands against Android Chrome browser session. #1375
    • Add new upload options i.e withHeaders, withFormFields and withFileFieldName. #1342
    • Add AndroidOptions and iOSOptions. #1331
    • Add idempotency key to session creation requests. #1327
    • Add support for Android capability types: buildToolsVersion, enforceAppInstall, ensureWebviewsHavePages, webviewDevtoolsPort, and remoteAppsCacheLimit. #1326
    • Added OTHER_APPS and PRINT_PAGE_SOURCE_ON_FIND_FAILURE Mobile Capability Types. #1323
    • Make settings available for all AppiumDriver instances. #1318
    • Add wrappers for the Windows screen recorder. #1313
    • Add GitHub Action validating Gradle wrapper. #1296
    • Add support for Android viewmatcher. #1293
    • Update web view detection algorithm for iOS tests. #1294
    • Add allow-insecure and deny-insecure server flags. #1282
  • [BUG FIX]
    • Fix jitpack build failures. #1389
    • Fix parse platformName if it is passed as enum item. #1369
    • Increase the timeout for graceful AppiumDriverLocalService termination. #1354
    • Avoid casting to RemoteWebElement in ElementOptions. #1345
    • Properly translate desiredCapabilities into a command line argument. #1337
    • Change getDeviceTime to call the mobile implementation. #1332
    • Remove appiumVersion from MobileCapabilityType. #1325
    • Set appropriate fluent wait timeouts. #1316
  • [DOCUMENTATION UPDATES]
    • Update Appium Environment Troubleshooting. #1358
    • Address warnings printed by docs linter. #1355
    • Add java docs for various Mobile Options. #1331
    • Add AndroidFindBy, iOSXCUITFindBy and WindowsFindBy docs. #1311
    • Renamed maim.js to main.js. #1277
    • Improve Readability of Issue Template. #1260

7.3.0

  • [ENHANCEMENTS]
    • Add support for logging custom events on the Appium Server. #1262
    • Update Appium executable detection implementation. #1256
    • Avoid through NPE if any setting value is null. #1241
    • Settings API was improved to accept string names. #1240
    • Switch runAppInBackground iOS implementation in sync with other platforms. #1229
    • JavaDocs for AndroidMobileCapabilityType was updated. #1238
    • Github Actions were introduced instead of TravisCI. #1219
  • [BUG FIX]
    • Fix return type of getSystemBars API. #1216
    • Avoid using getSession call for capabilities values retrieval [W3C Support]. #1204
    • Fix pagefactory list element initialisation when parameterised by generic type. #1237
    • Fix AndroidKey commands. #1250

7.2.0

  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was reverted to stable version 3.141.59. #1209
    • org.projectlombok:lombok:1.18.8 was introduced. #1193
  • [ENHANCEMENTS]
    • videoFilters property was added to IOSStartScreenRecordingOptions. #1180
  • [IMPROVEMENTS]
    • Selendroid automationName was deprecated. #1198
    • JavaDocs for AndroidMobileCapabilityType and IOSMobileCapabilityType were updated. #1204
    • JitPack builds were fixed. #1203

7.1.0

  • [ENHANCEMENTS]

    • Added an ability to get all the session details. #1167
    • TRACK_SCROLL_EVENTS, ALLOW_INVISIBLE_ELEMENTS, ENABLE_NOTIFICATION_LISTENER, NORMALIZE_TAG_NAMES and SHUTDOWN_ON_POWER_DISCONNECT Android Settings were added.
    • KEYBOARD_AUTOCORRECTION, MJPEG_SCALING_FACTOR, MJPEG_SERVER_SCREENSHOT_QUALITY, MJPEG_SERVER_FRAMERATE, SCREENSHOT_QUALITY and KEYBOARD_PREDICTION iOS Settings were added.
    • GET_MATCHED_IMAGE_RESULT, FIX_IMAGE_TEMPLATE_SCALE, SHOULD_USE_COMPACT_RESPONSES, ELEMENT_RESPONSE_ATTRIBUTES and DEFAULT_IMAGE_TEMPLATE_SCALE settings were added for both Android and iOS #1166, #1156 and #1120
    • The new interface io.appium.java_client.ExecutesDriverScript was added. #1165
    • Added an ability to get status of appium server. #1153
    • tvOS platform support was added. #1142
    • The new interface io.appium.java_client. FindsByAndroidDataMatcher was added. #1106
    • The selector strategy io.appium.java_client.MobileBy.ByAndroidDataMatcher was added. #1106
    • Selendroid for android and UIAutomation for iOS are removed. #1077
    • [BUG FIX] Platform Name enforced on driver creation is avoided now. #1164
    • [BUG FIX] Send both signalStrengh and signalStrength for GSM_SIGNAL. #1115
    • [BUG FIX] Null pointer exceptions when calling getCapabilities is handled better. #1094
  • [DEPENDENCY UPDATES]

    • org.seleniumhq.selenium:selenium-java was updated to 4.0.0-alpha-1.
    • org.aspectj:aspectjweaver was updated to 1.9.4.
    • org.apache.httpcomponents:httpclient was updated to 4.5.9.
    • cglib:cglib was updated to 3.2.12.
    • org.springframework:spring-context was updated to 5.1.8.RELEASE.
    • io.github.bonigarcia:webdrivermanager was updated to 3.6.1.
    • org.eclipse.jdt:ecj was updated to 3.18.0.
    • com.github.jengelman.gradle.plugins:shadow was updated to 5.1.0.
    • checkstyle was updated to 8.22.
    • gradle was updated to 5.4.
    • dependency-check-gradle was updated to 5.1.0.
    • org.slf4j:slf4j-api was updated to 1.7.26.
    • org.apache.commons:commons-lang3 was updated to 3.9.

7.0.0

  • [ENHANCEMENTS]
    • The new interface io.appium.java_client.FindsByAndroidViewTag was added. #996
    • The selector strategy io.appium.java_client.MobileBy.ByAndroidViewTag was added. #996
    • The new interface io.appium.java_client.FindsByImage was added. #990
    • The selector strategy io.appium.java_client.MobileBy.ByImage was added. #990
    • The new interface io.appium.java_client.FindsByCustom was added. #1041
    • The selector strategy io.appium.java_client.MobileBy.ByCustom was added. #1041
    • DatatypeConverter is replaced with Base64 for JDK 9 compatibility. #999
    • Expand touch options API to accept coordinates as Point. #997
    • W3C capabilities written into firstMatch entity instead of alwaysMatch. #1010
    • Selendroid for android and UIAutomation for iOS is deprecated. #1034 and #1074
    • videoScale and fps screen recording options are introduced for iOS. #1067
    • NORMALIZE_TAG_NAMES setting was introduced for android. #1073
    • threshold argument was added to OccurrenceMatchingOptions. #1060
    • org.openqa.selenium.internal.WrapsElement replaced by org.openqa.selenium.WrapsElement. #1053
    • SLF4J logging support added into Appium Driver local service. #1014
    • IMAGE_MATCH_THRESHOLD, FIX_IMAGE_FIND_SCREENSHOT_DIMENSIONS, FIX_IMAGE_TEMPLATE_SIZE, CHECK_IMAGE_ELEMENT_STALENESS, UPDATE_IMAGE_ELEMENT_POSITION and IMAGE_ELEMENT_TAP_STRATEGY setting was introduced for image elements. #1011
  • [BUG FIX] Better handling of InvocationTargetException #968
  • [BUG FIX] Map sending keys to active element for W3C compatibility. #966
  • [BUG FIX] Error message on session creation is improved. #994
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 3.141.59.
    • com.google.code.gson:gson was updated to 2.8.5.
    • org.apache.httpcomponents:httpclient was updated to 4.5.6.
    • cglib:cglib was updated to 3.2.8.
    • org.apache.commons:commons-lang3 was updated to 3.8.
    • org.springframework:spring-context was updated to 5.1.0.RELEASE.
    • io.github.bonigarcia:webdrivermanager was updated to 3.0.0.
    • org.eclipse.jdt:ecj was updated to 3.14.0.
    • org.slf4j:slf4j-api was updated to 1.7.25.
    • jacoco was updated to 0.8.2.
    • checkstyle was updated to 8.12.
    • gradle was updated to 4.10.1.
    • org.openpnp:opencv was removed.

6.1.0

  • [BUG FIX] Initing web socket clients lazily. Report #911. FIX: #912.
  • [BUG FIX] Fix session payload for W3C. #913
  • [ENHANCEMENT] Added TouchAction constructor argument verification #923
  • [BUG FIX] Set retry flag to true by default for OkHttpFactory. #928
  • [BUG FIX] Fix class cast exception on getting battery info. #935
  • [ENHANCEMENT] Added an optional format argument to getDeviceTime and update the documentation. #939
  • [ENHANCEMENT] The switching web socket client implementation to okhttp library. #941
  • [BUG FIX] Fix of the bug #924. #951

6.0.0

  • [ENHANCEMENT] Added an ability to set pressure value for iOS. #879
  • [ENHANCEMENT] Added new server arguments RELAXED_SECURITY and ENABLE_HEAP_DUMP. #880
  • [BUG FIX] Use default Selenium HTTP client factory #877
  • [ENHANCEMENT] Supporting syslog broadcast with iOS #871
  • [ENHANCEMENT] Added isKeyboardShown command for iOS #887
  • [ENHANCEMENT] Added battery information accessors #882
  • [BREAKING CHANGE] Removal of deprecated code. #881
  • [BUG FIX] Added NewAppiumSessionPayload. Bug report: #875. FIX: #894
  • [ENHANCEMENT] Added ESPRESSO automation name #908
  • [ENHANCEMENT] Added a method for output streams cleanup #909
  • [DEPENDENCY UPDATES]
    • com.google.code.gson:gson was updated to 2.8.4
    • org.springframework:spring-context was updated to 5.0.5.RELEASE
    • org.aspectj:aspectjweaver was updated to 1.9.1
    • org.glassfish.tyrus:tyrus-clien was updated to 1.13.1
    • org.glassfish.tyrus:tyrus-container-grizzly was updated to 1.2.1
    • org.seleniumhq.selenium:selenium-java was updated to 3.12.0

6.0.0-BETA5

  • [ENHANCEMENT] Added clipboard handlers. #855 #869
  • [ENHANCEMENT] Added wrappers for Android logcat broadcaster. #858
  • [ENHANCEMENT] Add bugreport option to Android screen recorder. #852
  • [BUG FIX] Avoid amending parameters for SET_ALERT_VALUE endpoint. #867
  • [BREAKING CHANGE] Refactor network connection setting on Android. #865
  • [BUG FIX] [BREAKING CHANGE] Refactor of the io.appium.java_client.AppiumFluentWait. It uses java.time.Duration for time settings instead of org.openqa.selenium.support.ui.Duration and java.util.concurrent.TimeUnit #863
  • [BREAKING CHANGE] io.appium.java_client.pagefactory.TimeOutDuration became deprecated. It is going to be removed. Use java.time.Duration instead. FIX #742 #863.
  • [BREAKING CHANGE] io.appium.java_client.pagefactory.WithTimeOut#unit became deprecated. It is going to be removed. Use io.appium.java_client.pagefactory.WithTimeOut#chronoUnit instead. FIX #742 #863.
  • [BREAKING CHANGE] constructors of io.appium.java_client.pagefactory.AppiumElementLocatorFactory, io.appium.java_client.pagefactory.AppiumFieldDecorator and io.appium.java_client.pagefactory.AppiumElementLocator which use io.appium.java_client.pagefactory.TimeOutDuration as a parameter became deprecated. Use new constructors which use java.time.Duration.
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 3.11.0

6.0.0-BETA4

  • [ENHANCEMENT] Added handler for isDispalyed in W3C mode. #833
  • [ENHANCEMENT] Added handlers for sending SMS, making GSM Call, setting GSM signal, voice, power capacity and power AC. #834
  • [ENHANCEMENT] Added handlers for toggling wifi, airplane mode and data in android. #835
  • [DEPENDENCY UPDATES]
    • org.apache.httpcomponents:httpclient was updated to 4.5.5
    • cglib:cglib was updated to 3.2.6
    • org.springframework:spring-context was updated to 5.0.3.RELEASE

6.0.0-BETA3

  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java was updated to 3.9.1
  • [BREAKING CHANGE] Removal of deprecated listener-methods from the AlertEventListener. #797
  • [BUG FIX]. Fix the pushFile command. #812 #816
  • [ENHANCEMENT]. Implemented custom command codec. #817, #825
  • [ENHANCEMENT] Added handlers for lock/unlock in iOS. #799
  • [ENHANCEMENT] AddEd endpoints for screen recording API for iOS and Android. #814
  • [MAJOR ENHANCEMENT] W3C compliance was provided. #829
  • [ENHANCEMENT] New capability MobileCapabilityType.FORCE_MJSONWP #829
  • [ENHANCEMENT] Updated applications management endpoints. #824

6.0.0-BETA2

  • [ENHANCEMENT] The fingerPrint ability was added. It is supported by Android for now. #473 #786
  • [BUG FIX]. Less strict verification of the PointOption. #795

6.0.0-BETA1

  • [ENHANCEMENT] [REFACTOR] [BREAKING CHANGE] [MAJOR CHANGE] Improvements of the TouchActions API #756, #760:
    • io.appium.java_client.touch.ActionOptions and sublasses were added
    • old methods of the TouchActions were marked @Deprecated
    • new methods which take new options.
  • [ENHANCEMENT]. Appium drivr local service uses default process environment by default. #753
  • [BUG FIX]. Removed 'set' prefix from waitForIdleTimeout setting. #754
  • [BUG FIX]. The asking for session details was optimized. Issue report 764. FIX #769
  • [BUG FIX] [REFACTOR]. Inconcistent MissingParameterException was removed. Improvements of MultiTouchAction. Report: #102. FIX #772
  • [DEPENDENCY UPDATES]
    • org.apache.commons:commons-lang3 was updated to 3.7
    • commons-io:commons-io was updated to 2.6
    • org.springframework:spring-context was updated to 5.0.2.RELEASE
    • org.aspectj:aspectjweaver was updated to 1.8.13
    • org.seleniumhq.selenium:selenium-java was updated to 3.7.1

5.0.4

  • [BUG FIX]. Client was crashing when user was testing iOS with server 1.7.0. Report: #732. Fix: #733.
  • [REFACTOR] [BREAKING CHANGE] Excessive invocation of the implicit waiting timeout was removed. This is the breaking change because API of AppiumElementLocator and AppiumElementLocatorFactory was changed. Request: #735, FIXES: #738, #741
  • [DEPENDENCY UPDATES]
    • org.seleniumhq.selenium:selenium-java to 3.6.0
    • com.google.code.gson:gson to 2.8.2
    • org.springframework:spring-context to 5.0.0.RELEASE
    • org.aspectj:aspectjweaver to 1.8.11

5.0.3

  • [BUG FIX] Selenuim version was reverted from boundaries to the single number. Issue report: #718. FIX: #722
  • [ENHANCEMENT] The pushFile was added to IOSDriver. Feature request: #720. Implementation: #721. This feature requires appium node server v>=1.7.0

5.0.2 [BUG FIX RELEASE]

  • [BUG FIX] Dependency conflict resolving. The report: #714. The fix: #717. This change may affect users who use htmlunit-driver and/or phantomjsdriver. At this case it is necessary to add it to dependency list and to exclude old selenium versions.

5.0.1 [BUG FIX RELEASE]

  • [BUG FIX] The fix of the element genering on iOS was fixed. Issue report: #704. Fix: #705

5.0.0

  • [REFACTOR] [BREAKING CHANGE] 5.0.0 finalization. Removal of obsolete code. #660
  • [ENHANCEMENT] Enable nativeWebTap setting for iOS. #658
  • [ENHANCEMENT] The getCurrentPackage was added. #657
  • [ENHANCEMENT] The toggleTouchIDEnrollment was added. #659
  • [BUG FIX] The clearing of existing actions/parameters after perform is invoked. #663
  • [BUG FIX] #669 missed parameters of the OverrideWidget were added:
    • iOSXCUITAutomation
    • windowsAutomation
  • [BUG FIX] ByAll was re-implemented. #680
  • [BUG FIX] [BREAKING CHANGE] The issue of compliance with Selenium grid 3.x was fixed. This change is breaking because now java_client is compatible with appiun server v>=1.6.5. Issue report #655. FIX #682
  • [BUG FIX] issues related to latest Selenium changes were fixed. Issue report #696. Fix: #699.
  • [UPDATE] Dependency update
    • selenium-java was updated to 3.5.x
    • org.apache.commons-lang3 was updated to 3.6
    • org.springframework.spring-context was updated to 4.3.10.RELEASE
  • [ENHANCEMENT] Update of the touch ID enroll method. The older PerformsTouchID#toggleTouchIDEnrollment was marked Deprecated. It is recoomended to use PerformsTouchID#toggleTouchIDEnrollment(boolean) instead. #695

5.0.0-BETA9

  • [ENHANCEMENT] Page factory: Mixed locator strategies were implemented. Feature request:#565 Implementation: #646
  • [DEPRECATED] All the content of the io.appium.java_client.youiengine package was marked Deprecated. It is going to be removed. #652
  • [UPDATE] Update of the com.google.code.gson:gson to v2.8.1.

5.0.0-BETA8

  • [ENHANCEMENT] Page factory classes became which had package visibility are public now. #630

    • io.appium.java_client.pagefactory.AppiumElementLocatorFactory
    • io.appium.java_client.pagefactory.DefaultElementByBuilder
    • io.appium.java_client.pagefactory.WidgetByBuilder
  • [ENHANCEMENT] New capabilities were added #626:

    • AndroidMobileCapabilityType#AUTO_GRANT_PERMISSIONS
    • AndroidMobileCapabilityType#ANDROID_NATURAL_ORIENTATION
    • IOSMobileCapabilityType#XCODE_ORG_ID
    • IOSMobileCapabilityType#XCODE_SIGNING_ID
    • IOSMobileCapabilityType#UPDATE_WDA_BUNDLEID
    • IOSMobileCapabilityType#RESET_ON_SESSION_START_ONLY
    • IOSMobileCapabilityType#COMMAND_TIMEOUTS
    • IOSMobileCapabilityType#WDA_STARTUP_RETRIES
    • IOSMobileCapabilityType#WDA_STARTUP_RETRY_INTERVAL
    • IOSMobileCapabilityType#CONNECT_HARDWARE_KEYBOARD
    • IOSMobileCapabilityType#MAX_TYPING_FREQUENCY
    • IOSMobileCapabilityType#SIMPLE_ISVISIBLE_CHECK
    • IOSMobileCapabilityType#USE_CARTHAGE_SSL
    • IOSMobileCapabilityType#SHOULD_USE_SINGLETON_TESTMANAGER
    • IOSMobileCapabilityType#START_IWDP
    • IOSMobileCapabilityType#ALLOW_TOUCHID_ENROLL
    • MobileCapabilityType#EVENT_TIMINGS
  • [UPDATE] Dependencies were updated:

    • org.seleniumhq.selenium:selenium-java was updated to 3.4.0
    • cglib:cglib was updated to 3.2.5
    • org.apache.httpcomponents:httpclient was updated to 4.5.3
    • commons-validator:commons-validator was updated to 1.6
    • org.springframework:spring-context was updated to 4.3.8.RELEASE

5.0.0-BETA7

  • [ENHANCEMENT] The ability to customize the polling strategy of the waiting was provided. #612
  • [ENHANCEMENT] [REFACTOR] Methods which were representing time deltas instead of elementary types became Deprecated. Methods which use java.time.Duration are suugested to be used. #611
  • [ENHANCEMENT] The ability to calculate screenshots overlap was included. #595.

5.0.0-BETA6

  • [UPDATE] Update to Selenium 3.3.1
  • [ENHANCEMENT] iOS XCUIT mode automation: API to run application in background was added. #593
  • [BUG FIX] Issue report: #594. FIX: #597
  • [ENHANCEMENT] The class chain locator was added. #599

5.0.0-BETA5

  • [UPDATE] Update to Selenium 3.2.0
  • [BUG FIX] Excessive dependency on guava was removed. It causes errors. Issue report: #588. FIX: #589.
  • [ENHANCEMENT]. The capability io.appium.java_client.remote.AndroidMobileCapabilityType#SYSTEM_PORT was added. #591

5.0.0-BETA4

  • [ENHANCEMENT] Android. API to read the performance data was added. #562
  • [REFACTOR] Android. Simplified the activity starting by reducing the number of parameters through POJO clas. Old methods which start activities were marked @Deprecated. #579 #585
  • [BUG FIX] Issue report:#574. Fix:#582

5.0.0-BETA3 [BUG FIX]

  • [BUG FIX]:Issue report: #567. Fix: #568

5.0.0-BETA2

  • [BUG FIX]:Issue report: #549. Fix: #551
  • New capabilities were added #533:
    • IOSMobileCapabilityType#USE_NEW_WDA
    • IOSMobileCapabilityType#WDA_LAUNCH_TIMEOUT
    • IOSMobileCapabilityType#WDA_CONNECTION_TIMEOUT

The capability IOSMobileCapabilityType#REAL_DEVICE_LOGGER was removed. #533

  • [BUG FIX]/[ENHANCEMENT]. Issue report: #552. FIX #556

    • Additional methods were added to the io.appium.java_client.HasSessionDetails
      • String getPlatformName()
      • String getAutomationName()
      • boolean isBrowser()
    • io.appium.java_client.HasSessionDetails is used by the io.appium.java_client.internal.JsonToMobileElementConverter to define which instance of the org.openqa.selenium.WebElement subclass should be created.
  • [ENHANCEMENT]: The additional event firing feature. PR: #559. The WIKI chapter about the event firing was updated.

5.0.0-BETA1

  • [MAJOR ENHANCEMENT]: Migration to Java 8. Epic: #399

    • API with default implementation. PR #470
    • Tools that provide Page Object engines were redesigned. The migration to repeatable annotations. Details you can read there: #497. Documentation was synced as well.
    • The new functional interface io.appium.java_client.functions.AppiumFunction was designed. It extends java.util.function.Function and com.google.common.base.Function. It was designed in order to provide compatibility with the org.openqa.selenium.support.ui.Wait #543
    • The new functional interface io.appium.java_client.functions.ExpectedCondition was designed. It extends io.appium.java_client.functions.AppiumFunction and org.openqa.selenium.support.ui.ExpectedCondition. #543
    • The new functional interface io.appium.java_client.functions.ActionSupplier was designed. It extends java.util.function.Supplier. #543
  • [MAJOR ENHANCEMENT]: Migration from Maven to Gradle. Feature request is #214. Fixes: #442, #465.

  • [MAJOR ENHANCEMENT] [MAJOR REFACTORING]. Non-abstract AppiumDriver:

    • Now the io.appium.java_client.AppiumDriver can use an instance of any io.appium.java_client.MobileBy subclass for the searching. It should work as expected when current session supports the given selector. It will throw org.openqa.selenium.WebDriverException otherwise. #462

    • The new interface io.appium.java_client.FindsByFluentSelector was added. #462

    • API was redesigned:

      these interfaces were marked deprecated and they are going to be removed #513#514:

      • io.appium.java_client.DeviceActionShortcuts
      • io.appium.java_client.android.AndroidDeviceActionShortcuts
      • io.appium.java_client.ios.IOSDeviceActionShortcuts

      instead following inerfaces were designed:

      • io.appium.java_client.HasDeviceTime
      • io.appium.java_client.HidesKeyboard
      • io.appium.java_client.HidesKeyboardWithKeyName
      • io.appium.java_client.PressesKeyCode
      • io.appium.java_client.ios.ShakesDevice
      • io.appium.java_client.HasSessionDetails That was done because Windows automation tools have some features that were considered as Android-specific and iOS-specific.

      The list of classes and methods which were marked deprecated and they are going to be removed

      • AppiumDriver#swipe(int, int, int, int, int)
      • AppiumDriver#pinch(WebElement)
      • AppiumDriver#pinch(int, int)
      • AppiumDriver#zoom(WebElement)
      • AppiumDriver#zoom(int, int)
      • AppiumDriver#tap(int, WebElement, int)
      • AppiumDriver#tap(int, int, int, int)
      • AppiumDriver#swipe(int, int, int, int, int)
      • MobileElement#swipe(SwipeElementDirection, int)
      • MobileElement#swipe(SwipeElementDirection, int, int, int)
      • MobileElement#zoom()
      • MobileElement#pinch()
      • MobileElement#tap(int, int)
      • io.appium.java_client.SwipeElementDirection and io.appium.java_client.TouchebleElement also were marked deprecated.

      redesign of TouchAction and MultiTouchAction

      • constructors were redesigned. There is no strict binding of AppiumDriver and TouchAction /MultiTouchAction. They can consume any instance of a class that implements PerformsTouchActions.
      • io.appium.java_client.ios.IOSTouchAction was added. It extends io.appium.java_client.TouchAction.
      • the new interface io.appium.java_client.PerformsActions was added. It unifies TouchAction and MultiTouchAction now. #543

      JsonToMobileElementConverter re-design #532:

      • unused MobileElementToJsonConverter was removed
      • JsonToMobileElementConverter is not rhe abstract class now. It generates instances of MobileElement subclasses according to current session parameters
      • JsonToAndroidElementConverter is deprecated now
      • JsonToIOSElementConverter is depreacated now
      • JsonToYouiEngineElementConverter is deprecated now.
      • constructors of 'AppiumDriver' were re-designed.
      • constructors of 'AndroidDriver' were re-designed.
      • constructors of 'IOSDriver' were re-designed.
  • [MAJOR ENHANCEMENT] Windows automation. Epic #471

    • The new interface io.appium.java_client.FindsByWindowsAutomation was added. #462. With @jonstoneman 's authorship.
    • The new selector strategy io.appium.java_client.MobileBy.ByWindowsAutomation was added. #462. With @jonstoneman 's authorship.
    • io.appium.java_client.windows.WindowsDriver was designed. #538
    • io.appium.java_client.windows.WindowsElement was designed. #538
    • io.appium.java_client.windows.WindowsKeyCode was added. #538
    • Page object tools were updated #538
      • the io.appium.java_client.pagefactory.WindowsFindBy annotation was added.
      • io.appium.java_client.pagefactory.AppiumFieldDecorator and supporting tools were actualized.
  • [MAJOR ENHANCEMENT] iOS XCUIT mode automation:

    • io.appium.java_client.remote.AutomationName#IOS_XCUI_TEST was added
    • The new interface io.appium.java_client.FindsByIosNSPredicate was added. #462. With @rafael-chavez 's authorship. It is implemented by io.appium.java_client.ios.IOSDriver and io.appium.java_client.ios.IOSElement.
    • The new selector strategy io.appium.java_client.MobileBy.ByIosNsPredicate was added. #462. With @rafael-chavez 's authorship.
    • Page object tools were updated #545, #546
      • the io.appium.java_client.pagefactory.iOSXCUITFindBy annotation was added.
      • io.appium.java_client.pagefactory.AppiumFieldDecorator and supporting tools were actualized.
  • [ENHANCEMENT] Added the ability to set UiAutomator Congfigurator values. #410. #477.

  • [ENHANCEMENT]. Additional methods which perform device rotation were implemented. #489. #439. But it works for iOS in XCUIT mode and for Android in UIAutomator2 mode only. The feature request: #7131

  • [ENHANCEMENT]. TouchID Implementation (iOS Sim Only). Details: #509

  • [ENHANCEMENT]. The ability to use port, ip and log file as server arguments was provided. Feature request: #521. Fixes: #522, #524.

  • [ENHANCEMENT]. The new interface io.appium.java_client.android.HasDeviceDetails was added. It is implemented by io.appium.java_client.android.AndroidDriver by default. #518

  • [ENHANCEMENT]. New touch actions were added. io.appium.java_client.ios.IOSTouchAction#doubleTap(WebElement, int, int) and io.appium.java_client.ios.IOSTouchAction#doubleTap(WebElement). #523, #444

  • [ENHANCEMENT]. All constructors declared by io.appium.java_client.AppiumDriver are public now.

  • [BUG FIX]: There was the issue when "@WithTimeout" was changing general timeout of the waiting for elements. Bug report: #467. Fixes: #468, #469, #480. Read: supported-settings

  • Added the server flag io.appium.java_client.service.local.flags.AndroidServerFlag#REBOOT. #476

  • Added io.appium.java_client.remote.AndroidMobileCapabilityType.APP_WAIT_DURATION capability. #461

  • the new automation type io.appium.java_client.remote.MobilePlatform#ANDROID_UIAUTOMATOR2 was add.

  • the new automation type io.appium.java_client.remote.MobilePlatform#YOUI_ENGINE was add.

  • Additional capabilities were addede:

    • IOSMobileCapabilityType#CUSTOM_SSL_CERT
    • IOSMobileCapabilityType#TAP_WITH_SHORT_PRESS_DURATION
    • IOSMobileCapabilityType#SCALE_FACTOR
    • IOSMobileCapabilityType#WDA_LOCAL_PORT
    • IOSMobileCapabilityType#SHOW_XCODE_LOG
    • IOSMobileCapabilityType#REAL_DEVICE_LOGGER
    • IOSMobileCapabilityType#IOS_INSTALL_PAUSE
    • IOSMobileCapabilityType#XCODE_CONFIG_FILE
    • IOSMobileCapabilityType#KEYCHAIN_PASSWORD
    • IOSMobileCapabilityType#USE_PREBUILT_WDA
    • IOSMobileCapabilityType#PREVENT_WDAATTACHMENTS
    • IOSMobileCapabilityType#WEB_DRIVER_AGENT_URL
    • IOSMobileCapabilityType#KEYCHAIN_PATH
    • MobileCapabilityType#CLEAR_SYSTEM_FILES
  • [UPDATE] to Selenium 3.0.1.

  • [UPDATE] to Spring Framework 4.3.5.RELEASE.

  • [UPDATE] to AspectJ weaver 1.8.10.

4.1.2

  • Following capabilities were added:
    • io.appium.java_client.remote.AndroidMobileCapabilityType.ANDROID_INSTALL_TIMEOUT
    • io.appium.java_client.remote.AndroidMobileCapabilityType.NATIVE_WEB_SCREENSHOT
    • io.appium.java_client.remote.AndroidMobileCapabilityType.ANDROID_SCREENSHOT_PATH. The pull request: #452
  • org.openqa.selenium.Alert was reimplemented for iOS. Details: #459
  • The deprecated io.appium.java_client.generic.searchcontext was removed.
  • The dependency on com.google.code.gson was updated to 2.7. Also it was adde to exclusions for org.seleniumhq.selenium selenium-java.
  • The new AutomationName was added. IOS_XCUI_TEST. It is needed for the further development.
  • The new MobilePlatform was added. WINDOWS. It is needed for the further development.

4.1.1

BUG FIX: Issue #450. Fix: #451. Thanks to @tutunang for the report.

4.1.0

  • all code marked @Deprecated was removed.
  • getSessionDetails() was added. Thanks to @saikrishna321 for the contribution.
  • FIX #362, #220, #323. Details read there: #413
  • FIX #392. Thanks to @truebit for the bug report.
  • The dependency on cglib was replaced by the dependency on cglib-nodep. FIX #418
  • The casting to the weaker interface HasIdentity instead of class RemoteWebElement was added. It is the internal refactoring of the TouchAction. #432. Thanks to @asolntsev for the contribution.
  • The setValue method was moved to MobileElement. It works against text input elements on Android.
  • The dependency on org.springframework spring-context v4.3.2.RELEASE was added
  • The dependency on org.aspectj aspectjweaver v1.8.9 was added
  • ENHANCEMENT: The alternative event firing engine. The feature request: #242. Implementation: #437. Also new WIKI chapter was added.
  • ENHANCEMENT: Convenient access to specific commands for each supported mobile OS. Details: #445
  • dependencies and plugins were updated
  • ENHANCEMENT: YouiEngineDriver was added. Details: appium server #6215, #429, #448. It is just the draft of the new solution that is going to be extended further. Please stay tuned. There are many interesting things are coming up. Thanks to You I Engine team for the contribution.

4.0.0

  • all code marked @Deprecated was removed. Java client won't support old servers (v<1.5.0) anymore.
  • the ability to start an activity using Android intent actions, intent categories, flags and arguments was added to AndroidDriver. Thanks to @saikrishna321 for the contribution.
  • scrollTo() and scrollToExact() became deprecated. They are going to be removed in the next release.
  • The interface io.appium.java_client.ios.GetsNamedTextField and the declared method T getNamedTextField(String name) are deprecated as well. They are going to be removed in the next release.
  • Methods findElements(String by, String using) and findElement(String by, String using) of org.openga.selenium.remote.RemoteWebdriver are public now. Thanks to @SrinivasanTarget.
  • the io.appium.java_client.NetworkConnectionSetting class was marked deprecated
  • the enum io.appium.java_client.android.Connection was added. All supported network bitmasks are defined there.
  • Android. Old methods which get/set connection were marked @Deprecated
  • Android. New methods which consume/return io.appium.java_client.android.Connection were added.
  • the commandRepository field is public now. The modification of the MobileCommand
  • Constructors like AppiumDriver(HttpCommandExecutor executor, Capabilities capabilities) were added to io.appium.java_client.android.AndroidDriver and io.appium.java_client.ios.IOSDriver
  • The refactoring of io.appium.java_client.internal.JsonToMobileElementConverter. Now it accepts org.openqa.selenium.remote.RemoteWebDriver as the constructor parameter. It is possible to re-use io.appium.java_client.android.internal.JsonToAndroidElementConverter or io.appium.java_client.ios.internal.JsonToIOSElementConverter by RemoteWebDriver when it is needed.
  • Constructors of the abstract io.appium.java_client.AppiumDriver were redesigned. Now they require a subclass of io.appium.java_client.internal.JsonToMobileElementConverter. Constructors of io.appium.java_client.android.AndroidDriver and io.appium.java_client.ios.IOSDriver are same still.
  • The pushFile(String remotePath, File file) was added to AndroidDriver
  • FIX of TouchAction. Instances of the TouchAction class are reusable now
  • FIX of the swiping issue (iOS, server version >= 1.5.0). Now the swiping is implemented differently by AndroidDriver and IOSDriver. Thanks to @truebit and @nuggit32 for the catching.
  • the project was integrated with maven-checkstyle-plugin. Thanks to @SrinivasanTarget for the work
  • source code was improved according to code style checking rules.
  • the integration with org.owasp dependency-check-maven was added. Thanks to @saikrishna321 for the work.
  • the integration with org.jacoco jacoco-maven-plugin was added. Thanks to @SrinivasanTarget for the contribution.

3.4.1

  • Update to Selenium v2.53.0
  • all dependencies were updated to latest versions
  • the dependency on org.apache.commons commons-lang3 v3.4 was added
  • the fix of Widget method invocation.#340. A class visibility was taken into account. Thanks to aznime for the catching. Server flags were added:
    • GeneralServerFlag.ASYNC_TRACE
    • IOSServerFlag.WEBKIT_DEBUG_PROXY_PORT
  • Source code was formatted using eclipse-java-google-style.xml. This is not the complete solution. The code style checking is going to be added further. Thanks to SrinivasanTarget for the work!

3.4.0

  • Update to Selenium v2.52.0
  • getAppStrings() methods are deprecated now. They are going to be removed. getAppStringMap() methods were added and now return a map with app strings (keys and values) instead of a string. Thanks to @rgonalo for the contribution.
  • Add getAppStringMap(String language, String stringFile) method to allow searching app strings in the specified file
  • FIXED of the bug which causes deadlocks of AppiumDriver LocalService in multithreading. Thanks to saikrishna321 for the bug report.
  • FIXED Zoom methods, thanks to @kkhaidukov
  • FIXED The issue of compatibility of AppiumServiceBuilder with Appium node server v >= 1.5.x. Take a look at #305
  • getDeviceTime() was added. Thanks to @SrinivasanTarget for the contribution.
  • FIXED longPressKeyCode() methods. Now they use the convenient JSONWP command.Thanks to @kirillbilchenko for the proposed fix.
  • FIXED javadoc.
  • Page object tools were updated. Details read here: #311, #313, #317. By.name locator strategy is deprecated for Android and iOS. It is still valid for the Selendroid mode. Thanks to @SrinivasanTarget for the helping.
  • The method lockScreen(seconds) is deprecated and it is going to be removed in the next release. Since Appium node server v1.5.x it is recommended to use AndroidDriver.lockDevice()...AndroidDriver.unlockDevice() or IOSDriver.lockDevice(int seconds) instead. Thanks to @namannigam for the catching. Read #315
  • maven-release-plugin was added to POM.XML configuration
  • #320 fix. The Widget.getSelfReference() was added. This method allows to extract a real widget-object from inside a proxy at some extraordinary situations. Read: PR. Thanks to SergeyErmakovMercDev for the reporting.
  • all capabilities were added according to this description. There are three classes: io.appium.java_client.remote.MobileCapabilityType (just modified), io.appium.java_client.remote.AndroidMobileCapabilityType (android-specific capabilities), io.appium.java_client.remote.IOSMobileCapabilityType (iOS-specific capabilities). Details are here: #326
  • some server flags were marked deprecated because they are deprecated since server node v1.5.x. These flags are going to be removed at the java client release. Details are here: #326
  • The ability to start Appium node programmatically using desired capabilities. This feature is compatible with Appium node server v >= 1.5.x. Details are here: #326

3.3.0

  • updated the dependency on Selenium to version 2.48.2
  • bug fix and enhancements of io.appium.java_client.service.local.AppiumDriverLocalService
    • FIXED bug which was found and reproduced with Eclipse for Mac OS X. Please read about details here: #252 Thanks to saikrishna321 for the bug report
    • FIXED bug which was found out by Jonahss. Thanks for the reporting. Details: #272 and #273
    • For starting an appium server using localService, added additional environment variable to specify the location of Node.js binary: NODE_BINARY_PATH
    • The ability to set additional output streams was provided
  • The additional startActivity() method was added to AndroidDriver. It allows to start activities without the stopping of a target app Thanks to deadmoto for the contribution
  • The additional extension of the Page Object design pattern was designed. Please read about details here: #267
  • New public constructors to AndroidDriver/IOSDriver that allow passing a custom HttpClient.Factory Details: #276 thanks to baechul

3.2.0

  • updated the dependency on Selenium to version 2.47.1
  • the new dependency on commons-validator v1.4.1
  • the ability to start programmatically/silently an Appium node server is provided now. Details please read at #240. Historical reference: The similar solution has been designed by @Hassan-Radi. The mentioned framework and the current solution use different approaches.
  • Throwing declarations were added to some searching methods. The "getMouse" method of RemoteWebDriver was marked Deprecated
  • Add replaceValue method for elements.
  • Replace sendKeyEvent() method in android with pressKeyCode(int key) and added: pressKeyCode(int key, Integer metastate), longPressKeyCode(int key), longPressKeyCode(int key, Integer metastate)

3.1.1

  • Page-object findBy strategies are now aware of which driver (iOS or Android) you are using. For more details see the Pull Request: #213
  • If somebody desires to use their own Webdriver implementation then it has to implement HasCapabilities.
  • Added a new annotation: WithTimeout. This annotation allows one to specify a specific timeout for finding an element which overrides the drivers default timeout. For more info see: #210
  • Corrected an uninformative Exception message.

3.0.0

  • AppiumDriver class is now a Generic. This allows us to return elements of class MobileElement (and its subclasses) instead of always returning WebElements and requiring users to cast to MobileElement. See #182
  • Full set of Android KeyEvents added.
  • Selenium client version updated to 2.46
  • PageObject enhancements
  • Junit dependency removed

2.2.0

  • Added new TouchAction methods for LongPress, on an element, at x,y coordinates, or at an offset from within an element
  • SwipeElementDirection changed. Read the documentation, it's now smarter about how/where to swipe
  • Added APPIUM_VERSION MobileCapabilityType
  • sendKeyEvent() moved from AppiumDriver to AndroidDriver
  • linkText and partialLinkText locators added
  • setValue() moved from MobileElement to iOSElement
  • Fixed Selendroid PageAnnotations

2.1.0

  • Moved hasAppString() from AndroidDriver to AppiumDriver
  • Fixes to PageFactory
  • Added @AndroidFindAll and @iOSFindAll
  • Added toggleLocationServices() to AndroidDriver
  • Added touchAction methods to MobileElement, so now you can do element.pinch(), element.zoom(), etc.
  • Added the ability to choose a direction to swipe over an element. Use the SwipeElementDirection enums: UP, DOWN, LEFT, RIGHT

2.0.0

  • AppiumDriver is now an abstract class, use IOSDriver and AndroidDriver which both extend it. You no longer need to include the PLATFORM_NAME desired capability since it's automatic for each class. Thanks to @TikhomirovSergey for all their work
  • ScrollTo() and ScrollToExact() methods reimplemented
  • Zoom() and Pinch() are now a little smarter and less likely to fail if you element is near the edge of the screen. Congratulate @BJap on their first PR!

1.7.0

  • Removed scrollTo() and scrollToExact() methods because they relied on complexFind(). They will be added back in the next version!
  • Removed complexFind()
  • Added startActivity() method
  • Added isLocked() method
  • Added getSettings() and ignoreUnimportantViews() methods

1.6.2

  • Added MobilePlatform interface (Android, IOS, FirefoxOS)
  • Added MobileBrowserType interface (Safari, Browser, Chromium, Chrome)
  • Added MobileCapabilityType.APP_WAIT_ACTIVITY
  • Fixed small Integer cast issue (in Eclipse it won't compile)
  • Set -source and -target of the Java Compiler to 1.7 (for maven compiler plugin)
  • Fixed bug in Page Factory

1.6.1

  • Fixed the logic for checking connection status on NetworkConnectionSetting objects

1.6.0

  • Added @findBy annotations. Explanation here: #68 Thanks to TikhomirovSergey
  • Appium Driver now implements LocationContext interface, so setLocation() works for setting GPS coordinates

1.5.0

  • Added MobileCapabilityType enums for desired capabilities
  • findElement and findElements return MobileElement objects (still need to be casted, but no longer instantiated)
  • new appium v1.2 hideKeyboard() strategies added
  • getNetworkConnection() and setNetworkConnection() commands added

1.4.0

  • Added openNotifications() method, to open the notifications shade on Android
  • Added pullFolder() method, to pull an entire folder as a zip archive from a device/simulator
  • Upgraded Selenium dependency to 2.42.2

1.3.0

  • MultiGesture with a single TouchAction fixed for Android
  • Now depends upon Selenium java client 2.42.1
  • Cleanup of Errorcode handling, due to merging a change into Selenium

1.2.1

  • fix dependency issue

1.2.0

  • complexFind() now returns MobileElement objects
  • added scrollTo() and scrollToExact() methods for use with complexFind()

1.1.0

  • AppiumDriver now implements Rotatable. rotate() and getOrientation() methods added
  • when no appium server is running, the proper error is thrown, instead of a NullPointerException

1.0.2

  • recompiled to include some missing methods such as shake() and complexFind()