How to run maven command in AWS Device Farm

shay n :

I am trying to run my java mobile project in device farm using maven. When I run this command on my local machine in the right directory it works:

 mvn test -D "cucumber.options="src/test/java/cucumber/features" --glue 
cucumber.steps --tags @InstallApp"

I put this command on the yaml file in the aws device farm but it doesn't work. This is the error I get:

        [DeviceFarm] echo "Start Appium TestNG test"
     Start Appium TestNG test
    [DeviceFarm] mvn test -D 
    "cucumber.options="src/test/java/cucumber/features" --glue 
cucumber.steps 
    --tags @InstallApp"
    [INFO] Scanning for projects...
    [INFO] BUILD FAILURE
    [ERROR] The goal you specified requires a project to execute but there 
     is 
     no POM in this directory (/tmp/scratchncneoU.scratch/test- 
 packageO6o8s7). 
  Please verify you invoked Maven from the correct directory. -> [Help 1]

How can I run this maven command in device farm? Where is the pom located there?

Thanks

After typing this command in the yaml file: [DeviceFarm] java -Dappium.screenshots.dir=$DEVICEFARM_SCREENSHOT_PATH -D"cucumber.options="classpath:features" --glue cucumber.steps --tags @InstallApp" org.testng.TestNG -testjar *-tests.jar -d $DEVICEFARM_LOG_DIR/test-output -verbose 10

I get an error of: Couldn't find the testng.xml in the jar file although I have this in my pom:

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  

What can it be?

jmp :

The mvn command fails because your deployment package doesn't contain the whole project. From the sound of things with the current deployment package you should be able to do what you want with this command:

- java -Dappium.screenshots.dir=$DEVICEFARM_SCREENSHOT_PATH -D"cucumber.options="src/test/java/cucumber/features" --glue cucumber.steps --tags @InstallApp" org.testng.TestNG -testjar *-tests.jar -d $DEVICEFARM_LOG_DIR/test-output -verbose 10

Otherwise, if you want to use maven you'll need to zip up the whole project and include it's pom.xml. So for example using the sample cucumber java tests

git clone https://github.com/aws-samples/aws-device-farm-appium-cucumber-tests-for-sample-app.git
zip -r deployment_package.zip aws-device-farm-appium-cucumber-tests-for-sample-app

Then you should be able to use maven in the testspec.yml file. For example, I could run the following command for the sample: mvn clean test after going to the project dir and then to get the results I had to export the target directory.

  test:
    commands:
      # Your test package is downloaded in $DEVICEFARM_TEST_PACKAGE_PATH so we first change directory to that path.
      - echo "Navigate to test package directory"
      - cd $DEVICEFARM_TEST_PACKAGE_PATH/aws-device-farm-appium-cucumber-tests-for-sample-app
      - mvn clean test
...
artifacts:
  # By default, Device Farm will collect your artifacts from following directories
  - $DEVICEFARM_TEST_PACKAGE_PATH/aws-device-farm-appium-cucumber-tests-for-sample-app/target
  - $DEVICEFARM_LOG_DIR

However, you'll need to upload the zip file as an APPIUM_NODE test type to avoid the test package parser there.

HTH

-James

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=163395&siteId=1