King-of-Spades / AppCenter-Samples

Samples for getting started in Visual Studio App Center
https://appcenter.ms
20 stars 64 forks source link

Prepare for appium upgrade #21

Closed john7doe closed 5 years ago

john7doe commented 5 years ago

The appium upgrade will need at least version 6.0.0 of the java client. Updated to the latest appium-test-extension while I was at it :-)

King-of-Spades commented 5 years ago

Originally I tried to test this and it seemed like it was working, but now I can't get the Appium samples to work at all, and the error messages they are hitting keep changing nonsensically.

My best guess at this point is that perhaps something is wrong with my GitIgnore, and a setting or multiple settings which should be locked with the sample are getting modified when I'm attempting to build consistently.

https://github.com/King-of-Spades/AppCenter-Test-Samples/blob/master/Appium/Android/.gitignore

King-of-Spades commented 5 years ago

Okay, so I think I have a slightly better handle on the situation now, after a lot of trial and error:

  1. My hypothesis is that perhaps I wasn't getting the .idea & target folders consistently cleaned, and this could cause bizarre inconsistent behaviors. I think maybe if the folders are present but not cleaned maybe stuff isn't getting overwritten in a way I'd normally expect those files to do.

  2. On newer versions of Appium, this query is broken:

    MobileElement elem = Util.findByByOrName(driver, By.id("com.moonpi.swiftnotes:id/newNote"), "+"); elem.click();

At one point the error was complaining about using a CSS selector on iOS which sort of sounds like this issue: https://github.com/appium/appium-dotnet-driver/issues/265 but it seems like that should have been fixed.

I'm not sure if the problem is a regression or intentional change in Appium, and how we might modify our queries to be compatible if it's anything besides a fixable bug. (There is reference to a fixed bug in the discussion there, but the behavior isn't working on the latest RC of Appium.)

  1. When I switched back to Appium 1.7.2, elem.Click() works as expected again; however on this branch with the driver.label("Stopping App"); call it hits the following exception:

org.openqa.selenium.WebDriverException: java.io.IOException: unexpected end of stream on Connection{localhost:4723, proxy=DIRECT hostAddress=localhost/127.0.0.1:4723 cipherSuite=none protocol=http/1.1} Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T14:04:26.12Z' System info: host: 'Kents-New-MacBook-Pro.local', ip: 'fe80:0:0:0:b3:d048:481f:2cb9%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.2', java.version: '1.8.0_131' Driver info: driver.version: EnhancedAndroidDriver

This was driving me insane, because even though I now know how to consistently reproduce the issue a Connection error doesn't make ANY sense to me given the other test steps complete and it's failing on a screenshot. The screenshot does not have this issue on my main branch.

King-of-Spades commented 5 years ago

There's some complex issues, and I don't fully understand them. @john7doe I think the best way to validate the update works as expected is if you can confirm based on your QA the following:

  1. That you have a working basic query (equivalent to app.Tap() stuff we do for UITest will be sufficient). Whether it's the same format as this sample, or a new format somehow works for me.
  2. If you can confirm driver.label() is working for you.
  3. The exact Appium version you're running on.

With these three points confirmed, I don't know if it will get it working, but I think we'll be a lot closer to the same page on expected vs. problematic behavior that's coming up...and possibly more efficiently than trying to make sense of some of those counter-intuitive error messages.

john7doe commented 5 years ago

Kent I also had problems running the tests, until I updated to 6.1.0 of the client. So have updated the PR to use that.

Br, /Simon

King-of-Spades commented 5 years ago

Thanks @john7doe! I'm doing a quick test to make sure it also works on my end (even if it's supposed to work but I hit weird symptoms I might have to update the readme or something.)