1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-10-31 15:12:25 +00:00

Cameracapture: Updated to uiautomator2

This commit is contained in:
Marc Bonnici
2017-05-18 16:16:01 +01:00
parent 1809def83f
commit 6dab2b48ab
15 changed files with 400 additions and 160 deletions

View File

@@ -0,0 +1,35 @@
apply plugin: 'com.android.application'
def packageName = "com.arm.wlauto.uiauto.cameracapture"
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "${packageName}"
minSdkVersion 18
targetSdkVersion 25
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = file("$project.buildDir/apk/${packageName}.apk")
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support.test:runner:0.5'
compile 'com.android.support.test:rules:0.5'
compile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
compile(name: 'uiauto', ext:'aar')
}
repositories {
flatDir {
dirs 'libs'
}
}

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arm.wlauto.uiauto.cameracapture"
android:versionCode="1"
android:versionName="1.0"
android:exported="true">>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<instrumentation
android:name="android.support.test.runner.AndroidJUnitRunner"
android:targetPackage="${applicationId}"/>
</manifest>

View File

@@ -0,0 +1,130 @@
/* Copyright 2013-2015 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.arm.wlauto.uiauto.cameracapture;
import android.os.Bundle;
import android.support.test.runner.AndroidJUnit4;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiSelector;
import com.arm.wlauto.uiauto.BaseUiAutomation;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
public class UiAutomation extends BaseUiAutomation {
public static String TAG = "cameracapture";
int timeDurationBetweenEachCapture = 0;
int sleepTime = 2;
int iterations = 0;
int api = 0;
Integer[] version = {0,0,0};
@Test
public void runUiAutomation() throws Exception {
initialize_instrumentation();
Bundle parameters = getParams();
if (parameters.size() > 0) {
iterations = parameters.getInt("no_of_captures");
timeDurationBetweenEachCapture = parameters.getInt("time_between_captures");
api = parameters.getInt("api_level");
String versionString = parameters.getString("version");
version = splitVersion(versionString);
}
// Pre Android M UI
if(api < 23)
takePhotosAosp();
else
{
if(compareVersions(version, new Integer[]{3,2,0}) >= 0)
takePhotosGoogleV3_2();
else
takePhotosGoogle();
}
}
private void takePhotosAosp() throws Exception
{
// switch to camera capture mode
UiObject clickModes = mDevice.findObject(new UiSelector().descriptionMatches("Camera, video or panorama selector"));
clickModes.click();
sleep(sleepTime);
UiObject changeModeToCapture = mDevice.findObject(new UiSelector().descriptionMatches("Switch to photo"));
changeModeToCapture.click();
sleep(sleepTime);
// click to capture photos
UiObject clickCaptureButton = mDevice.findObject(new UiSelector().descriptionMatches("Shutter button"));
for (int i = 0; i < iterations; i++) {
clickCaptureButton.longClick();
sleep(timeDurationBetweenEachCapture);
}
mDevice.pressBack();
}
private void takePhotosGoogleV3_2() throws Exception
{
// clear tutorial if needed
UiObject tutorialText = mDevice.findObject(new UiSelector().resourceId("com.android.camera2:id/photoVideoSwipeTutorialText"));
if (tutorialText.waitForExists(TimeUnit.SECONDS.toMillis(5))) {
tutorialText.swipeLeft(5);
sleep(sleepTime);
tutorialText.swipeRight(5);
}
// ensure we are in photo mode
UiObject viewFinder = mDevice.findObject(new UiSelector().resourceId("com.android.camera2:id/viewfinder_frame"));
viewFinder.swipeRight(5);
// click to capture photos
UiObject clickCaptureButton = mDevice.findObject(new UiSelector().resourceId("com.android.camera2:id/photo_video_button"));
for (int i = 0; i < iterations; i++) {
clickCaptureButton.longClick();
sleep(timeDurationBetweenEachCapture);
}
}
private void takePhotosGoogle() throws Exception
{
// open mode select menu
UiObject swipeScreen = mDevice.findObject(new UiSelector().resourceId("com.android.camera2:id/mode_options_overlay"));
swipeScreen.swipeRight(5);
// switch to video mode
UiObject changeModeToCapture = mDevice.findObject(new UiSelector().descriptionMatches("Switch to Camera Mode"));
changeModeToCapture.click();
sleep(sleepTime);
// click to capture photos
UiObject clickCaptureButton = mDevice.findObject(new UiSelector().descriptionMatches("Shutter"));
for (int i = 0; i < iterations; i++) {
clickCaptureButton.longClick();
sleep(timeDurationBetweenEachCapture);
}
}
}