[
https://issues.apache.org/jira/browse/CB-10399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15190327#comment-15190327
]
ASF GitHub Bot commented on CB-10399:
-------------------------------------
Github user dblotsky commented on a diff in the pull request:
https://github.com/apache/cordova-plugin-contacts/pull/101#discussion_r55780306
--- Diff: appium-tests/ios/ios.spec.js ---
@@ -0,0 +1,352 @@
+/*jshint node: true, jasmine: true */
+/*
+ *
+ * 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.
+ *
+*/
+
+// these tests are meant to be executed by Cordova Medic Appium runner
+// you can find it here: https://github.com/apache/cordova-medic/
+// it is not necessary to do a full CI setup to run these tests
+// just run "node cordova-medic/medic/medic.js appium --platform ios
--plugins cordova-plugin-contacts"
+
+'use strict';
+
+var wdHelper = require('../helpers/wdHelper');
+var screenshotHelper = require('../helpers/screenshotHelper');
+var contactsHelper = require('../helpers/contactsHelper');
+var unorm = global.unorm || require("unorm");
+
+var STARTING_MESSAGE = 'Ready for action!';
+var MINUTE = 60 * 1000;
+var DEFAULT_WEBVIEW_CONTEXT = 'WEBVIEW_1';
+
+describe('contacts tests iOS', function () {
+ var driver;
+ // the name of webview context, it will be changed to match needed
context if there are named ones:
+ var webviewContext = DEFAULT_WEBVIEW_CONTEXT;
+ // this indicates that there was a critical error and we should try to
recover:
+ var errorFlag = false;
+ // this indicates that we couldn't restore Appium session and should
fail fast:
+ var stopFlag = false;
+
+ function win() {
+ expect(true).toBe(true);
+ }
+
+ function fail(error) {
+ if (error === 'rethrow') {
+ throw error;
+ }
+ if (error && error.message) {
+ console.log('An error occured: ' + error.message);
+ if (error.stack) {
+ console.log(error.stack);
+ }
+ expect(true).toFailWithMessage(error.message);
+ } else if (error && typeof error === 'string') {
+ console.log('Failed expectation: ' + error);
+ expect(true).toFailWithMessage(error);
+ } else {
+ // no message provided :(
+ expect(true).toBe(false);
+ }
+ return screenshotHelper
+ .saveScreenshot(driver)
+ .finally(function() {
+ throw 'rethrow';
+ });
+ }
+
+ function enterTest() {
+ return driver
+ // trying to determine where we are
+ .context(webviewContext)
+ .fail(function (error) {
+ return fail(error);
+ })
+ .elementById('info')
+ .then(function () {
+ return driver; //we're already on the test screen
+ }, function () {
+ return driver
+ .elementById('middle')
+ .then(function () {
+ return driver
+ // we're on autotests page, we should go to
start page
+ .execute('window.location = "../index.html"')
+ .sleep(5000)
+ .fail(function () {
+ errorFlag = true;
+ throw 'Couldn\'t find start page.';
+ });
+ }, function () {
+ return; // no-op
+ })
+ // unknown starting page: no 'info' div
+ // adding it manually
+ .execute('var info = document.createElement("div"); ' +
+ 'info.id = "info"; ' +
+ 'document.body.appendChild(info);');
+ })
+ .then(win, fail)
+ .sleep(5000);
+ }
+
+ function getDriver() {
+ driver = wdHelper.getDriver('iOS');
+ return driver;
+ }
+
+ function checkStopFlag() {
+ if (stopFlag) {
+ fail('Something went wrong: the stopFlag is on. Please see the
log for more details.');
+ }
+ return stopFlag;
+ }
+
+ beforeEach(function () {
+ jasmine.addMatchers({
+ toFailWithMessage : function () {
+ return {
+ compare: function (actual, msg) {
+ console.log('Failing with message: ' + msg);
+ var result = {
+ pass: false,
+ message: msg
+ };
+ // status 6 means that we've lost the session
+ // status 7 means that Appium couldn't find an
element
+ // both these statuses mean that the test has
failed but
+ // we should try to recreate the session for the
following tests
+ if (msg.indexOf('Error response status: 6') >= 0 ||
+ msg.indexOf('Error response status: 7') >= 0) {
+ errorFlag = true;
+ }
+ return result;
+ }
+ };
+ },
+ toContain: function () {
+ return {
+ compare: function (actual, expected) {
+ var result = {
+ pass: true,
+ message: ''
+ };
+ if (actual.indexOf(expected) < 0) {
+ result.pass = false;
+ result.message = 'Expected ' + actual + ' to
contain ' + expected;
+ }
+ return result;
+ }
+ };
+ }
+ });
+ });
+
+ it('camera.ui.util configuring driver and starting a session',
function (done) {
+ stopFlag = true; // just in case of timeout
+ getDriver().then(function () {
+ stopFlag = false;
+ }, function (error) {
+ return fail(error);
+ })
+ .then(function() {
+ return driver.contexts();
+ })
+ .finally(done);
+ }, 5 * MINUTE);
+
+ it('camera.ui.util determine webview context name', function (done) {
+ return driver
+ .contexts()
+ .then(function onSuccess (contexts) {
+ var found = false;
+ var i;
+ // take the last named context
+ for (i = 0; i < contexts.length; i++) {
+ if (contexts[i].indexOf('mobilespec') >= 0) {
+ webviewContext = contexts[i];
+ found = true;
+ }
+ }
+ // if no named context is found then take the last webview
context
+ if (!found) {
+ for (i = 0; i < contexts.length ; i++) {
+ if (contexts[i].indexOf('WEBVIEW') >= 0) {
+ webviewContext = contexts[i];
+ }
+ }
+ }
+ console.log('Webview context is ' + webviewContext);
+ done();
+ }, function onError (err) {
+ console.log(err);
+ })
+ .finally(done);
+ }, MINUTE);
+
+ describe('specs', function () {
--- End diff --
Which specs?
> Implement Appium tests for Contacts plugin
> ------------------------------------------
>
> Key: CB-10399
> URL: https://issues.apache.org/jira/browse/CB-10399
> Project: Apache Cordova
> Issue Type: Task
> Components: Medic, Plugin Contacts
> Reporter: Alexander Sorokin
> Assignee: Alexander Sorokin
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]