Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-8080

After migrating to 3.6.3 from 3.4.0, Appium (Android) tests fail because of open dialog

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.6.3
    • None
    • cordova-android, cordova-js
    • 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'`.

    Description

      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:

      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"}
      

      Test
      The APK to repro this is in attachments. It is possible to run a simple Appium test to repro the problem:

      [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);
      
              }
      

      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.

      Attachments

        1. MyApp-debug.apk
          1.87 MB
          Andrea Tino

        Activity

          People

            filmaj Filip Maj
            andry.tino Andrea Tino
            Votes:
            3 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: