Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions appium.capabilities.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"android23.local": {
"platformName": "Android",
"platformVersion": "6.0",
"deviceName": "Emulator_Api23_Default",
"avd": "Emulator_Api23_Default",
"noReset": true
},
"android23": {
"platformName": "Android",
"platformVersion": "6.0",
"deviceName": "Android Emulator",
"appium-version": "1.7.1",
"noReset": true
},
"sim11iPhone6": {
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 6",
"appium-version": "1.7.1",
"app": ""
},
"sim103iPhone6": {
"browserName": "",
"appium-version": "1.7.1",
"platformName": "iOS",
"platformVersion": "10.3",
"deviceName": "iPhone 6",
"app": ""
},
"sim10iPhone6": {
"platformName": "iOS",
"platformVersion": "10.0",
"deviceName": "iPhone 6",
"appium-version": "1.7.1",
"app": ""
}
}
2 changes: 2 additions & 0 deletions demo/e2e/config/mocha.opts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
--timeout 800000
--recursive e2e
9 changes: 9 additions & 0 deletions demo/e2e/setup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { startServer, stopServer } from "nativescript-dev-appium";

before("start server", async () => {
await startServer();
});

after("stop server", async () => {
await stopServer();
});
108 changes: 108 additions & 0 deletions demo/e2e/test.e2e.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import { AppiumDriver, createDriver, SearchOptions } from "nativescript-dev-appium";
import { isSauceLab, runType, capabilitiesName } from "nativescript-dev-appium/lib/parser";
import { expect } from "chai";

const isSauceRun = isSauceLab;
const isAndroid: string = runType.includes("android");

