Giter VIP home page Giter VIP logo

appium / appium-flutter-driver Goto Github PK

View Code? Open in Web Editor NEW
425.0 33.0 176.0 95.28 MB

Appium Flutter Driver is a test automation tool for Flutter apps on multiple platforms/OSes. Appium Flutter Driver is part of the Appium mobile test automation tool maintained by community

License: MIT License

JavaScript 6.57% TypeScript 44.13% Java 5.75% Objective-C 0.58% Dart 5.87% Kotlin 8.55% HTML 0.25% Ruby 10.19% Shell 0.37% Python 7.74% C# 10.00%

appium-flutter-driver's Introduction

Appium Flutter Driver

NPM version Downloads

Appium Flutter Driver is a test automation tool for Flutter apps on multiple platforms/OSes. Appium Flutter Driver is part of the Appium mobile test automation tool maintained by the community. Feel free to create PRs to fix issues/improve this driver.

Flutter Driver vs Appium Flutter Driver

Even though Flutter comes with superb integration test support, Flutter Driver, it does not fit some specific use cases, such as

  • Writing tests in other languages than Dart
  • Running integration test for Flutter app with embedded webview or native view, or existing native app with embedded Flutter view
  • Running tests on multiple devices simultaneously
  • Running integration tests on device farms that offer Appium support (Please contact the availability for each vendor)

Under the hood, Appium Flutter Driver uses the Dart VM Service Protocol with extension ext.flutter.driver, similar to Flutter Driver, to control the Flutter app-under-test (AUT).

Appium Flutter Driver or Appium UiAutomator2/XCUITest driver

  • Appium Flutter driver manages the application under test and the device under test via Appium UiAutomator2/XCUITest drivers
    • FLUTTER context sends commands to the Dart VM directly over the observatory URL
      • Newer Flutter versions expose its accessibility labels to the system's accessibility features. It means you can find some Flutter elements and can interact with them over accessibility_id etc in the vanilla Appium UiAutomator2/XCUITest drivers, although some elements require over the Dart VM
    • NATIVE_APP context is the same as the regular Appium UiAutomator2/XCUITest driver
    • WEBVIEW context manages the WebView contents over Appium UiAutomator2/XCUITest driver
  • (Recommended if possible) Appium UiAutomator2/XCUITest drivers must be sufficient to achieve automation if the application under test had semanticLabel properly. Then, the accessibility mechanism in each OS can expose elements for Appium through OS's accessibility features. Then, this driver is not necessary.
    • For example, Key does not work in the Appium UiAutomator2/XCUITest drivers, but can work in the Appium Flutter Driver
    • Flutter 3.19 may have identifier for SemanticsProperties (introduced by flutter/flutter#138331). It sets resource-id and accessibilityIdentifier for Android and iOS, then UiAutomator2/XCUITest drivers also can handle Key without this driver
      • "appium:disableIdLocatorAutocompletion": true would be necessary to make resource-id idea work without any package name prefix like Android compose.
      • e.g. flutter/flutter#17988 (comment)

Installation

Appium Flutter Driver version 1.0 and higher require Appium 2.0.

appium driver install --source=npm appium-flutter-driver

As a local:

appium driver install --source local /path/to/appium-flutter-driver/driver

Usage and requirement

If you are unfamiliar with running Appium tests, start with Quickstart Intro first.

Your Flutter application must be compiled in debug or profile mode. The dependency must have flutter_driver package like the below pubspec.yaml example with enableFlutterDriverExtension configuration in the main.dart.

# pubspec.yaml
dev_dependencies:
  flutter_driver:
    sdk: flutter

This snippet, taken from example directory, is a script written as an appium client with webdriverio, and assumes you have appium server (with appium-flutter-driver installed) running on the same host and default port (4723). For more info, see example's README.md

Note

This means this driver depends on flutter_driver.

Each client needs each finder module to handle Finders. Appium Flutter Driver communicates with the Dart VM directory in the FLUTTER context.

Note Expand deprecation policy to package:flutter_driver potentially means this driver will no longer work by the future Flutter updates. They do not cover all cases that can cover the flutter_driver, such as permission dialog handling, thus we're not sure when the time comes though.

Doctor

Since driver version 2.4.0 you can automate the validation for the most of the above requirements as well as various optional ones needed by driver extensions by running the appium driver doctor flutter server command. The check runs for Android for UIAutomator2 driver and iOS for XCUITest driver.

SKIP_ANDROID or SKIP_IOS environment variable helps to skip these checks.

# skip Android check
SKIP_ANDROID=1 appium driver doctor flutter
# skip iOS check
SKIP_IOS=1 appium driver doctor flutter

Note

  • Flutter context does not support page source
    • Please use getRenderTree command instead
  • You can send appium-xcuitest-driver/appium-uiautomator2-driver commands in NATIVE_APP context
  • scrollUntilVisible command : An expectation for checking that an element, known to be present on the widget tree, is visible. Using waitFor to wait element
  • scrollUntilTapable command : An expectation for checking an element is visible and enabled such that you can click it. Using waitTapable to wait element
  • driver.activateApp(appId) starts the given app and attaches to the observatory URL in the FLUTTER context. The method may raise an exception if no observaotry URL was found. The typical case is the appId is already running. Then, the driver will fail to find the observatory URL.
  • getClipboard and setClipboard depend on each NATIVE_APP context behavior
  • Launch via flutter:launchApp or 3rd party tool (via instrument service) and attach to the Dart VM for an iOS real device (profile build)
    1. Do not set app nor bundleId to start a session without launching apps
    2. Start the app process via 3rd party tools such as go-ios to start the app process with debug mode in the middle of the new session process in 1) the above.
      • Then, the appium flutter session establish the WebSocket and proceed the session
  • keyboard interaction may not work in Android because of flutter/flutter#15415 that is caused by flutter_driver

Capabilities

For the Appium Flutter Driver only

Capability Description Example Values
appium:retryBackoffTime The time wait for socket connection retry to get flutter session (default 3000ms) 500
appium:maxRetryCount The count for socket connection retry for get flutter session (default 10) 20
appium:observatoryWsUri The URL to attach to the Dart VM. The Appium Flutter Driver finds the WebSocket URL from the device log by default. You can skip the finding the URL process by specifying this capability. Then, this driver attempt to establish a WebSocket connection against the given WebSocket URL. Note that this capability expects the URL is ready for access by outside an appium session. This flutter driver does not do port-forwarding with this capability. You may need to coordinate the port-forwarding as well. 'ws://127.0.0.1:60992/aaaaaaaaaaa=/ws'
appium:isolateId The isolate id to attach to as the initial attempt. A session can change the isolate with flutter:setIsolateId command. The default behavior finds main isolate id and attaches it. isolates/2978358234363215, 2978358234363215
appium:skipPortForward Whether skip port forwarding from the flutter driver local to the device under test with observatoryWsUri capability. It helps you to manage the application under test, the observatory URL and the port forwarding configuration. The default is true. true, false
appium:remoteAdbHost The IP/hostname of the remote host ADB is running on. This capability only makes sense for Android platform. Providing it will implicitly override the host for the Observatory URL if the latter is determined from device logs. localhost be default 192.168.1.20
appium:adbPort The port number ADB server is running on. This capability only makes sense for Android platform. 5037 by default 9999
appium:forwardingPort The port number that will be used to forward the traffic from the device under test to locahost. Only applicable if skipPortForward is falsy. Not applicable if the test is executed on iOS Simulator. By default, it is the same as in the provided or autodetected Observatory URL. 9999

UIA2/XCUITest driver

Please check each driver's documentation

Context Management

Appium Flutter Driver allows you to send flutter_driver commands to the Dart VM in the FLUTTER context, but it does not support native Android/iOS since the Dart VM can handle in the Dart VM contents. NATIVE_APP context provides you to use the UIA2 driver for Android and the XCUITest driver for iOS automation. WEBVIEW_XXXX context helps WebView testing over the UIA2/XCUITest driver that is not available via the flutter_driver.

Thus, you need to switch proper contexts, FLUTTER, NATIVE_APP or WEBVIEW_XXXX, to automate a proper application target.

Example

# webdriverio
const wdio = require('webdriverio');
const assert = require('assert');
const { byValueKey } = require('appium-flutter-finder');

const osSpecificOps = process.env.APPIUM_OS === 'android' ? {
  'platformName': 'Android',
  'appium:deviceName': 'Pixel 2',
  'appium:app': __dirname +  '/../apps/app-free-debug.apk',
}: process.env.APPIUM_OS === 'ios' ? {
  'platformName': 'iOS',
  'appium:platformVersion': '12.2',
  'appium:deviceName': 'iPhone X',
  'appium:noReset': true,
  'appium:app': __dirname +  '/../apps/Runner.zip',
} : {};

const opts = {
  port: 4723,
  capabilities: {
    ...osSpecificOps,
    'appium:automationName': 'Flutter',
    'appium:retryBackoffTime': 500
  }
};

(async () => {
  const counterTextFinder = byValueKey('counter');
  const buttonFinder = byValueKey('increment');

  const driver = await wdio.remote(opts);

  if (process.env.APPIUM_OS === 'android') {
    await driver.switchContext('NATIVE_APP');
    await (await driver.$('~fab')).click();
    await driver.switchContext('FLUTTER');
  } else {
    console.log('Switching context to `NATIVE_APP` is currently only applicable to Android demo app.')
  }

  assert.strictEqual(await driver.getElementText(counterTextFinder), '0');

  await driver.elementClick(buttonFinder);
  await driver.touchAction({
    action: 'tap',
    element: { elementId: buttonFinder }
  });

  assert.strictEqual(await driver.getElementText(counterTextFinder), '2');

  driver.deleteSession();
})();

Please check example in this repository for more languages.

Several ways to start an application

You have a couple of methods to start the application under test by establishing the Dart VM connection as below:

  1. Start with app in the capabilities
    1. The most standard method. You may need to start a new session with app capability. Then, appium-flutter-driver will start the app, and establish a connection with the Dart VM immediately.
  2. Start with activate_app: for users who want to start the application under test in the middle of a session
    1. Start a session without app capability
    2. Install the application under test via driver.install_app or mobile:installApp command
    3. Activate the app via driver.activate_app or mobile:activateApp command
      • Then, appium-flutter-driver establish a connection with the Dart VM
  3. Launch the app outside the driver: for users who want to manage the application under test by yourselves
    1. Start a session without app capability
    2. Install the application under test via driver.install_app or mobile:installApp command etc
    3. Calls flutter:connectObservatoryWsUrl command to keep finding an observatory URL to the Dart VM
      • appium:retryBackoffTime and appium:maxRetryCount will control the duration to keep finding an observatory URL to the Dart VM
    4. (at the same time) Launch the application under test via outside the appium-flutter-driver
    5. Once flutter:connectObservatoryWsUrl identify the observatory URL, the command will establish a connection to the Dart VM
  4. Launch the app with flutter:launchApp for iOS and attach to the Dart VM: for users whom application under test do not print the observatory url via regular launch/activate app method
    1. Start a session without app capability
    2. Install the application under test via driver.install_app or mobile:installApp command etc
    3. Calls flutter:launchApp command to start an iOS app via instrument service
      • driver.execute_script 'flutter:launchApp', 'com.example.bundleId', {arguments: ['arg1'], environment: {ENV1: 'env'}} is example usage
      • This launching method is the same as the above 3rd party method, but does the same thing only via the appium flutter driver.

