Having issues running Java test project listed on Appium.io website

Hello,
I am new to Appium, and have been trying to get a test project running using the Java example code listed here:

I want to confirm the capabilities of Appium, and have a solid example in regards to formatting tests.

I initially kept getting an error in regards to my source, but I went into pom.XML and updated the source to 1.8 instead of 1.7.

Now when I run the mvn test command, I keep getting an issue with IosDriver:

"WARNING: The server did not provide any stacktrace information)(..)
  testLocation(com.saucelabs.appium.SimpleTest)
  testClear(com.saucelabs.appium.SimpleTest): A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.2.1. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead."

I was curious if somebody could link me to stable Java code for iOS testing so I can debug whether the issue is with my machine, or the project?

Thanks.

Hi,

Can you try adding an additional capability - automationName property to your DesiredCapabilities code and see if it works -

capabilities.setCapability("automationName", "XCUITest");

I attempted to add that to the tests, but now I get:

"testSize(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSize(com.saucelabs.appium.UICatalogTest)
  testScreenshot(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testScreenshot(com.saucelabs.appium.UICatalogTest)
  testAlertInteraction(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testAlertInteraction(com.saucelabs.appium.UICatalogTest)
  test_location(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  test_location(com.saucelabs.appium.UICatalogTest)
  testScroll(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testScroll(com.saucelabs.appium.UICatalogTest)
  testSlider(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSlider(com.saucelabs.appium.UICatalogTest)
  testSource(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSource(com.saucelabs.appium.UICatalogTest)
  testSessions(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSessions(com.saucelabs.appium.UICatalogTest)"

switch to appium 1.6.4-beta

I uninstall appium, and installed 1.6.4 beta, but I am still getting that error.

Here is some of the console log from appium 1.6.4:

  testFindElement(com.saucelabs.appium.UICatalogTest)
  testSize(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSize(com.saucelabs.appium.UICatalogTest)
  testScreenshot(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testScreenshot(com.saucelabs.appium.UICatalogTest)
  testAlertInteraction(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testAlertInteraction(com.saucelabs.appium.UICatalogTest)
  test_location(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  test_location(com.saucelabs.appium.UICatalogTest)
  testScroll(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testScroll(com.saucelabs.appium.UICatalogTest)
  testSlider(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSlider(com.saucelabs.appium.UICatalogTest)
  testSource(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSource(com.saucelabs.appium.UICatalogTest)
  testSessions(com.saucelabs.appium.UICatalogTest): Unable to create new remote session. desired capabilities = Capabilities [{app=/Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/../../../apps/UICatalog/build/release-iphonesimulator/UICatalog.app, platformVersion=9.3, automationName=XCUITest, platformName=iOS, deviceName=iPhone 6}], required capabilities = Capabilities [{}](..)
  testSessions(com.saucelabs.appium.UICatalogTest)

Tests run: 124, Failures: 0, Errors: 124, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:21 min
[INFO] Finished at: 2017-03-29T12:45:03-07:00
[INFO] Final Memory: 10M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project sauce_appium_junit: There are test failures.
[ERROR] 
[ERROR] Please refer to /Users/ptraynor/Desktop/sample-code-master/sample-code/examples/java/junit/target/surefire-reports for the individual test results.
[ERROR] -> [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/MojoFailureException

what it your java-client version for sure? hope latest one - v5.0.0-BETA6 ? or at least 5.X?

just in case mine are (i use many - you can remove most :slight_smile: e.g. ‘clearSystemFiles’ or ‘scaleFactor’):

Capabilities [{app=/Users/Aleksei/Downloads/test_clients/xxxx.app, noReset=true, clearSystemFiles=true, scaleFactor=0.5, startIWDP=true, version=, deviceName=iPhone 6s, iosInstallPause=200, fullReset=false, platform=MAC, wdaLaunchTimeout=60000, newCommandTimeout=120, platformVersion=10.2, automationName=XCuiTest, useNewWDA=true, browserName=, wdaConnectionTimeout=60000}]

I checked in the pom.XML, and it is using 5.0.0-BETA6.

Here is the entire pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.saucelabs</groupId>
	<artifactId>sauce_appium_junit</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>sauce_appium_junit</name>
	<description>Sample Appium tests using JUnit</description>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>5.0.0-BETA6</version>
		</dependency>
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
			<scope>test</scope>
		</dependency>
		<!-- Includes the Sauce JUnit helper libraries -->
		<dependency>
			<groupId>com.saucelabs</groupId>
			<artifactId>sauce_junit</artifactId>
			<version>2.1.23</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.2.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>
				<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>
	</repositories>


</project>

check one again your capabilities. as example of min - https://github.com/appium/java-client/blob/master/src/test/java/io/appium/java_client/ios/AppIOSTest.java

I tried running that APPIOSTest.java in the main java-client-master directory after I downloaded and unzipped it. I ran the command.

gradle clean -Dtest.single=AppIOSTest test

As it was specified in the repository. I got an error when running it.

Here is my console output:

the import org.openqa.selenium.logging.LoggingPreferences is never used
----------
251 problems (251 warnings)
:processResources
:classes
:compileTestJava
Note: /Users/ptraynor/Desktop/java-client-master/src/test/java/io/appium/java_client/android/AndroidDriverTest.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:processTestResources
:testClasses
:test FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':test'.
> Could not find matching test for pattern: AppIOSTest

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 5.541 secs

I am not sure if I am running the tests using the wrong command however, nothing is very clear. If anyone could clarify that for me that would help tremendously.

I also made sure to run appium-doctor, and it’s giving me all greens.