Return-Path: X-Original-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 98BB09280 for ; Fri, 15 Jun 2012 17:17:42 +0000 (UTC) Received: (qmail 48286 invoked by uid 500); 15 Jun 2012 17:17:42 -0000 Delivered-To: apmail-incubator-callback-commits-archive@incubator.apache.org Received: (qmail 48241 invoked by uid 500); 15 Jun 2012 17:17:41 -0000 Mailing-List: contact callback-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: callback-dev@incubator.apache.org Delivered-To: mailing list callback-commits@incubator.apache.org Received: (qmail 48219 invoked by uid 99); 15 Jun 2012 17:17:41 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Jun 2012 17:17:41 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 80E7411B16; Fri, 15 Jun 2012 17:17:41 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: bowserj@apache.org To: callback-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [4/4] android commit: Adding the WebDriver Tests Message-Id: <20120615171741.80E7411B16@tyr.zones.apache.org> Date: Fri, 15 Jun 2012 17:17:41 +0000 (UTC) Adding the WebDriver Tests Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/dbe65f1d Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/dbe65f1d Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/dbe65f1d Branch: refs/heads/master Commit: dbe65f1d3560a73ea133eb38cc6e49b3277a9c54 Parents: cdaf620 Author: Joe Bowser Authored: Thu Jun 14 13:35:48 2012 -0700 Committer: Joe Bowser Committed: Thu Jun 14 13:35:48 2012 -0700 ---------------------------------------------------------------------- .../apache/cordova/test/CordovaDriverAction.java | 78 +++++++++++++ .../apache/cordova/test/CordovaViewFactory.java | 37 ++++++ .../src/org/apache/cordova/test/WebDriverTest.java | 90 +++++++++++++++ 3 files changed, 205 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/dbe65f1d/test/src/org/apache/cordova/test/CordovaDriverAction.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaDriverAction.java b/test/src/org/apache/cordova/test/CordovaDriverAction.java new file mode 100644 index 0000000..11a11f6 --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaDriverAction.java @@ -0,0 +1,78 @@ +/* + 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.cordova.test; + +import org.apache.cordova.api.CordovaInterface; +import org.apache.cordova.api.IPlugin; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; + + +public class CordovaDriverAction extends Activity implements CordovaInterface { + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public void bindBackButton(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void cancelLoadUrl() { + // TODO Auto-generated method stub + + } + + @Override + public Activity getActivity() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isBackButtonBound() { + // TODO Auto-generated method stub + return false; + } + + @Override + public Object onMessage(String arg0, Object arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setActivityResultCallback(IPlugin arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void startActivityForResult(IPlugin arg0, Intent arg1, int arg2) { + // TODO Auto-generated method stub + + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/dbe65f1d/test/src/org/apache/cordova/test/CordovaViewFactory.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaViewFactory.java b/test/src/org/apache/cordova/test/CordovaViewFactory.java new file mode 100644 index 0000000..99686f2 --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaViewFactory.java @@ -0,0 +1,37 @@ +/* + 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.cordova.test; + +import org.openqa.selenium.android.library.ViewAdapter; +import org.openqa.selenium.android.library.ViewFactory; + +import org.apache.cordova.CordovaWebView; + +import android.app.Activity; +import android.webkit.WebView; + +public class CordovaViewFactory implements ViewFactory { + + public ViewAdapter createNewView(Activity arg0) { + // TODO Auto-generated method stub + return new ViewAdapter("org.apache.cordova.CordovaWebView", new CordovaWebView(arg0)); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/dbe65f1d/test/src/org/apache/cordova/test/WebDriverTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/WebDriverTest.java b/test/src/org/apache/cordova/test/WebDriverTest.java new file mode 100644 index 0000000..6b39e08 --- /dev/null +++ b/test/src/org/apache/cordova/test/WebDriverTest.java @@ -0,0 +1,90 @@ +/* + 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.cordova.test; + +import org.apache.cordova.CordovaWebViewClient; +import org.apache.cordova.CordovaWebView; +import org.apache.cordova.CordovaChromeClient; + +import org.apache.cordova.test.CordovaViewFactory; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.android.library.AndroidWebDriver; +import org.openqa.selenium.android.library.ChromeClientWrapper; +import org.openqa.selenium.android.library.ViewClientWrapper; + +import android.test.ActivityInstrumentationTestCase2; + +public class WebDriverTest extends ActivityInstrumentationTestCase2 { + + private static final long TIMEOUT = 5000; + private CordovaDriverAction testActivity; + private CordovaWebView testView; + private CordovaViewFactory viewFactory; + private CordovaChromeClient appCode; + private CordovaWebViewClient viewHandler; + private AndroidWebDriver testDriver; + private ViewClientWrapper viewClientWrapper; + private ChromeClientWrapper chromeClientWrapper; + + public WebDriverTest() { + super("com.phonegap.test.activities",CordovaDriverAction.class); + } + + protected void setUp() throws Exception{ + super.setUp(); + + testActivity = this.getActivity(); + viewFactory = new CordovaViewFactory(); + appCode = new CordovaChromeClient(testActivity); + viewHandler = new CordovaWebViewClient(testActivity); + viewClientWrapper = new ViewClientWrapper("org.apache.cordova.CordovaWebViewClient", viewHandler); + chromeClientWrapper = new ChromeClientWrapper("org.apache.cordova.CordovaChromeClient", appCode); + testDriver = new AndroidWebDriver(testActivity, viewFactory, viewClientWrapper, chromeClientWrapper); + testView = (CordovaWebView) testDriver.getWebView(); + viewHandler.setWebView(testView); + appCode.setWebView(testView); + } + + public void testPreconditions(){ + assertNotNull(testView); + } + + public void testWebLoad() { + testDriver.get("file:///android_asset/www/index.html"); + sleep(); + String url = testView.getUrl(); + //Check the sanity! + boolean result = url.equals("file:///android_asset/www/index.html"); + assertTrue(result); + WebElement platformSpan = testDriver.findElement(By.id("platform")); + String text = platformSpan.getText(); + assertTrue(text.equals("Android")); + } + + + private void sleep() { + try { + Thread.sleep(TIMEOUT); + } catch (InterruptedException e) { + fail("Unexpected Timeout"); + } + } +}