Please make sure the target app process stops before starting the target app with the above.

Changelog

Commands for NATIVE_APP/WEBVIEW context

Please check each driver's documentation

Commands for FLUTTER context

Legend:

Icon Description
integrated to CI
🆗 manual tested without CI
⚠️ available without manual tested
unavailable

Finders

Flutter Driver API Status WebDriver example
ancestor 🆗
bySemanticsLabel 🆗
byTooltip 🆗 byTooltip('Increment')
byType 🆗 byType('TextField')
byValueKey 🆗 byValueKey('counter')
descendant 🆗
pageBack 🆗 pageBack()
text 🆗 byText('foo')

Commands

The below WebDriver example is by webdriverio. flutter: prefix commands are mobile: command in appium for Android and iOS. Please replace them properly with your client.

Flutter API Status WebDriver example (JavaScript, webdriverio) Scope
FlutterDriver.connectedTo 🆗 wdio.remote(opts) Session
checkHealth 🆗 driver.execute('flutter:checkHealth') Session
clearTextbox 🆗 driver.elementClear(find.byType('TextField')) Session
clearTimeline 🆗 driver.execute('flutter:clearTimeline') Session
enterText 🆗 driver.elementSendKeys(find.byType('TextField'), 'I can enter text') (no focus required)
driver.elementClick(find.byType('TextField')); driver.execute('flutter:enterText', 'I can enter text') (focus required by tap/click first)
Session
forceGC 🆗 driver.execute('flutter:forceGC') Session
getBottomLeft 🆗 driver.execute('flutter:getBottomLeft', buttonFinder) Widget
getBottomRight 🆗 driver.execute('flutter:getBottomRight', buttonFinder) Widget
getCenter 🆗 driver.execute('flutter:getCenter', buttonFinder) Widget
getRenderObjectDiagnostics 🆗 driver.execute('flutter:getRenderObjectDiagnostics', counterTextFinder) Widget
getRenderTree 🆗 driver.execute('flutter: getRenderTree') Session
getSemanticsId 🆗 driver.execute('flutter:getSemanticsId', counterTextFinder) Widget
getText 🆗 driver.getElementText(counterTextFinder) Widget
getTopLeft 🆗 driver.execute('flutter:getTopLeft', buttonFinder) Widget
getTopRight 🆗 driver.execute('flutter:getTopRight', buttonFinder) Widget
getVmFlags Session
getWidgetDiagnostics Widget
requestData 🆗 driver.execute('flutter:requestData', json.dumps({"deepLink": "myapp://item/id1"})) Session
runUnsynchronized Session
setFrameSync 🆗 driver.execute('flutter:setFrameSync', bool , durationMilliseconds) Session
screenshot 🆗 driver.takeScreenshot() Session
screenshot 🆗 driver.saveScreenshot('a.png') Session
scroll 🆗 driver.execute('flutter:scroll', find.byType('ListView'), {dx: 50, dy: -100, durationMilliseconds: 200, frequency: 30}) Widget
scrollIntoView 🆗 driver.execute('flutter:scrollIntoView', find.byType('TextField'), {alignment: 0.1})
driver.execute('flutter:scrollIntoView', find.byType('TextField'), {alignment: 0.1, timeout: 30000})
Widget
scrollUntilVisible 🆗 driver.execute('flutter:scrollUntilVisible', find.byType('ListView'), {item:find.byType('TextField'), dxScroll: 90, dyScroll: -400});, driver.execute('flutter:scrollUntilVisible', find.byType('ListView'), {item:find.byType('TextField'), dxScroll: 90, dyScroll: -400, waitTimeoutMilliseconds: 20000}); Widget
scrollUntilTapable 🆗 driver.execute('flutter:scrollUntilTapable', find.byType('ListView'), {item:find.byType('TextField'), dxScroll: 90, dyScroll: -400});, driver.execute('flutter:scrollUntilTapable', find.byType('ListView'), {item:find.byType('TextField'), dxScroll: 90, dyScroll: -400, waitTimeoutMilliseconds: 20000}); Widget
setSemantics Session
setTextEntryEmulation 🆗 driver.execute('flutter:setTextEntryEmulation', false) Session
startTracing Session
stopTracingAndDownloadTimeline Session
tap 🆗 driver.elementClick(buttonFinder) Widget
tap 🆗 driver.touchAction({action: 'tap', element: {elementId: buttonFinder}}) Widget
tap 🆗 driver.execute('flutter:clickElement', buttonFinder, {timeout:5000}) Widget
traceAction Session
waitFor 🆗 driver.execute('flutter:waitFor', buttonFinder, 100) Widget
waitForAbsent 🆗 driver.execute('flutter:waitForAbsent', buttonFinder) Widget
waitForTappable 🆗 driver.execute('flutter:waitForTappable', buttonFinder) Widget
waitUntilNoTransientCallbacks Widget
- 🆗 driver.execute('flutter:getVMInfo') System
- 🆗 driver.execute('flutter:setIsolateId', 'isolates/2978358234363215') System
- 🆗 driver.execute('flutter:getIsolate', 'isolates/2978358234363215') or driver.execute('flutter:getIsolate') System
🆗 driver.execute('flutter:longTap', find.byValueKey('increment'), {durationMilliseconds: 10000, frequency: 30}) Widget
🆗 driver.execute('flutter:waitForFirstFrame') Widget
- 🆗 (Ruby) driver.execute_script 'flutter:connectObservatoryWsUrl' Flutter Driver
- 🆗 (Ruby) driver.execute_script 'flutter:launchApp', 'bundleId', {arguments: ['arg1'], environment: {ENV1: 'env'}} Flutter Driver

NOTE flutter:launchApp launches an app via instrument service. mobile:activateApp and driver.activate_app are via XCTest API. They are a bit different.

isolate handling

Change the flutter engine attache to

  1. Get available isolate ids
    • id key in the value of isolates by flutter:getVMInfo
  2. Set the id via setIsolateId
# ruby
info = driver.execute_script 'flutter:getVMInfo'
# Change the target engine to "info['isolates'][0]['id']"
driver.execute_script 'flutter:setIsolateId', info['isolates'][0]['id']

Check current isolate, or a particular isolate

  1. Get available isolates
    • driver.execute('flutter:getVMInfo').isolates (JS)
  2. Get a particular isolate or current isolate
    • Current isolate: driver.execute('flutter:getIsolate') (JS)
    • Particular isolate: driver.execute('flutter:getIsolate', 'isolates/2978358234363215') (JS)

Commands across contexts

These Appium commands can work across context

  • deleteSession
  • setContext
  • getCurrentContext
  • getContexts
  • activateApp('appId')/mobile:activateApp
    • mobile:activateApp has skipAttachObservatoryUrl key to not try to attach to an observatory url. e.g. driver.execute_script 'mobile:activateApp', {skipAttachObservatoryUrl: true, appId: 'com.android.chrome'}
  • terminateApp('appId')/mobile:terminateApp
  • installApp(appPath, options)
  • getClipboard
  • setClipboard

Troubleshooting

TODO?

Release appium-flutter-driver

$ cd driver
$ sh release.sh
$ npm version <major|minor|patch>
# update changelog
$ git commit -am 'chore: bump version'
$ git tag <version number> # e.g. git tag v0.0.32
$ git push origin v0.0.32
$ git push origin main
$ npm publish

Java implementation

https://github.com/ashwithpoojary98/javaflutterfinder
https://github.com/5v1988/appium-flutter-client

appium-flutter-driver's People

Contributors

5v1988 avatar abhishek01039 avatar aris-payfazz avatar ashwithpoojary98 avatar baovu2512 avatar depapp avatar dependabot[bot] avatar diemol avatar felix-barz-brickmakers avatar funckytown1 avatar geektoolgroup avatar greenkeeper[bot] avatar hai-ha avatar hex0cter avatar ikharoub avatar jlipps avatar jochen-testingbot avatar kazucocoa avatar mateuszwojtczak avatar mwakizaka avatar mykola-mokhnach avatar prolificcoder avatar savy-91 avatar shibupanda avatar sunnyyukaige avatar thiagoloureiro avatar thuonglai avatar truongsinh avatar williampearl avatar yanivamram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

appium-flutter-driver's Issues

Unable to clear a Textfield with Flutterfinder

Hi
I am trying to clear several text fields with Appium Flutter but there is no available option.

Except to possibly send a null value with sendkeys please can this be targeted in a fix.

[IOS]Cannot interactive element with app native embedded flutter

My app be wrote in native and some page be embedded flutter, when go to flutter page i cannot interactive with element byValueKey

Environment :

  • IOS xcuit
  • Simulator : 13.3
  • Appium 1.16

Code:
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST);
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "13.3");
caps.setCapability(MobileCapabilityType.UDID, "03249794-5B26-4F67-88B4-AEE03BE4CC8D");
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iphone");
caps.setCapability("bootstrapPath", ConfigData.bootstrapPath);
caps.setCapability("agentPath", ConfigData.agentPath);
caps.setCapability("bundleId", GlobalData.IOS_Sendo_bundleId);
caps.setCapability("unicodekeyboard", true);
caps.setCapability("useFirstMatch", true);
driver = new IOSDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);
.
(Do some action of native app)
.
.
Sleep(10000);
FlutterFinder find = new FlutterFinder((RemoteWebDriver) driver);
MobileElement addressButton = find.byValueKey("action_payment_method");
addressButton.click();

Error:
Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: An element command failed because the referenced element is no longer attached to the DOM
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'nhungs-Mac-mini.local', ip: '192.168.120.65', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.6', java.version: '1.8.0_221'
Driver info: io.appium.java_client.ios.IOSDriver
Capabilities {agentPath: /usr/local/lib/node_modules..., automationName: XCuiTest, bootstrapPath: /usr/local/lib/node_modules..., browserName: , bundleId: com.sendo.sendobuyer, databaseEnabled: false, deviceName: iphone, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: false, platform: MAC, platformName: iOS, platformVersion: 13.3, takesScreenshot: true, udid: 03249794-5B26-4F67-88B4-AEE..., unicodekeyboard: true, useFirstMatch: true, webStorageEnabled: false}
Session ID: fba4721a-361b-42af-a4b0-4e30f90e917f
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:276)
at io.appium.java_client.DefaultGenericMobileElement.execute(DefaultGenericMobileElement.java:45)
at io.appium.java_client.MobileElement.execute(MobileElement.java:1)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)
at test1.main(test1.java:64)

wait.untill is not working in ios-native elements after driver.context("NATIVE_APP");

platform:-
appium: 1.16.0
finder: 0.0.4

issue:-
` LoginPage loginPage = new LoginPage(driver);

    loginPage.login();

    HomePage homePage= new HomePage(driver);

    homePage.navigateToUpload();

    driver.context("NATIVE_APP");

    ComposeFileUploadScreen composeFileUploadScreen = new ComposeFileUploadScreen(driver);
    wait.until(ExpectedConditions.elementToBeClickable(composeFileUploadScreen.getGifIcon()));

  //  Thread.sleep(5000);

    composeFileUploadScreen.getGifIcon().click();

    System.out.println("getting test"+composeFileUploadScreen.getGifIcon().getText());

`

