diff --git a/protractor-appium/README.md b/protractor-appium/README.md new file mode 100644 index 0000000..c0d86f1 --- /dev/null +++ b/protractor-appium/README.md @@ -0,0 +1,41 @@ +Appium setup: +============ + +1. For [MAC](https://github.com/isonic1/appium-workshop/blob/master/Appium%20Mac%20Installation%20Instructions.md) +2. For [WINDOWS](https://github.com/isonic1/appium-workshop/blob/master/Appium%20Windows%20Installation%20Instructions.md) + +Setup +===== + +``` +npm install +``` + +- Installs the Protractor and Appium node module + +Start Appium Server +==================== + +``` +npm start-appium +``` + + +Testing with JavaScript +======================= + +``` +npm test +``` + +- Runs the test in Chrome browser first followed by Hybrid application + +Files +===== + +``` +/protractor-appium/ + |- app + |- example-browser + |- example-hybridapps + ``` \ No newline at end of file diff --git a/protractor-appium/app/calculator.apk b/protractor-appium/app/calculator.apk new file mode 100644 index 0000000..6efafb8 Binary files /dev/null and b/protractor-appium/app/calculator.apk differ diff --git a/protractor-appium/environment.js b/protractor-appium/environment.js new file mode 100644 index 0000000..07dc03c --- /dev/null +++ b/protractor-appium/environment.js @@ -0,0 +1,8 @@ +var baseUrl = (process.env.BASE_URL || 'http://localhost:8080'); +var url = baseUrl; +if (baseUrl !== 'http://localhost:8080') { + url += '/protractor-cookbook'; +} else { + url = "http://10.0.2.2:8080"; // cannot access the demo app inside mobile browser using "http://localhost". refer https://developer.android.com/studio/run/emulator-networking. +} +exports.url = url; diff --git a/protractor-appium/example-browser/config.js b/protractor-appium/example-browser/config.js new file mode 100644 index 0000000..294f993 --- /dev/null +++ b/protractor-appium/example-browser/config.js @@ -0,0 +1,15 @@ +var env = require('../environment'); + +exports.config = { + specs: ["../spec.js"], + seleniumAddress : "http://0.0.0.0:4723/wd/hub", + capabilities : { + deviceName : 'emulator-5554', // replace it with your device name + platformName : 'Android', + browserName : 'Chrome', + noReset : true, + }, + onPrepare :function () { + browser.get(env.url + "/ng1/calculator"); + } +}; \ No newline at end of file diff --git a/protractor-appium/example-hybridapps/config.js b/protractor-appium/example-hybridapps/config.js new file mode 100644 index 0000000..fc73a1f --- /dev/null +++ b/protractor-appium/example-hybridapps/config.js @@ -0,0 +1,15 @@ +var env = require('../environment'); + +exports.config = { + specs: ["../spec.js"], + seleniumAddress : "http://0.0.0.0:4723/wd/hub", + capabilities : { + deviceName : 'emulator-5554', // replace it with your device name + platformName : 'Android', + autoWebview : true, + autoWebviewTimeout: 10000, + autoAcceptAlerts: 'true', + app : __dirname+"/../app/calculator.apk", + browserName : '', + }, +}; \ No newline at end of file diff --git a/protractor-appium/package.json b/protractor-appium/package.json new file mode 100644 index 0000000..bc127af --- /dev/null +++ b/protractor-appium/package.json @@ -0,0 +1,19 @@ +{ + "name": "protractor-appium-hybridapps", + "version": "1.0.0", + "description": "a protractor with appium example", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "start-appium": "appium", + "test": "protractor example-browser/config.js && protractor example-hybridapps/config.js" + }, + "author": "Sudharsan Selvaraj (https://github.com/sudharsan-selvaraj/)", + "license": "ISC", + "dependencies": { + "appium": "^1.8.0", + "protractor": "^5.3.1" + } +} diff --git a/protractor-appium/spec.js b/protractor-appium/spec.js new file mode 100644 index 0000000..8af99b8 --- /dev/null +++ b/protractor-appium/spec.js @@ -0,0 +1,48 @@ + +describe('slow calculator', () => { + + + it('should add numbers', () => { + element(by.id('gobutton')).click(); + + element(by.model('first')).sendKeys(4); + element(by.model('second')).sendKeys(5); + element(by.id('gobutton')).click(); + + expect(element(by.binding('latest')).getText()).toEqual('9'); + }); + + describe('memory', () => { + var first, second, goButton; + beforeEach(function () { + browser.driver.navigate().refresh(); + first = element(by.model('first')); + second = element(by.model('second')); + goButton = element(by.id('gobutton')); + }); + + it('should start out with an empty memory', () => { + var memory = + element.all(by.repeater('result in memory')); + + expect(memory.count()).toEqual(0); + }); + + it('should fill the memory with past results', () => { + first.sendKeys(1); + second.sendKeys(1); + goButton.click(); + + first.sendKeys(10); + second.sendKeys(20); + goButton.click(); + + var memory = element.all(by.repeater('result in memory').column('result.value')); + memory.then((arr) => { + expect(arr.length).toEqual(2); + expect(arr[0].getText()).toEqual('30'); // 10 + 20 = 30 + expect(arr[1].getText()).toEqual('2'); // 1 + 1 = 2 + }); + }); + }); +}); diff --git a/testapp/ng1/calculator/index.html b/testapp/ng1/calculator/index.html index 4a099d7..5f4abc9 100644 --- a/testapp/ng1/calculator/index.html +++ b/testapp/ng1/calculator/index.html @@ -7,7 +7,7 @@ Super Calculator -
+

Super Calculator