You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Andrea Tino (JIRA)" <ji...@apache.org> on 2015/01/08 08:35:34 UTC

[jira] [Commented] (CB-8080) After migrating to 3.6.3 from 3.4.0, Appium (Android) tests fail because of open dialog

    [ https://issues.apache.org/jira/browse/CB-8080?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14268936#comment-14268936 ] 

Andrea Tino commented on CB-8080:
---------------------------------

We probably found the problem. After the introduction of the bridge secret in version 3.6.3 the problem started showing. The checkin probably responsible for this is: https://github.com/apache/cordova-android/commit/aab47bd4532bfe8707d745638eb5695ac543c681. Here you can see that {{prompt()}} is being used and this is causing the problem. We could assess it by debugging the app using Eclipse while the app was being automated by ChromeDriver through Appium.

To run a good assessment you will also need to include content from checkin https://github.com/apache/cordova-android/commit/ec47274fbd91d2f0b658da64f5d4d4dd6600f625. In fact, in the first checkin, file {{cordova.js}} was not modified according to the edits made on the native side. This second checkin fixes the misalignment.

Unfortunately it is not easy for us to find a workaround as the whole security feature introduced in version 3.6.3 with this {{securityBridge}} spans across multiple checkins and impact several areas of the code. That is why I think the Cordova Team is needed in this case. {{prompt()}} is causing a dialog to be triggered somehow when page is reloaded or a page transition is performed. The problem is that the dialog is never shown but under the hoods in Chrome something is happening.

> After migrating to 3.6.3 from 3.4.0, Appium (Android) tests fail because of open dialog
> ---------------------------------------------------------------------------------------
>
>                 Key: CB-8080
>                 URL: https://issues.apache.org/jira/browse/CB-8080
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android, CordovaJS
>    Affects Versions: 3.6.3
>         Environment: Basic Appium test on Android webview based app. The test on Appium works until the app issues a `window.location.reload()` or a `window.location.href = 'something'`.
>            Reporter: Andrea Tino
>              Labels: javascript
>         Attachments: MyApp-debug.apk
>
>
> After upgrading to Cordova 3.6.3 from Cordova 3.4.0; my Appium tests cannot go on because of a strange error. The error can be reproed very easily by creating a basic web-view based app on Android which issues a {{window.location.reload()}} after a while that the test starts.
> I could assess that the problem is one particular file: {{cordova.js}} which becomes part of the js files in my app when I build it with Cordova. My app loads only one javascript file: {{cordova.js}}, I removed all other dependencies to other js files. When that file is in my app (even though {{index.html}} does not use any function defined in there), my tests fails. If I remove the dependencies to that file, tests go ok!
> The problem is that when my app issues a {{window.location.reload()}}; my test fail with this error message:
> {code}
> info: [debug] Responding to client with error: {"status":26,"value":{"message":"A modal dialog was open, blocking this operation","origValue":"unexpected alert open\n (Session info: webview=)\n (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.3 x86_64)"},"sessionId":"965ba51e54f682559e5b8378095bc3d4"}
> {code}
> *Test*
> The APK to repro this is in attachments. It is possible to run a simple Appium test to repro the problem:
> {code}
> [Test]
>         public void SimpleTest()
>         {
>             this.appPackage = "com.myorg.myapp";
>             this.appActivity = "myapp";
>             BeforeAll();
>             Thread.Sleep(3000);
>             var submitAddressButton = driver.FindElementByClassName("testClass");
>             submitAddressButton.Click();
>             Thread.Sleep(3000);
>             submitAddressButton = driver.FindElementByClassName("testClass");
>             Expect(submitAddressButton, Is.Not.Null);
>         }
> {code}
> *Important*
> The fact that a dialog is reported is actually very strange. After inspecting a lot I could verify that no native/webview dialog is being shown on my app. In fact I cannot see any dialog and if I try to dismiss this ghost dialog using Appium and WebDriver APIs, the command fail as no dialog can be found.
> *Notes*
> Consider that the problem is not in the APIs I use in my test (C# dotnet driver for Appium). Everything happens on my Appium server running on a Mac.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org