the test failing at wait.until line.

the appium log is:-https://gist.github.com/pradarttana-sharechat/d3062a199466c376857ca384af331261

if I am removing the wait.until line and give a manual wait using Thread.sleep(5000); i am able to click on that element

any help?

An in-range update of appium-base-driver is breaking the build 🚨

The dependency appium-base-driver was updated from 3.20.2 to 3.21.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

appium-base-driver is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 2 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Connecting to Dart Observatory: ws://127.0.0.1:52872/EIE89oo878s=/ws

[FlutterDriver] Attempt #1
[FlutterDriver] Connecting to Dart Observatory: ws://127.0.0.1:52872/EIE89oo878s=/ws
[FlutterDriver] Error: connect ECONNREFUSED 127.0.0.1:52872
[FlutterDriver] at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1056:14)
[FlutterDriver] Check Dart Observatory URI ws://127.0.0.1:52872/EIE89oo878s=/ws
[FlutterDriver] Waiting 300 seconds before trying...

please help me ~ thanks

How should I set the automationName when I use mixed native android and flutter code

My app uses the flutter_boost framework, so the app has both native andriod code and flutter code. When I set the automationName to "Flutter", the flutter code can be tested. When I don't set the automationName, the native android code can be tested. How should I set the automationName in order to test the native android code and flutter code together.

Could not find flutter driver

org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: Could not find a driver for automationName 'Flutter' and platformName 'iOS'. Please check your desired capabilities. (WARNING: The server did not provide any stacktrace information)

Need an Application to test recently added action

@truongsinh
Do we have any application where we can test recently added features like scroll, enterText and all?
One more question I have. suppose I don't have app source code or if I am concentrating only black-box testing then is there any way to retrieve locators like "byValueKey('increment')" etc. So that we can start implementing those in Appium desktop.

Thanks.

driver.context('FLUTTER') can't work

hi, I use uiautomator2 as the automationName when I start my app. and I use driver.context('FLUTTER') to switch the driver. there are some wrongs.

org.openqa.selenium.remote.SessionNotFoundException: A session is either terminated or not started (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds

Getting issue "UnhandledPromiseRejectionWarning: Error: "ext.flutter.driver" is not found in "extensionRPCs

Hi @truongsinh
I have tried to execute your java example code after installing appium-flutter-driver as mentioned in link and setting up the maven dependencies by keeping 'repository' folder in my local machine. However, I am getting issue "UnhandledPromiseRejectionWarning: Error: "ext.flutter.driver" is not found in "extensionRPCs"" after launching the android app on real device.

You can see the complete log below:
https://gist.github.com/ahashmi24/1d77c19f6dfba4648f8202a169c50bda

Error in transferring metadata

POM file -


4.0.0
com.saucelabs
sauce_appium_junit
0.0.1-SNAPSHOT
sauce_appium_junit
Sample Appium tests using JUnit


junit
junit
4.12
test


io.appium
java-client
5.0.0-BETA8


com.googlecode.json-simple
json-simple
1.1
test


commons-lang
commons-lang
2.6
test



com.saucelabs
sauce_junit
2.1.23
test


com.google.code.gson
gson
2.2.4

	<!-- <dependency>
		<groupId>io.appium</groupId>
		<artifactId>java-client</artifactId>
		<version>4.1.2</version>
	</dependency> -->
	<dependency>
		<groupId>pro.truongsinh</groupId>
		<artifactId>appium-flutter-finder</artifactId>
		<version>0.0.4</version>
	</dependency>

</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-surefire-plugin</artifactId>
			
		</plugin>
		<plugin>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.3.2</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
		</plugin>
	</plugins>
</build>
<repositories>
	<repository>
		<id>saucelabs-repository</id>
		<url>https://repository-saucelabs.forge.cloudbees.com/release</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
	<repository>
		<id>local-maven-repo</id>
		<url>file:///Users/truongsinh/Dev/flutter/appium-flutter-driver/finder/kotlin/build/repository</url>
	</repository>
	<repository>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
		<id>central</id>
		<name>bintray</name>
		<url>http://jcenter.bintray.com</url>
	</repository>
</repositories>

Error response -
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building sauce_appium_junit 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.apache.httpcomponents:httpcore:jar:4.4.6 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO] Downloading: https://repository-saucelabs.forge.cloudbees.com/release/org/seleniumhq/selenium/selenium-api/maven-metadata.xml
[WARNING] Could not transfer metadata org.seleniumhq.selenium:selenium-api/maven-metadata.xml from/to saucelabs-repository (https://repository-saucelabs.forge.cloudbees.com/release): repository-saucelabs.forge.cloudbees.com
[INFO] Downloading: https://repository-saucelabs.forge.cloudbees.com/release/org/seleniumhq/selenium/selenium-support/maven-metadata.xml
[WARNING] Could not transfer metadata org.seleniumhq.selenium:selenium-support/maven-metadata.xml from/to saucelabs-repository (https://repository-saucelabs.forge.cloudbees.com/release): repository-saucelabs.forge.cloudbees.com
[INFO] Downloading: https://repository-saucelabs.forge.cloudbees.com/release/pro/truongsinh/appium-flutter-finder/0.0.4/appium-flutter-finder-0.0.4.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.975 s
[INFO] Finished at: 2019-12-09T12:35:58+04:00
[INFO] Final Memory: 12M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project sauce_appium_junit: Could not resolve dependencies for project com.saucelabs:sauce_appium_junit:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at pro.truongsinh:appium-flutter-finder:jar:0.0.4: Failed to read artifact descriptor for pro.truongsinh:appium-flutter-finder:jar:0.0.4: Could not transfer artifact pro.truongsinh:appium-flutter-finder:pom:0.0.4 from/to saucelabs-repository (https://repository-saucelabs.forge.cloudbees.com/release): repository-saucelabs.forge.cloudbees.com: Unknown host repository-saucelabs.forge.cloudbees.com -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

URL - https://repository-saucelabs.forge.cloudbees.com/release - is not found
URL - file:///Users/truongsinh/Dev/flutter/appium-flutter-driver/finder/kotlin/build/repository - do we need to change this in my machine?

An in-range update of a dependency is breaking the build 🚨

The dependency appium-xcuitest-driver was updated from 2.125.0 to 2.126.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

appium-xcuitest-driver is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Commits

The new version differs by 10 commits.

  • 0d5323c 2.126.0
  • ba4e79f fix: catching error when no available web pages (#1031)
  • a20c098 Stop using the vulnerable unzip dev dependency (#1029)
  • fbe7d23 Fix the behaviour of autoLaunch capability (#1026)
  • e80630a fix: use new target manipulation in appium-remote-debugger (#1028)
  • 4421c0b chore: add pushing and installation profiling logic (#1027)
  • 211d17d feat: add activeAppInfo (#1025)
  • fe9f6e2 refactor: Remove idevicescreenshot since don't need it (#1022)
  • a5d996b Fix handling of attribute when hiding keyboard (#1024)
  • 8b44fcc feat: remove iwdp related capabilities, objects (#1023)

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Webview still work in progress?

I noticed that swtiching views are still on the todo list as not being done. Is there any timeline as to when these features may become available. I have a flutter app i'm trying to write tests for but the login page uses keycloak and therefore navigates into a webview to navigate to a website, login and retrieve the token. I was hoping to be able to automate the flow but in order to do so i need to be able to switch views. Is there any way i can use appium commands to switch the view or would i have to wait until its developed under this project?

"ext.flutter.driver" is not found in "extensionRPCs"

[FlutterDriver] /Users/xxxx/Library/Android/sdk/platform-tools/adb forward tcp:42559 tcp:42559
[FlutterDriver] Attempt #1
[FlutterDriver] Connecting to Dart Observatory: ws://127.0.0.1:42559/TZyCumpgCHs=/ws
[FlutterDriver] Connected to ws://127.0.0.1:42559/TZyCumpgCHs=/ws
[FlutterDriver] "ext.flutter.driver" is not found in "extensionRPCs" ["ext.ui.window.scheduleFrame"]
[FlutterDriver] Cannot get Dart Isolate
[FlutterDriver] Error: "ext.flutter.driver" is not found in "extensionRPCs" ["ext.ui.window.scheduleFrame"]
[FlutterDriver]     at Object.wrappedLogger.errorAndThrow (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/appium-support/lib/logging.js:74:35)
[FlutterDriver]     at Client.onOpenListener (/usr/local/lib/node_modules/appium-flutter-driver/lib/sessions/observatory.ts:91:17)
[FlutterDriver]     at runMicrotasks (<anonymous>)
[FlutterDriver]     at processTicksAndRejections (internal/process/task_queues.js:93:5)
[FlutterDriver] Waiting 300 seconds before trying...
(node:35764) UnhandledPromiseRejectionWarning: Error: "ext.flutter.driver" is not found in "extensionRPCs" ["ext.ui.window.scheduleFrame"]
    at Object.wrappedLogger.errorAndThrow (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/appium-support/lib/logging.js:74:35)
    at Client.onOpenListener (/usr/local/lib/node_modules/appium-flutter-driver/lib/sessions/observatory.ts:91:17)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
(node:35764) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 21)
[FlutterDriver] Attempt #2
[FlutterDriver] Connecting to Dart Observatory: ws://127.0.0.1:42559/TZyCumpgCHs=/ws
[FlutterDriver] Connected to ws://127.0.0.1:42559/TZyCumpgCHs=/ws
[FlutterDriver] "ext.flutter.driver" is not found in "extensionRPCs" ["ext.ui.window.scheduleFrame","ext.flutter.reassemble","ext.flutter.exit","ext.flutter.saveCompilationTrace","ext.flutter.platformOverride","ext.flutter.evict","ext.flutter.timeDilation","ext.flutter.debugPaint","ext.flutter.debugPaintBaselinesEnabled","ext.flutter.repaintRainbow","ext.flutter.debugCheckElevationsEnabled","ext.flutter.debugDumpLayerTree","ext.flutter.debugDumpRenderTree","ext.flutter.debugDumpSemanticsTreeInTraversalOrder","ext.flutter.debugDumpSemanticsTreeInInverseHitTestOrder","ext.flutter.debugDumpApp","ext.flutter.showPerformanceOverlay","ext.flutter.didSendFirstFrameEvent","ext.flutter.didSendFirstFrameRasterizedEvent","ext.flutter.profileWidgetBuilds","ext.flutter.debugAllowBanner","ext.flutter.debugWidgetInspector","ext.flutter.inspector.structuredErrors","ext.flutter.inspector.show","ext.flutter.inspector.trackRebuildDirtyWidgets","ext.flutter.inspector.trackRepaintWidgets","ext.flutter.inspector.disposeAllGroups","ext.flutter.inspector.disposeGroup","ext.flutter.inspector.isWidgetTreeReady","ext.flutter.inspector.disposeId","ext.flutter.inspector.setPubRootDirectories","ext.flutter.inspector.setSelectionById","ext.flutter.inspector.getParentChain","ext.flutter.inspector.getProperties","ext.flutter.inspector.getChildren","ext.flutter.inspector.getChildrenSummaryTree","ext.flutter.inspector.getChildrenDetailsSubtree","ext.flutter.inspector.getRootWidget","ext.flutter.inspector.getRootRenderObject","ext.flutter.inspector.getRootWidgetSummaryTree","ext.flutter.inspector.getDetailsSubtree","ext.flutter.inspector.getSelectedRenderObject","ext.flutter.inspector.getSelectedWidget","ext.flutter.inspector.getSelectedSummaryWidget","ext.flutter.inspector.isWidgetCreationTracked","ext.flutter.inspector.screenshot","ext.dart.io.getOpenFiles","ext.dart.io.getFileByID","ext.dart.io.getOpenSockets","ext.dart.io.getSocketByID"]
[FlutterDriver] Cannot get Dart Isolate
[FlutterDriver] Error: "ext.flutter.driver" is not found in "extensionRPCs" ["ext.ui.window.scheduleFrame","ext.flutter.reassemble","ext.flutter.exit","ext.flutter.saveCompilationTrace","ext.flutter.platformOverride","ext.flutter.evict","ext.flutter.timeDilation","ext.flutter.debugPaint","ext.flutter.debugPaintBaselinesEnabled","ext.flutter.repaintRainbow","ext.flutter.debugCheckElevationsEnabled","ext.flutter.debugDumpLayerTree","ext.flutter.debugDumpRenderTree","ext.flutter.debugDumpSemanticsTreeInTraversalOrder","ext.flutter.debugDumpSemanticsTreeInInverseHitTestOrder","ext.flutter.debugDumpApp","ext.flutter.showPerformanceOverlay","ext.flutter.didSendFirstFrameEvent","ext.flutter.didSendFirstFrameRasterizedEvent","ext.flutter.profileWidgetBuilds","ext.flutter.debugAllowBanner","ext.flutter.debugWidgetInspector","ext.flutter.inspector.structuredErrors","ext.flutter.inspector.show","ext.flutter.inspector.trackRebuildDirtyWidgets","ext.flutter.inspector.trackRepaintWidgets","ext.flutter.inspector.disposeAllGroups","ext.flutter.inspector.disposeGroup","ext.flutter.inspector.isWidgetTreeReady","ext.flutter.inspector.disposeId","ext.flutter.inspector.setPubRootDirectories","ext.flutter.inspector.setSelectionById","ext.flutter.inspector.getParentChain","ext.flutter.inspector.getProperties","ext.flutter.inspector.getChildren","ext.flutter.inspector.getChildrenSummaryTree","ext.flutter.inspector.getChildrenDetailsSubtree","ext.flutter.inspector.getRootWidget","ext.flutter.inspector.getRootRenderObject","ext.flutter.inspector.getRootWidgetSummaryTree","ext.flutter.inspector.getDetailsSubtree","ext.flutter.inspector.getSelectedRenderObject","ext.flutter.inspector.getSelectedWidget","ext.flutter.inspector.getSelectedSummaryWidget","ext.flutter.inspector.isWidgetCreationTracked","ext.flutter.inspector.screenshot","ext.dart.io.getOpenFiles","ext.dart.io.getFileByID","ext.dart.io.getOpenSockets","ext.dart.io.getSocketByID"]
[FlutterDriver]     at Object.wrappedLogger.errorAndThrow (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/appium-support/lib/logging.js:74:35)
[FlutterDriver]     at Client.onOpenListener (/usr/local/lib/node_modules/appium-flutter-driver/lib/sessions/observatory.ts:91:17)
[FlutterDriver]     at runMicrotasks (<anonymous>)
[FlutterDriver]     at processTicksAndRejections (internal/process/task_queues.js:93:5)

running tests on native elements in flutter appium driver.

Appium version: 1.15.0-beta.0
Device: iOS Simulator
App: Flutter app included plugin (enableFlutterDriverExtension())
language: java

the app consist of some screen which are "flutter" say (login) and some screens are native. say "camera"
I am able to run the tests using appium flutter driver on the flutter screen.
once I am on the native screen I am switching the context

driver.context("NATIVE_APP");

then using normal appium script, I am trying to do actions on native elements.

public MobileElement <element_name> = (MobileElement) driver.findElement(By.xpath("<xpath_of_element>"));

wait.until(ExpectedConditions.visibilityOf(element_name));
element_name.click();

while running the script
it is throwing
java.lang.NullPointerException on populating the mobile element on this line..

public MobileElement <element_name> = (MobileElement) driver.findElement(By.xpath("<xpath_of_element>"));

any help regading this.
@truongsinh @shibupanda

Need Help to create kotlin jar to use that in java

Hi @truongsinh could you please help me to build a jar as I tried and it leads to below error.
java -jar appium-flutter-finder-0.0.4.jar
no main manifest attribute, in appium-flutter-finder-0.0.4.jar

If possible please help me with the jar link.
That would really help for java user.

Publish with updated dependencies?

The dependencies are updated but the published version has older ones still. It would be nice to be more easily able to test with the latest working versions of things.

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

Error While Running in ios real Device

@truongsinh

[BaseDriver] Unzipped local app to '/var/folders/2g/drs1ttp963lc1g02ybpsq2sc0000gn/T/20191029-55614-1dqwcxe.0lngg/Payload/Runner.app'
[XCUITest] TypeError [ERR_INVALID_CALLBACK]: Callback must be a function
[XCUITest]     at makeStatsCallback (fs.js:161:11)
[XCUITest]     at Object.fs.stat (fs.js:896:14)
[XCUITest]     at Object.stat (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/util.js:16:23)
[XCUITest]     at Object.ret [as stat] (eval at makeNodePromisifiedEval (/usr/local/lib/node_modules/appium/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:15:23)
[XCUITest]     at _bluebird.default.map (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/appium-support/lib/util.js:260:72)
[XCUITest]     at tryCatcher (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/util.js:16:23)
[XCUITest]     at MappingPromiseArray._promiseFulfilled (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/map.js:68:38)
[XCUITest]     at MappingPromiseArray.PromiseArray._iterate (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/promise_array.js:115:31)
[XCUITest]     at MappingPromiseArray.init (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/promise_array.js:79:10)
[XCUITest]     at MappingPromiseArray._asyncInit (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/map.js:37:10)
[XCUITest]     at _drainQueueStep (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/async.js:97:12)
[XCUITest]     at _drainQueue (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/async.js:86:9)
[XCUITest]     at Async._drainQueues (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/async.js:102:5)
[XCUITest]     at Immediate.Async.drainQueues [as _onImmediate] (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/bluebird/js/release/async.js:15:14)
[XCUITest]     at runCallback (timers.js:696:18)
[XCUITest]     at tryOnImmediate (timers.js:667:5)
[XCUITest]     at processImmediate (timers.js:649:5)
[DevCon Factory] Releasing connections for c85d7cb996a05d26abb89c93df86d62af5486f1f device on any port number
[DevCon Factory] No cached connections have been found

Scripts runs on Android but not iOS

When I run the script on Android, it completely executes. But the same script unable to click on some elements on iOS. Am I missing anything here?
I am able to launch and click couple of things in iOS but not all, could someone please help me out.

I see this log on the terminal, after this does not continues -
Calling AppiumDriver.execute() with args: ["flutter:waitFor",[{"ELEMENT":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoiYWRkVG9CYWcifQ","element-6066-11e4-a52e-4f735466cecf":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoiYWRkVG9CYWcifQ"}],"146d4bc6-b04f-4b2a-8161-6fdb5039c612"]
[debug] [FlutterDriver] Executing Flutter driver command 'execute'

Thank you

An in-range update of @types/node is breaking the build 🚨

The devDependency @types/node was updated from 12.7.0 to 12.7.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

@types/node is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Scrolling doesn't work for the Text keyValue

Appium version : v1.17.0-beta.1

Appium logs:
https://gist.github.com/ahashmi24/62e7638996d5da6b0d6bca02a5ae7f89

Using below code snippet to perform scrolling:
driver.executeScript("flutter:scrollUntilVisible", find.byKey("uniqueListView"), new HashMap<String, Object>() {{
put("item", find.byKey("uniqueKeyForVisibleTextOnScreen"));
put("dxScroll", 90);
put("dyScroll", -400);
}});

driver.executeScript("flutter:scroll", find.byKey("uniqueListView"), new HashMap<String, Object>() {{
  put("item", find.byKey("uniqueKeyForVisibleTextOnScreen"));
  put("dx", 50);
  put("dy", 100);
  put("durationMilliseconds", 200);
  put("frequency", 30);
}});

driver.executeScript("flutter:scrollIntoView", find.byKey("uniqueListView"), new HashMap<String, Object>() {{
  put("alignment", 0.1);
}});

Using key for ListView and visible text. I also tried with the different offset (dx & dy) to perform vertical scrolling.

Note: It is working if I use the key of any button in place of Text.

Unable to connect with Dart Observatory when doing automation on real iOS device

Failing to make a connection with Dart Observatory due to error TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14)

Note: I am able to run my test on the iOS simulator by using same setup and on the same environment.

Environment

Appium verison: 1.16.0
iOS verison: 13.1.2
xcode version: 11.1

Link to Appium logs

https://gist.github.com/ahashmi24/bf77b21e30ba2e509e421e4442883842

Using the below capabilities:

capabilities.setCapability(IOSMobileCapabilityType.BUNDLE_ID, "com.example.datePicket");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Flutter");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");
capabilities.setCapability(MobileCapabilityType.ORIENTATION, "PORTRAIT");
// capabilities.setCapability("connectHardwareKeyboard", false);
capabilities.setCapability(MobileCapabilityType.UDID, "*********************");
capabilities.setCapability("includeSafariInWebviews", true);
capabilities.setCapability("platformVersion", "13.1.2");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 8 plus");
capabilities.setCapability("noReset", true);
driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

An in-range update of appium-uiautomator2-driver is breaking the build 🚨

The dependency appium-uiautomator2-driver was updated from 1.35.0 to 1.35.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

appium-uiautomator2-driver is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 3 commits.

  • 09ad353 1.35.1
  • 1933c45 fix: Update session initialisation arguments (#334)
  • 39fe934 fix(package): update yargs to version 14.0.0 (#333)

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Proposal : Flutter Inspector Integration

Description:

There is no such tool available now that can retrieve flutter finders.
Need to build an inspector it may integrate with Appium Desktop or Maybe an independent tool which can inspect element for a flutter application.

Problem:

Now user requires the source code to be there in IntelliJ editor to inspect the element.
In some of the cases it quite difficult to get the complete source code and there they stuck.

scroll in java is not working.

as per my
flutter driver

await driver.scroll(<SerializableFinder>, 0, 400, Duration(milliseconds: 500));

is working

but the same in appium flutter driver

driver.executeScript("flutter:scroll", find.byValueKey("key"), new HashMap<String, Object>() {{ put("dxScroll", 0); put("dyScroll", -400); }});

is not working. the exception I am getting is

`[debug] [FlutterDriver] Executing Flutter driver command 'execute'
[debug] [FlutterDriver] >>> {"command":"waitFor","finderType":"ByValueKey","keyValueType":"String","keyValueString":"post_card_list"}
[debug] [FlutterDriver] <<< {"isError":false,"response":{},"type":"_extensionType","method":"ext.flutter.driver"} | previous command waitFor
[debug] [MJSONWP (33745d21)] Responding to client with driver.execute() result: {}
[HTTP] <-- POST /wd/hub/session/33745d21-e550-493b-a2e1-ccf90c9f25f0/execute 200 10 ms - 74
[HTTP]
[HTTP] --> POST /wd/hub/session/33745d21-e550-493b-a2e1-ccf90c9f25f0/execute
[HTTP] {"script":"flutter:scroll","args":[{"ELEMENT":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoicG9zdF9jYXJkX2xpc3QifQ","element-6066-11e4-a52e-4f735466cecf":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoicG9zdF9jYXJkX2xpc3QifQ"},{"dyScroll":-400,"dxScroll":0}]}
[debug] [MJSONWP (33745d21)] Calling AppiumDriver.execute() with args: ["flutter:scroll",[{"ELEMENT":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoicG9zdF9jYXJkX2xpc3QifQ","element-6066-11e4-a52e-4f735466cecf":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoicG9zdF9jYXJkX2xpc3QifQ"},{"dyScroll":-400,"dxScroll":0}],"33745d21-e550-493b-a2e1-ccf90c9f25f0"]
[debug] [FlutterDriver] Executing Flutter driver command 'execute'
[debug] [MJSONWP (33745d21)] Encountered internal error running command: Error: [object Object] is not a valid options
[debug] [MJSONWP (33745d21)] at Object.exports.scroll (/usr/local/lib/node_modules/appium-flutter-driver/lib/commands/execute/scroll.ts:26:11)
[debug] [MJSONWP (33745d21)] at FlutterDriver.exports.execute (/usr/local/lib/node_modules/appium-flutter-driver/lib/commands/execute.ts:47:14)
[debug] [MJSONWP (33745d21)] at commandExecutor (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/appium-base-driver/lib/basedriver/driver.js:328:23)
[debug] [MJSONWP (33745d21)] at /usr/local/lib/node_modules/appium-flutter-driver/node_modules/async-lock/lib/index.js:125:12
[debug] [MJSONWP (33745d21)] at AsyncLock._promiseTry (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/async-lock/lib/index.js:249:31)
[debug] [MJSONWP (33745d21)] at exec (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/async-lock/lib/index.js:124:9)
[debug] [MJSONWP (33745d21)] at AsyncLock.acquire (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/async-lock/lib/index.js:140:3)
[debug] [MJSONWP (33745d21)] at FlutterDriver.executeCommand (/usr/local/lib/node_modules/appium-flutter-driver/node_modules/appium-base-driver/lib/basedriver/driver.js:330:39)
[debug] [MJSONWP (33745d21)] at FlutterDriver.executeCommand (/usr/local/lib/node_modules/appium-flutter-driver/lib/driver.ts:122:22)
[debug] [MJSONWP (33745d21)] at AppiumDriver.executeCommand (/usr/local/lib/node_modules/appium/lib/appium.js:510:36)
[debug] [MJSONWP (33745d21)] at process._tickCallback (internal/process/next_tick.js:68:7)
[HTTP] <-- POST /wd/hub/session/33745d21-e550-493b-a2e1-ccf90c9f25f0/execute 500 14 ms - 209
[HTTP]
[HTTP] --> DELETE /wd/hub/session/33745d21-e550-493b-a2e1-ccf90c9f25f0
[HTTP] {}
[debug] [MJSONWP (33745d21)] Calling AppiumDriver.deleteSession() with args: ["33745d21-e550-493b-a2e1-ccf90c9f25f0"]
[debug] [BaseDriver] Event 'quitSessionRequested' logged at 1580903221233 (17:17:01 GMT+0530 (India Standard Time))

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: [object Object] is not a valid options (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'

`
appium : 1.15.0-beta.0
finder: 0.0.4

Python using flutter driver

Hi:
Referenced with the example code under python demo dir, it can't work well.
I have some questions:
(1) Is the flutter-appium-finder newest code?
(2) Can this package work well with python3.7?

Something wrong with base64 encode in _serialize with python3.7
def _serialize(self, finder_dict):
return base64.b64encode(json.dumps(finder_dict))

Getting 'No gulpfile' found exception when installing appium dependencies.

Steps:
Installing patch version from: npm i -g appium-flutter-driver https://github.com/truongsinh/appium.git#patch-1
Go to appium folder: hitting command npm install

Getting below issue:

Ahmers-MacBook-Pro:appium vikasvipul$ npm install
npm WARN deprecated [email protected]: CircularJSON is in maintenance only, flatted is its successor.
npm WARN deprecated [email protected]: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.

[email protected] install /usr/local/lib/node_modules/appium/node_modules/chokidar/node_modules/fsevents
node-gyp rebuild

SOLINK_MODULE(target) Release/.node
CXX(target) Release/obj.target/fse/fsevents.o
SOLINK_MODULE(target) Release/fse.node

[email protected] install /usr/local/lib/node_modules/appium/node_modules/pre-commit
node install.js

[email protected] install /usr/local/lib/node_modules/appium/node_modules/wd
node scripts/build-browser-scripts

[email protected] postinstall /usr/local/lib/node_modules/appium/node_modules/babel-runtime/node_modules/core-js
node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:

https://opencollective.com/core-js
https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

[email protected] postinstall /usr/local/lib/node_modules/appium/node_modules/spawn-sync
node postinstall

[email protected] prepare /usr/local/lib/node_modules/appium
gulp prepublish

[20:05:10] No gulpfile found
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] prepare: gulp prepublish
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] prepare script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/vikasvipul/.npm/_logs/2020-02-10T14_35_10_885Z-debug.log

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet.
We recommend using:

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.

Flutter commands doesn't work if perform closeApp() or resetApp() and try to launchApp() on same session.

  • Appium version: 1.16.0
  • Device: iOS Simulator
  • App: Flutter app included plugin (enableFlutterDriverExtension())

Appium Logs:

Last login: Tue Jan 21 14:05:20 on ttys000
Ahmers-MacBook-Pro:~ vikasvipul$ appium
[Appium] Welcome to Appium v1.16.0
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
[HTTP] --> POST /wd/hub/session
[HTTP] {"desiredCapabilities":{"app":"/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app","includeSafariInWebviews":true,"orientation":"PORTRAIT","noReset":true,"platformVersion":"13.1","automationName":"Flutter","bundleId":"com.example.datePicket","platformName":"iOS","udid":"A59562F8-1EF1-435E-8C5E-4B829ABA6F37","deviceName":"iPhone 11 Pro Max","wdaLocalPort":"8101"},"capabilities":{"alwaysMatch":{"appium:app":"/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app","appium:automationName":"Flutter","appium:bundleId":"com.example.datePicket","appium:deviceName":"iPhone 11 Pro Max","includeSafariInWebviews":true,"appium:noReset":true,"appium:orientation":"PORTRAIT","platformName":"ios","appium:platformVersion":"13.1","appium:udid":"A59562F8-1EF1-435E-8C5E-4B829ABA6F37","appium:wdaLocalPort":"8101"},"firstMatch":[{}]}}
[debug] [W3C] Calling AppiumDriver.createSession() with args: [{"app":"/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app","includeSafariInWebviews":true,"orientation":"PORTRAIT","noReset":true,"platformVersion":"13.1","automationName":"Flutter","bundleId":"com.example.datePicket","platformName":"iOS","udid":"A59562F8-1EF1-435E-8C5E-4B829ABA6F37","deviceName":"iPhone 11 Pro Max","wdaLocalPort":"8101"},null,{"alwaysMatch":{"appium:app":"/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app","appium:automationName":"Flutter","appium:bundleId":"com.example.datePicket","appium:deviceName":"iPhone 11 Pro Max","includeSafariInWebviews":true,"appium:noReset":true,"appium:orientation":"PORTRAIT","platformName":"ios","appium:platformVersion":"13.1","appium:udid":"A59562F8-1EF1-435E-8C5E-4B829ABA6F37","appium:wdaLocalPort":"8101"},"firstMatch":[{}]}]
[debug] [BaseDriver] Event 'newSessionRequested' logged at 1579596067297 (14:11:07 GMT+0530 (India Standard Time))
[BaseDriver] The capabilities ["includeSafariInWebviews"] are not standard capabilities and should have an extension prefix
[Appium] Appium v1.16.0 creating new FlutterDriver (v0.0.20) session
[debug] [BaseDriver] Creating session with MJSONWP desired capabilities: {
[debug] [BaseDriver]   "app": "/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app",
[debug] [BaseDriver]   "includeSafariInWebviews": true,
[debug] [BaseDriver]   "orientation": "PORTRAIT",
[debug] [BaseDriver]   "noReset": true,
[debug] [BaseDriver]   "platformVersion": "13.1",
[debug] [BaseDriver]   "automationName": "Flutter",
[debug] [BaseDriver]   "bundleId": "com.example.datePicket",
[debug] [BaseDriver]   "platformName": "iOS",
[debug] [BaseDriver]   "udid": "A59562F8-1EF1-435E-8C5E-4B829ABA6F37",
[debug] [BaseDriver]   "deviceName": "iPhone 11 Pro Max",
[debug] [BaseDriver]   "wdaLocalPort": "8101"
[debug] [BaseDriver] }
[BaseDriver] The following capabilities were provided, but are not recognized by Appium:
[BaseDriver]   includeSafariInWebviews
[BaseDriver]   bundleId
[BaseDriver]   wdaLocalPort
[BaseDriver] Session created with session id: ce478cdf-1e4d-4a78-b5c6-8733102b47a8
[FlutterDriver] Starting an IOS proxy session
[debug] [BaseDriver] Creating session with MJSONWP desired capabilities: {
[debug] [BaseDriver]   "app": "/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app",
[debug] [BaseDriver]   "includeSafariInWebviews": true,
[debug] [BaseDriver]   "orientation": "PORTRAIT",
[debug] [BaseDriver]   "noReset": true,
[debug] [BaseDriver]   "platformVersion": "13.1",
[debug] [BaseDriver]   "automationName": "Flutter",
[debug] [BaseDriver]   "bundleId": "com.example.datePicket",
[debug] [BaseDriver]   "platformName": "iOS",
[debug] [BaseDriver]   "udid": "A59562F8-1EF1-435E-8C5E-4B829ABA6F37",
[debug] [BaseDriver]   "deviceName": "iPhone 11 Pro Max",
[debug] [BaseDriver]   "wdaLocalPort": "8101",
[debug] [BaseDriver]   "newCommandTimeout": 0
[debug] [BaseDriver] }
[BaseDriver] Capability 'wdaLocalPort' changed from string ('8101') to integer (8101). This may cause unexpected behavior
[BaseDriver] Session created with session id: 0495b586-3d05-40fa-bb37-3be715fa6e46
[debug] [XCUITest] Current user: 'vikasvipul'
[debug] [XCUITest] Available devices: 
[iOSSim] Constructing iOS simulator for Xcode version 11.1 with udid 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37'
[XCUITest] Determining device to run tests on: udid: 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37', real device: false
[debug] [BaseDriver] Event 'xcodeDetailsRetrieved' logged at 1579596068293 (14:11:08 GMT+0530 (India Standard Time))
[BaseDriver] Using local app '/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app'
[debug] [BaseDriver] Event 'appConfigured' logged at 1579596068296 (14:11:08 GMT+0530 (India Standard Time))
[debug] [XCUITest] Checking whether app '/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app' is actually present on file system
[debug] [XCUITest] App is present
[debug] [BaseDriver] Event 'resetStarted' logged at 1579596068296 (14:11:08 GMT+0530 (India Standard Time))
[debug] [XCUITest] Reset: noReset is on. Leaving simulator as is
[debug] [BaseDriver] Event 'resetComplete' logged at 1579596068297 (14:11:08 GMT+0530 (India Standard Time))
[debug] [IOSSimulatorLog] Starting log capture for iOS Simulator with udid 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37', using 'xcrun simctl spawn A59562F8-1EF1-435E-8C5E-4B829ABA6F37 log stream --style compact'
[debug] [BaseDriver] Event 'logCaptureStarted' logged at 1579596068558 (14:11:08 GMT+0530 (India Standard Time))
[XCUITest] Setting up simulator
[debug] [iOS] No reason to set locale
[debug] [iOS] No iOS / app preferences to set
[debug] [iOS] Setting did not need to be updated
[debug] [iOSSim] Setting preferences of A59562F8-1EF1-435E-8C5E-4B829ABA6F37 Simulator to {"SimulatorWindowOrientation":"Portrait","SimulatorWindowRotationAngle":0,"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Setting common Simulator preferences to {"RotateWindowWhenSignaledByGuest":true,"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Updated A59562F8-1EF1-435E-8C5E-4B829ABA6F37 Simulator preferences at '/Users/vikasvipul/Library/Preferences/com.apple.iphonesimulator.plist' with {"DevicePreferences":{"A59562F8-1EF1-435E-8C5E-4B829ABA6F37":{"SimulatorWindowOrientation":"Portrait","SimulatorWindowRotationAngle":0,"ConnectHardwareKeyboard":false}},"RotateWindowWhenSignaledByGuest":true,"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Got Simulator UI client PID: 27170
[iOSSim] Both Simulator with UDID A59562F8-1EF1-435E-8C5E-4B829ABA6F37 and the UI client are currently running
[debug] [IDB] Connecting idb service to 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37'
[XCUITest] idb will not be used for Simulator interaction. Original error: 'idb' has not been found in PATH. Is it installed? Read https://www.fbidb.io for more details
[debug] [BaseDriver] Event 'simStarted' logged at 1579596068715 (14:11:08 GMT+0530 (India Standard Time))
[debug] [XCUITest] Verifying application platform
[debug] [XCUITest] CFBundleSupportedPlatforms: ["iPhoneSimulator"]
[debug] [XCUITest] App 'com.example.datePicket' is already installed. No need to reinstall.
[debug] [BaseDriver] Event 'appInstalled' logged at 1579596068817 (14:11:08 GMT+0530 (India Standard Time))
[XCUITest] Using WDA path: '/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent'
[XCUITest] Using WDA agent: '/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj'
[debug] [XCUITest] No obsolete cached processes from previous WDA sessions listening on port 8101 have been found
[DevCon Factory] Requesting connection for device A59562F8-1EF1-435E-8C5E-4B829ABA6F37 on local port 8101, device port 8101
[debug] [DevCon Factory] Cached connections count: 0
[DevCon Factory] Successfully requested the connection for A59562F8-1EF1-435E-8C5E-4B829ABA6F37:8101
[debug] [XCUITest] Starting WebDriverAgent initialization with the synchronization key 'XCUITestDriver'
[debug] [WD Proxy] Matched '/status' to command name 'getStatus'
[debug] [WD Proxy] Proxying [GET /status] to [GET http://localhost:8101/status] with no body
[debug] [WD Proxy] Got response with status 200: {
[debug] [WD Proxy]   "value" : {
[debug] [WD Proxy]     "message" : "WebDriverAgent is ready to accept commands",
[debug] [WD Proxy]     "state" : "success",
[debug] [WD Proxy]     "os" : {
[debug] [WD Proxy]       "name" : "iOS",
[debug] [WD Proxy]       "version" : "13.1",
[debug] [WD Proxy]       "sdkVersion" : "13.0"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ios" : {
[debug] [WD Proxy]       "simulatorVersion" : "13.1",
[debug] [WD Proxy]       "ip" : "172.31.7.152"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ready" : true,
[debug] [WD Proxy]     "build" : {
[debug] [WD Proxy]       "upgradedAt" : "1577356260834",
[debug] [WD Proxy]       "time" : "Jan 18 2020 14:09:48",
[debug] [WD Proxy]       "productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
[debug] [WD Proxy]     }
[debug] [WD Proxy]   },
[debug] [WD Proxy]   "sessionId" : "C1EE82BC-8992-4EA3-9C06-12F3AE47499E"
[debug] [WD Proxy] }
[debug] [XCUITest] Upgrade timestamp of the currently bundled WDA: 1577356260834
[debug] [XCUITest] Upgrade timestamp of the WDA on the device: 1577356260834
[XCUITest] Will reuse previously cached WDA instance at 'http://localhost:8101/' with 'com.facebook.WebDriverAgentRunner'. Set the wdaLocalPort capability to a value different from 8101 if this is an undesired behavior.
[debug] [XCUITest] Trying to start WebDriverAgent 2 times with 10000ms interval
[debug] [XCUITest] These values can be customized by changing wdaStartupRetries/wdaStartupRetryInterval capabilities
[debug] [BaseDriver] Event 'wdaStartAttempted' logged at 1579596068906 (14:11:08 GMT+0530 (India Standard Time))
[XCUITest] Using provided WebdriverAgent at 'http://localhost:8101/'
[debug] [WD Proxy] Matched '/status' to command name 'getStatus'
[debug] [WD Proxy] Proxying [GET /status] to [GET http://localhost:8101/status] with no body
[debug] [WD Proxy] Got response with status 200: {
[debug] [WD Proxy]   "value" : {
[debug] [WD Proxy]     "message" : "WebDriverAgent is ready to accept commands",
[debug] [WD Proxy]     "state" : "success",
[debug] [WD Proxy]     "os" : {
[debug] [WD Proxy]       "name" : "iOS",
[debug] [WD Proxy]       "version" : "13.1",
[debug] [WD Proxy]       "sdkVersion" : "13.0"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ios" : {
[debug] [WD Proxy]       "simulatorVersion" : "13.1",
[debug] [WD Proxy]       "ip" : "172.31.7.152"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ready" : true,
[debug] [WD Proxy]     "build" : {
[debug] [WD Proxy]       "upgradedAt" : "1577356260834",
[debug] [WD Proxy]       "time" : "Jan 18 2020 14:09:48",
[debug] [WD Proxy]       "productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
[debug] [WD Proxy]     }
[debug] [WD Proxy]   },
[debug] [WD Proxy]   "sessionId" : "C1EE82BC-8992-4EA3-9C06-12F3AE47499E"
[debug] [WD Proxy] }
[debug] [BaseDriver] Event 'wdaSessionAttempted' logged at 1579596068911 (14:11:08 GMT+0530 (India Standard Time))
[debug] [XCUITest] Sending createSession command to WDA
[debug] [WD Proxy] Matched '/session' to command name 'createSession'
[debug] [WD Proxy] Proxying [POST /session] to [POST http://localhost:8101/session] with body: {"capabilities":{"firstMatch":[{"bundleId":"com.example.datePicket","arguments":[],"environment":{},"eventloopIdleDelaySec":0,"shouldWaitForQuiescence":true,"shouldUseTestManagerForVisibilityDetection":false,"maxTypingFrequency":60,"shouldUseSingletonTestManager":true}],"alwaysMatch":{}}}
[debug] [WD Proxy] Got response with status 200: {"value":{"sessionId":"F1B09D96-0D5D-411D-930F-C1DD260658C3","capabilities":{"device":"iphone","browserName":"date_picket","sdkVersion":"13.1","CFBundleIdentifier":"com.example.datePicket"}},"sessionId":"F1B09D96-0D5D-411D-930F-C1DD260658C3"}
[WD Proxy] Determined the downstream protocol as 'W3C'
[debug] [BaseDriver] Event 'wdaSessionStarted' logged at 1579596071005 (14:11:11 GMT+0530 (India Standard Time))
[debug] [BaseDriver] Event 'wdaStarted' logged at 1579596071005 (14:11:11 GMT+0530 (India Standard Time))
[debug] [XCUITest] Setting initial orientation to 'PORTRAIT'
[debug] [WD Proxy] Matched '/orientation' to command name 'setOrientation'
[debug] [WD Proxy] Proxying [POST /orientation] to [POST http://localhost:8101/session/F1B09D96-0D5D-411D-930F-C1DD260658C3/orientation] with body: {"orientation":"PORTRAIT"}
[debug] [WD Proxy] Got response with status 200: {"value":null,"sessionId":"F1B09D96-0D5D-411D-930F-C1DD260658C3"}
[debug] [BaseDriver] Event 'orientationSet' logged at 1579596072529 (14:11:12 GMT+0530 (India Standard Time))
[FlutterDriver] Attempt #1
[FlutterDriver] Connecting to Dart Observatory: ws://127.0.0.1:64816/Cc2vt6adD0k=/ws
[FlutterDriver] Connected to ws://127.0.0.1:64816/Cc2vt6adD0k=/ws
[Appium] New FlutterDriver session created successfully, session ce478cdf-1e4d-4a78-b5c6-8733102b47a8 added to master session list
[debug] [BaseDriver] Event 'newSessionStarted' logged at 1579596072668 (14:11:12 GMT+0530 (India Standard Time))
[debug] [MJSONWP (ce478cdf)] Cached the protocol value 'MJSONWP' for the new session ce478cdf-1e4d-4a78-b5c6-8733102b47a8
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.createSession() result: {"shell":null,"allowCors":false,"reboot":false,"ipa":null,"address":"0.0.0.0","port":4723,"basePath":"/wd/hub","callbackAddress":null,"callbackPort":null,"bootstrapPort":4724,"backendRetries":3,"sessionOverride":false,"launch":false,"logFile":null,"loglevel":"debug","logTimestamp":false,"localTimezone":false,"logNoColors":false,"webhook":null,"safari":false,"defaultDevice":false,"forceIphone":false,"forceIpad":false,"automationTraceTemplatePath":null,"instrumentsPath":null,"nodeconfig":null,"robotAddress":"0.0.0.0","robotPort":-1,"chromeDriverPort":null,"chromedriverExecutable":null,"showConfig":false,"noPermsCheck":false,"enforceStrictCaps":false,"isolateSimDevice":false,"tmpDir":"/var/folders/w6/qbbv2xsj11ldc85wdsxdbfvr0000gn/T","traceDir":null,"debugLogSpacing":false,"suppressKillServer":false,"longStacktrace":false,"webkitDebugProxyPort":27753,"wdaLocalPort":"8101","defaultCapabilities":{},"relaxedSecurityEnabled":false,"allowInsecure":[],"denyInsecure":[],"defaultCommandTimeout":60,"keepArtifacts":fal...
[HTTP] <-- POST /wd/hub/session 200 5375 ms - 2223
[HTTP] 
[HTTP] --> GET /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8
[HTTP] {}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.getSession() with args: ["ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing Flutter driver command 'getSession'
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.getSession() result: {"app":"/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app","includeSafariInWebviews":true,"orientation":"PORTRAIT","noReset":true,"platformVersion":"13.1","automationName":"Flutter","bundleId":"com.example.datePicket","platformName":"iOS","udid":"A59562F8-1EF1-435E-8C5E-4B829ABA6F37","deviceName":"iPhone 11 Pro Max","wdaLocalPort":"8101"}
[HTTP] <-- GET /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8 200 2 ms - 468
[HTTP] 
[HTTP] --> GET /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8
[HTTP] {}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.getSession() with args: ["ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing Flutter driver command 'getSession'
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.getSession() result: {"app":"/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app","includeSafariInWebviews":true,"orientation":"PORTRAIT","noReset":true,"platformVersion":"13.1","automationName":"Flutter","bundleId":"com.example.datePicket","platformName":"iOS","udid":"A59562F8-1EF1-435E-8C5E-4B829ABA6F37","deviceName":"iPhone 11 Pro Max","wdaLocalPort":"8101"}
[HTTP] <-- GET /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8 200 1 ms - 468
[HTTP] 
[HTTP] --> POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/context
[HTTP] {"name":"NATIVE_APP"}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.setContext() with args: ["NATIVE_APP","ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing Flutter driver command 'setContext'
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.setContext() result: "NATIVE_APP"
[HTTP] <-- POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/context 200 4 ms - 84
[HTTP] 
[HTTP] --> POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/appium/app/close
[HTTP] {}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.closeApp() with args: ["ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing proxied driver command 'closeApp'
[debug] [XCUITest] Executing command 'closeApp'
[debug] [WD Proxy] Matched '/session/0495b586-3d05-40fa-bb37-3be715fa6e46' to command name 'deleteSession'
[debug] [WD Proxy] Proxying [DELETE /session/0495b586-3d05-40fa-bb37-3be715fa6e46] to [DELETE http://localhost:8101/session/F1B09D96-0D5D-411D-930F-C1DD260658C3] with no body
[FlutterDriver] Connection to ws://127.0.0.1:64816/Cc2vt6adD0k=/ws closed
[debug] [WD Proxy] Got response with status 200: {
[debug] [WD Proxy]   "value" : null,
[debug] [WD Proxy]   "sessionId" : "7672E9AB-3A47-4888-B46A-8A1E112ED5E3"
[debug] [WD Proxy] }
[DevCon Factory] Releasing connections for A59562F8-1EF1-435E-8C5E-4B829ABA6F37 device on any port number
[DevCon Factory] Found cached connections to release: ["A59562F8-1EF1-435E-8C5E-4B829ABA6F37:8101"]
[debug] [DevCon Factory] Cached connections count: 0
[iOS] Successfully closed the '/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app' app.
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.closeApp() result: null
[HTTP] <-- POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/appium/app/close 200 1049 ms - 76
[HTTP] 
[HTTP] --> POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/appium/app/launch
[HTTP] {}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.launchApp() with args: ["ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing proxied driver command 'launchApp'
[debug] [XCUITest] Executing command 'launchApp'
[debug] [XCUITest] Current user: 'vikasvipul'
[debug] [XCUITest] Available devices: 
[iOSSim] Constructing iOS simulator for Xcode version 11.1 with udid 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37'
[XCUITest] Determining device to run tests on: udid: 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37', real device: false
[debug] [BaseDriver] Event 'xcodeDetailsRetrieved' logged at 1579596074015 (14:11:14 GMT+0530 (India Standard Time))
[BaseDriver] Using local app '/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app'
[debug] [BaseDriver] Event 'appConfigured' logged at 1579596074016 (14:11:14 GMT+0530 (India Standard Time))
[debug] [XCUITest] Checking whether app '/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app' is actually present on file system
[debug] [XCUITest] App is present
[debug] [BaseDriver] Event 'resetStarted' logged at 1579596074017 (14:11:14 GMT+0530 (India Standard Time))
[debug] [XCUITest] Reset: noReset is on. Leaving simulator as is
[debug] [BaseDriver] Event 'resetComplete' logged at 1579596074017 (14:11:14 GMT+0530 (India Standard Time))
[XCUITest] Trying to start iOS log capture but it has already started!
[debug] [BaseDriver] Event 'logCaptureStarted' logged at 1579596074017 (14:11:14 GMT+0530 (India Standard Time))
[XCUITest] Setting up simulator
[debug] [iOS] No reason to set locale
[debug] [iOS] No iOS / app preferences to set
[debug] [iOS] Setting did not need to be updated
[debug] [iOSSim] Setting preferences of A59562F8-1EF1-435E-8C5E-4B829ABA6F37 Simulator to {"SimulatorWindowOrientation":"Portrait","SimulatorWindowRotationAngle":0,"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Setting common Simulator preferences to {"RotateWindowWhenSignaledByGuest":true,"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Updated A59562F8-1EF1-435E-8C5E-4B829ABA6F37 Simulator preferences at '/Users/vikasvipul/Library/Preferences/com.apple.iphonesimulator.plist' with {"DevicePreferences":{"A59562F8-1EF1-435E-8C5E-4B829ABA6F37":{"SimulatorWindowOrientation":"Portrait","SimulatorWindowRotationAngle":0,"ConnectHardwareKeyboard":false}},"RotateWindowWhenSignaledByGuest":true,"ConnectHardwareKeyboard":false}
[debug] [iOSSim] Got Simulator UI client PID: 27170
[iOSSim] Both Simulator with UDID A59562F8-1EF1-435E-8C5E-4B829ABA6F37 and the UI client are currently running
[debug] [IDB] Connecting idb service to 'A59562F8-1EF1-435E-8C5E-4B829ABA6F37'
[XCUITest] idb will not be used for Simulator interaction. Original error: 'idb' has not been found in PATH. Is it installed? Read https://www.fbidb.io for more details
[debug] [BaseDriver] Event 'simStarted' logged at 1579596074163 (14:11:14 GMT+0530 (India Standard Time))
[debug] [XCUITest] Verifying application platform
[debug] [XCUITest] CFBundleSupportedPlatforms: ["iPhoneSimulator"]
[debug] [XCUITest] App 'com.example.datePicket' is already installed. No need to reinstall.
[debug] [BaseDriver] Event 'appInstalled' logged at 1579596074256 (14:11:14 GMT+0530 (India Standard Time))
[XCUITest] Using WDA path: '/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent'
[XCUITest] Using WDA agent: '/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj'
[debug] [XCUITest] No obsolete cached processes from previous WDA sessions listening on port 8101 have been found
[DevCon Factory] Requesting connection for device A59562F8-1EF1-435E-8C5E-4B829ABA6F37 on local port 8101, device port 8101
[debug] [DevCon Factory] Cached connections count: 0
[DevCon Factory] Successfully requested the connection for A59562F8-1EF1-435E-8C5E-4B829ABA6F37:8101
[debug] [XCUITest] Starting WebDriverAgent initialization with the synchronization key 'XCUITestDriver'
[debug] [WD Proxy] Matched '/status' to command name 'getStatus'
[debug] [WD Proxy] Proxying [GET /status] to [GET http://localhost:8101/status] with no body
[debug] [WD Proxy] Got response with status 200: {
[debug] [WD Proxy]   "value" : {
[debug] [WD Proxy]     "message" : "WebDriverAgent is ready to accept commands",
[debug] [WD Proxy]     "state" : "success",
[debug] [WD Proxy]     "os" : {
[debug] [WD Proxy]       "name" : "iOS",
[debug] [WD Proxy]       "version" : "13.1",
[debug] [WD Proxy]       "sdkVersion" : "13.0"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ios" : {
[debug] [WD Proxy]       "simulatorVersion" : "13.1",
[debug] [WD Proxy]       "ip" : "172.31.7.152"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ready" : true,
[debug] [WD Proxy]     "build" : {
[debug] [WD Proxy]       "upgradedAt" : "1577356260834",
[debug] [WD Proxy]       "time" : "Jan 18 2020 14:09:48",
[debug] [WD Proxy]       "productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
[debug] [WD Proxy]     }
[debug] [WD Proxy]   },
[debug] [WD Proxy]   "sessionId" : "7672E9AB-3A47-4888-B46A-8A1E112ED5E3"
[debug] [WD Proxy] }
[debug] [XCUITest] Upgrade timestamp of the currently bundled WDA: 1577356260834
[debug] [XCUITest] Upgrade timestamp of the WDA on the device: 1577356260834
[XCUITest] Will reuse previously cached WDA instance at 'http://localhost:8101/' with 'com.facebook.WebDriverAgentRunner'. Set the wdaLocalPort capability to a value different from 8101 if this is an undesired behavior.
[debug] [XCUITest] Trying to start WebDriverAgent 2 times with 10000ms interval
[debug] [XCUITest] These values can be customized by changing wdaStartupRetries/wdaStartupRetryInterval capabilities
[debug] [BaseDriver] Event 'wdaStartAttempted' logged at 1579596074332 (14:11:14 GMT+0530 (India Standard Time))
[XCUITest] Using provided WebdriverAgent at 'http://localhost:8101/'
[debug] [WD Proxy] Matched '/status' to command name 'getStatus'
[debug] [WD Proxy] Proxying [GET /status] to [GET http://localhost:8101/status] with no body
[debug] [WD Proxy] Got response with status 200: {
[debug] [WD Proxy]   "value" : {
[debug] [WD Proxy]     "message" : "WebDriverAgent is ready to accept commands",
[debug] [WD Proxy]     "state" : "success",
[debug] [WD Proxy]     "os" : {
[debug] [WD Proxy]       "name" : "iOS",
[debug] [WD Proxy]       "version" : "13.1",
[debug] [WD Proxy]       "sdkVersion" : "13.0"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ios" : {
[debug] [WD Proxy]       "simulatorVersion" : "13.1",
[debug] [WD Proxy]       "ip" : "172.31.7.152"
[debug] [WD Proxy]     },
[debug] [WD Proxy]     "ready" : true,
[debug] [WD Proxy]     "build" : {
[debug] [WD Proxy]       "upgradedAt" : "1577356260834",
[debug] [WD Proxy]       "time" : "Jan 18 2020 14:09:48",
[debug] [WD Proxy]       "productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
[debug] [WD Proxy]     }
[debug] [WD Proxy]   },
[debug] [WD Proxy]   "sessionId" : "7672E9AB-3A47-4888-B46A-8A1E112ED5E3"
[debug] [WD Proxy] }
[debug] [BaseDriver] Event 'wdaSessionAttempted' logged at 1579596074336 (14:11:14 GMT+0530 (India Standard Time))
[debug] [XCUITest] Sending createSession command to WDA
[debug] [WD Proxy] Matched '/session' to command name 'createSession'
[debug] [WD Proxy] Proxying [POST /session] to [POST http://localhost:8101/session] with body: {"capabilities":{"firstMatch":[{"bundleId":"com.example.datePicket","arguments":[],"environment":{},"eventloopIdleDelaySec":0,"shouldWaitForQuiescence":true,"shouldUseTestManagerForVisibilityDetection":false,"maxTypingFrequency":60,"shouldUseSingletonTestManager":true}],"alwaysMatch":{}}}
[debug] [WD Proxy] Got response with status 200: {"value":{"sessionId":"DF558BD9-062E-47B0-B35C-4408EB5AFF43","capabilities":{"device":"iphone","browserName":"date_picket","sdkVersion":"13.1","CFBundleIdentifier":"com.example.datePicket"}},"sessionId":"DF558BD9-062E-47B0-B35C-4408EB5AFF43"}
[WD Proxy] Determined the downstream protocol as 'W3C'
[debug] [BaseDriver] Event 'wdaSessionStarted' logged at 1579596076445 (14:11:16 GMT+0530 (India Standard Time))
[debug] [BaseDriver] Event 'wdaStarted' logged at 1579596076445 (14:11:16 GMT+0530 (India Standard Time))
[debug] [XCUITest] Setting initial orientation to 'PORTRAIT'
[debug] [WD Proxy] Matched '/orientation' to command name 'setOrientation'
[debug] [WD Proxy] Proxying [POST /orientation] to [POST http://localhost:8101/session/DF558BD9-062E-47B0-B35C-4408EB5AFF43/orientation] with body: {"orientation":"PORTRAIT"}
[debug] [WD Proxy] Got response with status 200: {"value":null,"sessionId":"DF558BD9-062E-47B0-B35C-4408EB5AFF43"}
[debug] [BaseDriver] Event 'orientationSet' logged at 1579596077972 (14:11:17 GMT+0530 (India Standard Time))
[iOS] Successfully launched the '/Users/vikasvipul/Documents/work_flutter_poc/automationFlutterApp/flutter.automation.test/apps/Runner.app' app.
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.launchApp() result: null
[HTTP] <-- POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/appium/app/launch 200 4191 ms - 76
[HTTP] 
[HTTP] --> GET /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/contexts
[HTTP] {}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.getContexts() with args: ["ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing Flutter driver command 'getContexts'
[debug] [iOS] Getting list of available contexts
[debug] [iOS] Retrieving contexts and views
[debug] [XCUITest] Selecting by url: false 
[RemoteDebugger] Remote Debugger version 5.7.0
[debug] [RemoteDebugger] useNewSafari --> false
[debug] [RemoteDebugger] Checking which communication style to use (non-Safari on platform version '13.1')
[debug] [RemoteDebugger] Platform version equal or higher than '12.2': true
[RemoteDebugger] Setting communication protocol: using full Web Inspector protocol communication
[debug] [RemoteDebugger] Connecting to remote debugger through unix domain socket: '/private/tmp/com.apple.launchd.dfwnNolFqa/com.apple.webinspectord_sim.socket'
[debug] [RemoteDebugger] Debugger socket connected
[debug] [RemoteDebugger] Sending connection key request
[debug] [RemoteDebugger] Sending '_rpc_reportIdentifier:' message (id: 0)
[debug] [RemoteDebugger] Received no apps from remote debugger. Unable to connect.
[debug] [RemoteDebugger] Connected to application
[debug] [RemoteDebugger] Selecting application
[debug] [RemoteDebugger] No applications currently connected.
[debug] [XCUITest] No web frames found.
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.getContexts() result: ["NATIVE_APP","FLUTTER"]
[HTTP] <-- GET /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/contexts 200 195 ms - 96
[HTTP] 
[HTTP] --> POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/context
[HTTP] {"name":"FLUTTER"}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.setContext() with args: ["FLUTTER","ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing Flutter driver command 'setContext'
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.setContext() result: "FLUTTER"
[HTTP] <-- POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/context 200 2 ms - 81
[HTTP] 
[HTTP] --> POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/element/eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoiYnV0dG9uMSJ9/click
[HTTP] {"id":"eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoiYnV0dG9uMSJ9"}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.click() with args: ["eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoiYnV0dG9uMSJ9","ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [FlutterDriver] Executing Flutter driver command 'click'
[debug] [FlutterDriver] >>> {"command":"tap","finderType":"ByValueKey","keyValueType":"String","keyValueString":"button1"}
[FlutterDriver] {}
[debug] [MJSONWP (ce478cdf)] Encountered internal error running command: Error: {}
[debug] [MJSONWP (ce478cdf)]     at Object.wrappedLogger.errorAndThrow (/usr/local/lib/node_modules/appium/node_modules/appium-support/lib/logging.js:74:35)
[debug] [MJSONWP (ce478cdf)]     at Client.socket.call (/usr/local/lib/node_modules/appium/node_modules/appium-flutter-driver/lib/sessions/observatory.ts:73:19)
[debug] [MJSONWP (ce478cdf)]     at runMicrotasks (<anonymous>)
[debug] [MJSONWP (ce478cdf)]     at processTicksAndRejections (internal/process/task_queues.js:93:5)
[HTTP] <-- POST /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8/element/eyJmaW5kZXJUeXBlIjoiQnlWYWx1ZUtleSIsImtleVZhbHVlVHlwZSI6IlN0cmluZyIsImtleVZhbHVlU3RyaW5nIjoiYnV0dG9uMSJ9/click 500 10 ms - 173
[HTTP] 
[HTTP] --> DELETE /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8
[HTTP] {}
[debug] [MJSONWP (ce478cdf)] Calling AppiumDriver.deleteSession() with args: ["ce478cdf-1e4d-4a78-b5c6-8733102b47a8"]
[debug] [BaseDriver] Event 'quitSessionRequested' logged at 1579596108252 (14:11:48 GMT+0530 (India Standard Time))
[Appium] Removing session ce478cdf-1e4d-4a78-b5c6-8733102b47a8 from our master session list
[debug] [FlutterDriver] Deleting Flutter Driver session
[debug] [WD Proxy] Matched '/session/0495b586-3d05-40fa-bb37-3be715fa6e46' to command name 'deleteSession'
[debug] [WD Proxy] Proxying [DELETE /session/0495b586-3d05-40fa-bb37-3be715fa6e46] to [DELETE http://localhost:8101/session/DF558BD9-062E-47B0-B35C-4408EB5AFF43] with no body
[debug] [WD Proxy] Got response with status 200: {
[debug] [WD Proxy]   "value" : null,
[debug] [WD Proxy]   "sessionId" : "D05CEB71-16A2-4355-89B2-797D249A9EB1"
[debug] [WD Proxy] }
[DevCon Factory] Releasing connections for A59562F8-1EF1-435E-8C5E-4B829ABA6F37 device on any port number
[DevCon Factory] Found cached connections to release: ["A59562F8-1EF1-435E-8C5E-4B829ABA6F37:8101"]
[debug] [DevCon Factory] Cached connections count: 0
[debug] [XCUITest] Not clearing log files. Use `clearSystemFiles` capability to turn on.
[debug] [IOSSimulatorLog] Stopping iOS log capture
[debug] [BaseDriver] Event 'quitSessionFinished' logged at 1579596109295 (14:11:49 GMT+0530 (India Standard Time))
[debug] [MJSONWP (ce478cdf)] Received response: null
[debug] [MJSONWP (ce478cdf)] But deleting session, so not returning
[debug] [MJSONWP (ce478cdf)] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /wd/hub/session/ce478cdf-1e4d-4a78-b5c6-8733102b47a8 200 1044 ms - 76
[HTTP] 

Need to know how to test the changes locally

Hi @truongsinh could you please let me know how can I build this locally so that I can place build folder directly inside appium-flutter-driver in Appium. I am curious to know this as I have added some functionality need to test that locally before sending pull request.

Thank You

Request failed due to unknown method: Method is not implemented

An error occurred when I ran the demo at the following address:
https://github.com/truongsinh/appium-flutter-driver/tree/master/example/nodejs

The error:
2020-03-12T01:44:59.143Z ERROR webdriver: Request failed due to unknown method: Method is not implemented
at getErrorFromResponseBody (D:\Tests\Appium\node_modules\webdriver\build\utils.js:124:10)
at Request._callback (D:\Tests\Appium\node_modules\webdriver\build\request.js:111:64)
at Request.self.callback (D:\Tests\Appium\node_modules\request\request.js:185:22)
at Request.emit (events.js:311:20)
at Request.EventEmitter.emit (domain.js:482:12)
at Request. (D:\Tests\Appium\node_modules\request\request.js:1154:10)
at Request.emit (events.js:311:20)
at Request.EventEmitter.emit (domain.js:482:12)
at IncomingMessage. (D:\Tests\Appium\node_modules\request\request.js:1076:12)
at Object.onceWrapper (events.js:417:28)
(node:10144) UnhandledPromiseRejectionWarning: unknown method: Method is not implemented
at getErrorFromResponseBody (D:\Tests\Appium\node_modules\webdriver\build\utils.js:124:10)
at Request._callback (D:\Tests\Appium\node_modules\webdriver\build\request.js:111:64)
at Request.self.callback (D:\Tests\Appium\node_modules\request\request.js:185:22)
at Request.emit (events.js:311:20)
at Request.EventEmitter.emit (domain.js:482:12)
at Request. (D:\Tests\Appium\node_modules\request\request.js:1154:10)
at Request.emit (events.js:311:20)
at Request.EventEmitter.emit (domain.js:482:12)
at IncomingMessage. (D:\Tests\Appium\node_modules\request\request.js:1076:12)
at Object.onceWrapper (events.js:417:28)

flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.12.13, on Microsoft Windows [Version 10.0.18362.356], locale zh-CN)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Android Studio (version 3.6)
[!] IntelliJ IDEA Community Edition (version 2019.2)
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
[!] IntelliJ IDEA Ultimate Edition (version 2019.3)
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
[√] Connected device (1 available)

dart --version
Dart VM version: 2.7.0 (Fri Dec 6 16:26:51 2019 +0100) on "windows_x64"

Unable to use flutter in appium with python client

Hi:
After install appium-flutter-driver and refrenced with the example.py
capabilities = {
"platformName": "android",
"deviceName": "Samsung Galaxy S7_2",
"platformVersion": "7.1.1",
"automationName": "flutter",
"app": "/Users/yjf/opt/anaconda3/envs/ef_mobile_automation/mobile/interfaces/client_ui/apps/engage-juno-uat-debug-2.1.0-flutter.apk"
}
driver = Remote('http://localhost:4723/wd/hub', capabilities)

After running the code, errors are listed as following:
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find a driver for automationName 'flutter' and platformName 'android'. Please check your desired capabilities.
Could you give some suggestion? Thanks a lot.

Cannot build java due to missing class java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics

Hi truongsinh, first I very appriciate what you've done with this project.

I'm trying to build and run the Java client project but i caught this error, can you guide me how to resolve this problem.

basicTest(example.appium.FlutterTest)  Time elapsed: 27.492 sec  <<< ERROR!
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
        at pro.truongsinh.appium_flutter.FlutterFinder.<init>(FlutterFinder.kt)
        at example.appium.FlutterTest.setUp(FlutterTest.java:22)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 32 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.