blob: 01211c3a4a52a26b552f1eade5edc670ef17afcb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.weex.util;
import android.app.Activity;
import android.app.Instrumentation;
import android.content.Intent;
import android.test.ActivityInstrumentationTestCase2;
import android.test.TouchUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import org.apache.weex.R;
import org.apache.weex.WXPageActivity;
import org.apache.weex.WeappJsBaseTestCase;
import org.apache.weex.constants.Constants;
import com.taobao.weex.ui.view.WXTextView;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeMap;
/**
* Created by admin on 16/7/20.
*/
public class TestFlow extends ActivityInstrumentationTestCase2<WXPageActivity>{
private WeappJsBaseTestCase weappApplication;
private Instrumentation mInstrumentation;
private WXPageActivity waTestPageActivity;
private final static String TAG = "TestFlow";
private ViewGroup mViewGroup;
private ArrayList<View> mCaseListIndexView;
private WXPageActivity activity2;
private TreeMap testMap = new TreeMap();
private int stepCountFlag = 0;
private int allRoundFound = 5;
int maxStep = 16;
int topCount = 10;
private boolean childCaseFound = false;
public TestFlow(Class<WXPageActivity> activityClass) {
super(activityClass);
}
/**
* get tc list
* @throws InterruptedException
*/
@Before
public void setUp() throws InterruptedException {
setActivityInitialTouchMode(false);
weappApplication = new WeappJsBaseTestCase();
mInstrumentation = getInstrumentation();
if(mInstrumentation == null){
mInstrumentation = this.getInstrumentation();
}
Intent intent = new Intent();
intent.putExtra("bundleUrl", Constants.BUNDLE_URL);
launchActivityWithIntent("org.apache.weex", WXPageActivity.class, intent);
waTestPageActivity = getActivity();
Log.e(TAG, "activity1=" + waTestPageActivity.toString());
Thread.sleep(3000);
mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container);
setViewGroup(mViewGroup);
// 根据TC 获取TC 列表,默认“"TC_"”
mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "AG_");
// addAllTargetView("AG_");
Thread.sleep(1000);
}
/**
* firstTCChildInCompnnet item
* like "TC_AHref"
*
* map
* {"testComponet" : "TC_AHref",
* "testChildCaseInit": "TC_AHref_Event"
* "Step1" : "Hello Weex"
* "Step2" : "Hello Weex2"
* "Step3" : "Hello Weex3"
* }
*
*/
@Test
public void testByTestMap() {
for (final View caseView : mCaseListIndexView) {
String caseViewName = ((WXTextView) caseView).getText().toString();
String testComponet = (String)getTestMap().get("testComponet");
Log.e(TAG, "caseViewName==" + caseViewName + "==testComponet==" + testComponet);
if (caseViewName.equals(testComponet)) {
final WXTextView inputView = (WXTextView) caseView;
if(inputView.getVisibility()== View.VISIBLE){
Log.e(TAG, "Child Case Found!!");
childCaseFound = true;
}else{
Log.e(TAG, "上下滑动一圈都没有找到!!");
while(allRoundFound >0 && inputView.getVisibility()== View.INVISIBLE){
findChildCase(inputView);
allRoundFound --;
}
}
mInstrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
inputView.requestFocus();
inputView.performClick();
}
});
sleep(1000);
setActivity(WXPageActivity.wxPageActivityInstance);
Activity activity2 = getActivity();
Log.e(TAG, "activity2 = " + activity2.toString());
ViewGroup myGroup = (ViewGroup) (activity2.findViewById(R.id.container));
Log.e(TAG, myGroup.toString());
String childCaseName = (String)testMap.get("testChildCaseInit");
Log.e(TAG, "testChildCaseInit to find==" + childCaseName);
ArrayList<View> inputListView = new ArrayList<View>();
inputListView = ViewUtil.findViewWithText(myGroup,
childCaseName);
sleep(1000);
// View scrollableView = ViewUtil.getFirstChildScrollableView(myGroup);
int findCount = 0;
while(inputListView.size() == 0 ){
// TouchUtils.dragQuarterScreenUp(this, this.getActivity());
// sleep(2000);
if(findCount< maxStep){
Log.e(TAG, "inputListView size=" + inputListView.size()+"," + "findCount=" + findCount);
TouchUtils.dragQuarterScreenUp(this, this.getActivity());
sleep(1000);
myGroup = (ViewGroup) (activity2.findViewById(R.id.container));
inputListView = ViewUtil.findViewWithText(myGroup,
childCaseName);
sleep(1000);
findCount ++ ;
}else {
while(topCount>0){
if(inputListView.size() == 0){
TouchUtils.dragQuarterScreenDown(this, this.getActivity());
sleep(1000);
myGroup = (ViewGroup) (activity2.findViewById(R.id.container));
inputListView = ViewUtil.findViewWithText(myGroup,
childCaseName);
sleep(1000);
}
topCount --;
}
assertNotSame("Child Case Not Found!!",0 ,inputListView.size());
break;
}
}
// else{
// Log.e(TAG, "inputListView size==" +
// inputListView.size() + "findCount=="+findCount);
//
// }
if (inputListView.size() != 0) {
final WXTextView inputTypeView = (WXTextView) inputListView.get(0);
stepCountFlag ++;
mInstrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
Log.e(TAG, "find veiw text=" + inputTypeView.getText().toString());
inputTypeView.requestFocus();
inputTypeView.performClick();
Log.e(TAG, "child clcik!");
}
});
sleep(1000);
}
TreeMap testStepMap = new TreeMap();
testStepMap = (TreeMap)testMap.clone();
testStepMap.remove("testComponet");
testStepMap.remove("testChildCaseInit");
Iterator iter = testStepMap.entrySet().iterator();
Log.e(TAG,"testStepMap keyset==" + testStepMap.keySet().toString());
while (iter.hasNext()) {
stepCountFlag ++;
TreeMap.Entry entry = (TreeMap.Entry) iter.next();
Object testStepkey = entry.getKey();
Log.e(TAG,"testStepMap testStepkey==" + testStepkey.toString());
Object testStepValue = entry.getValue();
Log.e(TAG,"testStepMap testStepValue==" + testStepValue.toString());
testStep(testStepkey, testStepValue);
}
break;
}
}
}
private void findChildCase(final WXTextView inputView ){
// handle if the view is INVISIBLE then scrollToBottom
// int maxStep = 10;
int scrollCount = 0;
if(inputView.getVisibility() == View.INVISIBLE){
while(scrollCount <maxStep){
TouchUtils.dragQuarterScreenUp(this, this.getActivity());
sleep(1000);
scrollCount ++;
}
}
// int topCount = 10;
if(inputView.getVisibility() == View.INVISIBLE){
while(topCount>0 && (inputView.getVisibility() == View.INVISIBLE)){
TouchUtils.dragQuarterScreenDown(this, this.getActivity());
sleep(1000);
topCount--;
}
}
}
public void afterTest(ArrayList viewList){
Log.e(TAG,"===do test after===");
sleep(2000);
}
public void testStep(Object testStepkey, Object testStepValue) {
TreeMap testSteps = (TreeMap) testStepValue;
Iterator iter = testSteps.entrySet().iterator();
Log.e(TAG,"testSteps keyset==" + testSteps.keySet().toString());
while (iter.hasNext()) {
TreeMap.Entry entry = (TreeMap.Entry) iter.next();
Object testStepAction = entry.getKey();
Log.e(TAG,"testSteps testStepAction==" + testStepAction.toString());
Object testStepActionValue = entry.getValue();
Log.e(TAG,"testSteps testStepActionValue==" + testStepActionValue.toString());
testAction(testStepAction, testStepActionValue);
}
}
private void testAction(Object testStepAction, Object testStepActionValue){
String action = (String)testStepAction;
String actionValue = (String)testStepActionValue;
if(action.equals("click")){
doClickAction(action, actionValue);
}
// sleep(1000);
if(action.equals("screenshot")){
doScreenShotAction(actionValue);
}
}
private void doScreenShotAction (String name){
screenShot(name);
sleep(1000);
}
private void doClickAction(String action, String actionValue){
setActivity(WXPageActivity.wxPageActivityInstance);
Activity activity2 = getActivity();
Log.e(TAG, "activity2 = " + activity2.toString());
ViewGroup myGroup = (ViewGroup) (activity2.findViewById(R.id.container));
ArrayList<View> inputListView11 = new ArrayList<View>();
sleep(2000);
inputListView11 = ViewUtil.getAllChildViews(myGroup);
for (View view : inputListView11) {
if (view instanceof WXTextView) {
String text = ((WXTextView) view).getText().toString();
Log.e(TAG, " doClickAction text===" + text);
if (text.contains(actionValue)) {
float viewY= view.getY();
float viewX = view.getX();
Log.e(TAG,"viewY==" + viewY);
Log.e(TAG,"viewX==" + viewX);
final View clickView = view;
mInstrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
Log.e(TAG, "find veiw text=" + ((WXTextView)clickView).getText().toString());
clickView.requestFocus();
clickView.performClick();
Log.e(TAG, "child clcik!");
}
});
// if (view instanceof EditText){
// view.performClick();
// }else {
// TouchUtils.clickView(this, view);
// }
sleep(1000);
Log.e(TAG,"clickView==" );
// final FrameLayout aView = (FrameLayout) view.getParent();
// TouchUtils.clickView(this, aView);
// Log.e(TAG,"clickaView==" );
//
// mInstrumentation.runOnMainSync(new Runnable() {
// @Override
// public void run() {
// aView.requestFocus();
// aView.performClick();
// Log.e(TAG, "do click ");
//
// }
// });
break;
}
}
}
}
public void setViewGroup(ViewGroup viewGroup) {
this.mViewGroup = viewGroup;
}
/**
* sleep
*/
public void sleep(long time){
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* snapshot
*/
public void screenShot(String shotName) {
try {
ScreenShot.shoot(getActivity(), shotName);
} catch (IOException e) {
e.printStackTrace();
}
}
public void setTestMap(TreeMap testStepMap) {
this.testMap = testStepMap;
}
public TreeMap getTestMap(){
return testMap;
}
/**
*
*/
public void setUpToFindComponet(String targert){
int max = 60;
int count = 0;
while(mCaseListIndexView.size() == 0){
if (count < max){
TouchUtils.dragQuarterScreenUp(this, this.getActivity());
mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container);
mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, targert);
count ++;
}
else{
break;
}
}
}
public void addAllTargetView(String target){
int max = 6;
int count =0 ;
while (count < max){
TouchUtils.dragQuarterScreenUp(this, this.getActivity());
sleep(500);
mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container);
mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, target);
mCaseListIndexView.addAll(mCaseListIndexView);
count ++;
}
}
}