[ https://issues.apache.org/jira/browse/CB-10399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15190338#comment-15190338 ]
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_r55780673 --- Diff: appium-tests/android/android.spec.js --- @@ -0,0 +1,338 @@ +/*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 android --plugins cordova-plugin-contacts" + +'use strict'; + +var wdHelper = require('../helpers/wdHelper'); +var screenshotHelper = require('../helpers/screenshotHelper'); +var contactsHelper = require('../helpers/contactsHelper'); + +var STARTING_MESSAGE = 'Ready for action!'; +var MINUTE = 60 * 1000; +var DEFAULT_WEBVIEW_CONTEXT = 'WEBVIEW'; + +describe('Contacts Android', 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);'); + }) + .sleep(5000); + } + + function getDriver() { + driver = wdHelper.getDriver('Android'); + 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); + }) + .finally(done); + }, 5 * MINUTE); --- End diff -- Is there an expect in this spec? > 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: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org