describe("Imagepicker", async function () {
const imagesFolderName = "Images";
const imagesFolderNameIos = "Camera Roll";
const doneButtonText = "Done";
let driver: AppiumDriver;

before(async () => {
driver = await createDriver();
driver.defaultWaitTime = 10000;
});

after(async () => {
if (isSauceRun) {
driver.sessionId().then(function (sessionId) {
console.log("Report: https://saucelabs.com/beta/tests/" + sessionId);
});
}
await driver.quit();
console.log("Driver quits!");
});

it("should pick one image", async function () {
const pickSingleButtonText = "Pick Single";
let confirmButtonText = isAndroid ? "Allow" : "OK";
let uploadPicVerification;
if (isAndroid) {
uploadPicVerification = isSauceRun ? "sauce_logo.png" : "pic1.jpeg";
} else {
uploadPicVerification = "IMG_0001.JPG";
}

const pickSingleButton = await driver.findElementByText(pickSingleButtonText, SearchOptions.contains);
await pickSingleButton.click();
const confirmButton = await driver.findElementByText(confirmButtonText);
await confirmButton.click();

if (isAndroid) {
if (isSauceRun) {
const imagesFolder = await driver.findElementByText(imagesFolderName);
await imagesFolder.click();
const downloadFolder = await driver.findElementByClassName(driver.locators.image);
await downloadFolder.click();
}
} else {
const cameraRollFolder = await driver.findElementByText(imagesFolderNameIos);
await cameraRollFolder.click();
}

const pickedImage = await driver.findElementByClassName(driver.locators.image);
await pickedImage.click();

if (!isAndroid) {
const doneButton = await driver.findElementByText(doneButtonText);
await doneButton.click();
}

const result = await driver.findElementByText(uploadPicVerification, SearchOptions.contains);
expect(result).to.exist;
});

it("should pick multiple images", async function () {
let openImagesButtonText = isAndroid ? "Sort by" : doneButtonText;
let uploadPicVerification;
if (isAndroid) {
uploadPicVerification = isSauceRun ? "sauce_logo_red.png" : "pic2.jpeg";
} else {
uploadPicVerification = "IMG_0001.JPG";
}
let uploadPicVerification2;
if (isAndroid) {
uploadPicVerification2 = isSauceRun ? "saucelabs_sauce.png" : "pic3.jpeg";
} else {
uploadPicVerification2 = "IMG_0002.JPG";
}
const pickMultipleButtonText = "Pick Multiple";
const pickMultipleButton = await driver.findElementByText(pickMultipleButtonText, SearchOptions.contains);
await pickMultipleButton.click();

if (!isAndroid) {
const cameraRollFolder = await driver.findElementByText(imagesFolderNameIos);
await cameraRollFolder.click();
}

const allImages = await driver.findElementsByClassName(driver.locators.image);

if (isAndroid) {
await allImages[8].hold(); //third image
await allImages[4].click(); //second image
} else {
await allImages[0].click(); //first image
await allImages[1].click(); //second image
}

const openImagesButton = await driver.findElementByText(openImagesButtonText, SearchOptions.contains);
await openImagesButton.click();
const img = await driver.findElementByText(uploadPicVerification, SearchOptions.contains);
expect(img).to.exist;
const img1 = await driver.findElementByText(uploadPicVerification2, SearchOptions.contains);
expect(img1).to.exist;
});
});
22 changes: 22 additions & 0 deletions demo/e2e/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"importHelpers": false,
"sourceMap":true,
"types": [
"node",
"mocha",
"chai"
],
"lib": [
"dom",
"es2015.core",
"es2015.iterable",
"es2016.array.include",
"es2015"
]
}
}
29 changes: 20 additions & 9 deletions demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,38 @@
"tns-core-modules": "^3.1.0"
},
"devDependencies": {
"@types/chai": "^4.0.2",
"@types/mocha": "^2.2.41",
"@types/node": "^7.0.5",
"awesome-typescript-loader": "~3.1.2",
"babel-traverse": "6.24.1",
"babel-types": "6.24.1",
"babylon": "6.16.1",
"chai": "~4.1.1",
"chai-as-promised": "~7.1.1",
"copy-webpack-plugin": "~4.0.1",
"extract-text-webpack-plugin": "~2.1.0",
"nativescript-css-loader": "~0.26.0",
"nativescript-dev-webpack": "^0.7.3",
"raw-loader": "~0.5.1",
"resolve-url-loader": "~2.0.2",
"webpack": "~3.2.0",
"webpack-sources": "~0.2.3",
"awesome-typescript-loader": "~3.1.2",
"filewalker": "0.1.2",
"jasmine-core": "^2.5.2",
"karma": "^1.3.0",
"karma-jasmine": "^1.0.2",
"karma-nativescript-launcher": "^0.4.0",
"lazy": "1.0.11",
"mocha": "~3.5.0",
"mocha-junit-reporter": "^1.13.0",
"mocha-multi": "^0.11.0",
"nativescript-css-loader": "~0.26.0",
"nativescript-dev-appium": "next",
"nativescript-dev-typescript": "libs",
"typescript": "~2.3.0",
"nativescript-dev-webpack": "^0.7.3",
"raw-loader": "~0.5.1",
"resolve-url-loader": "~2.0.2",
"tns-platform-declarations": "^3.0.0",
"tslint": "~5.4.3",
"typescript": "~2.5.0",
"webpack": "~3.2.0",
"webpack-bundle-analyzer": "^2.8.2",
"tns-platform-declarations": "^3.0.0"
"webpack-sources": "~0.2.3"
},
"scripts": {
"build.plugin": "cd ../src && npm run build",
Expand All @@ -47,6 +56,8 @@
"ns-bundle": "ns-bundle",
"publish-ios-bundle": "npm run ns-bundle --ios --publish-app",
"generate-android-snapshot": "generate-android-snapshot --targetArchs arm,arm64,ia32 --install",
"e2e": "tsc -p e2e && mocha --opts ./e2e/config/mocha.opts",
"compile-tests": "tsc -p e2e --watch",
"start-android-bundle": "npm run ns-bundle --android --run-app --uglify --snapshot",
"start-ios-bundle": "npm run ns-bundle --ios --run-app --uglify",
"build-android-bundle": "npm run ns-bundle --android --build-app --uglify --snapshot",
Expand Down