diff --git a/.travis.yml b/.travis.yml index 4e82455..c857638 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,7 +44,7 @@ matrix: before_script: pod repo update script: - cd src && npm run build - - cd ../demo && npm i && tns build ios --bundle --env.uglify --copy-to "./outputs/demo.app" + - cd ../demo && npm i && tns build ios --env.uglify --copy-to "./outputs/demo.app" - cd $IOS_PACKAGE_FOLDER_JS && zip -r $IOS_PACKAGE_JS demo.app - "curl -u $SAUCE_USER:$SAUCE_KEY -X POST -H 'Content-Type: application/octet-stream' $IOS_SAUCE_STORAGE/$IOS_PACKAGE_JS?overwrite=true --data-binary @$IOS_PACKAGE_FOLDER_JS/$IOS_PACKAGE_JS" - os: osx @@ -58,7 +58,7 @@ matrix: before_script: pod repo update script: - cd src && npm run build - - cd ../demo-vue && npm i && tns build ios --bundle --env.uglify --copy-to "./outputs/demovue.app" + - cd ../demo-vue && npm i && tns build ios --env.uglify --copy-to "./outputs/demovue.app" - cd $IOS_PACKAGE_FOLDER_VUE && zip -r $IOS_PACKAGE_VUE demovue.app - "curl -u $SAUCE_USER:$SAUCE_KEY -X POST -H 'Content-Type: application/octet-stream' $IOS_SAUCE_STORAGE/$IOS_PACKAGE_VUE?overwrite=true --data-binary @$IOS_PACKAGE_FOLDER_VUE/$IOS_PACKAGE_VUE" - os: osx @@ -73,7 +73,7 @@ matrix: script: - cd src && npm run build && npm pack - cd ../demo-angular && tns plugin add ../src/*.tgz - - npm i && tns build ios --bundle --env.uglify --env.aot --copy-to "./outputs/demoangular.app" + - npm i && tns build ios --env.uglify --env.aot --copy-to "./outputs/demoangular.app" - cd $IOS_PACKAGE_FOLDER_NG && zip -r $IOS_PACKAGE_NG demoangular.app - "curl -u $SAUCE_USER:$SAUCE_KEY -X POST -H 'Content-Type: application/octet-stream' $IOS_SAUCE_STORAGE/$IOS_PACKAGE_NG?overwrite=true --data-binary @$IOS_PACKAGE_FOLDER_NG/$IOS_PACKAGE_NG" - language: android @@ -86,7 +86,7 @@ matrix: before_install: nvm install 10 script: - cd src && npm run build - - cd ../demo && npm i && tns build android --bundle --env.uglify --env.snapshot --copy-to "./outputs/app-debug.apk" + - cd ../demo && npm i && tns build android --env.uglify --env.snapshot --copy-to "./outputs/app-debug.apk" - "curl -u $SAUCE_USER:$SAUCE_KEY -X POST -H 'Content-Type: application/octet-stream' $ANDROID_SAUCE_STORAGE/$ANDROID_PACKAGE_JS?overwrite=true --data-binary @$ANDROID_PACKAGE_FOLDER_JS/app-debug.apk" - language: android os: linux @@ -98,7 +98,7 @@ matrix: before_install: nvm install 10 script: - cd src && npm run build - - cd ../demo-vue && npm i && tns build android --bundle --env.uglify --copy-to "./outputs/app-debug.apk" + - cd ../demo-vue && npm i && tns build android --env.uglify --copy-to "./outputs/app-debug.apk" - "curl -u $SAUCE_USER:$SAUCE_KEY -X POST -H 'Content-Type: application/octet-stream' $ANDROID_SAUCE_STORAGE/$ANDROID_PACKAGE_VUE?overwrite=true --data-binary @$ANDROID_PACKAGE_FOLDER_VUE/app-debug.apk" - language: android os: linux @@ -112,79 +112,71 @@ matrix: - cd src && npm run build - cd ../publish && sh pack.sh - cd ../demo-angular && tns plugin add ../publish/package/*.tgz - - npm i && tns build android --bundle --env.uglify --env.snapshot --env.aot --copy-to "./outputs/app-debug.apk" + - npm i && tns build android --env.uglify --env.snapshot --env.aot --copy-to "./outputs/app-debug.apk" - "curl -u $SAUCE_USER:$SAUCE_KEY -X POST -H 'Content-Type: application/octet-stream' $ANDROID_SAUCE_STORAGE/$ANDROID_PACKAGE_NG?overwrite=true --data-binary @$ANDROID_PACKAGE_FOLDER_NG/app-debug.apk" - - language: android + - stage: "UI Tests" + env: + - Android="24" + - Type="Angular" + language: node_js os: linux - dist: trusty + node_js: "10" + script: + - npm i -g appium + - cd tests && npm i + - travis_wait travis_retry npm run e2e -- --runType android24 --sauceLab --appPath $ANDROID_PACKAGE_NG + - os: linux env: - - BuildAndroid="28" + - Android="24" - Type="VanillaJS" - - jdk: oraclejdk8 - before_install: nvm install 10 - script: - - cd src && npm run build - - cd ../demo && tns build android - - language: android + language: node_js os: linux - dist: trusty - env: - - BuildAndroid="28" - - Type="Angular" - - jdk: oraclejdk8 - before_install: nvm install 10 + node_js: "10" script: - - cd src && npm run build - - cd ../demo-angular && tns build android - - os: osx + - npm i -g appium + - cd tests && npm i + - travis_wait travis_retry npm run e2e -- --runType android24 --sauceLab --appPath $ANDROID_PACKAGE_JS + - os: linux env: - - BuildiOS="12.0" - - Xcode="10.0" - - Type="VanillaJS" - osx_image: xcode10.2 + - Android="24" + - Type="VueJS" language: node_js + os: linux node_js: "10" - jdk: oraclejdk8 - before_script: pod repo update script: - - cd src && npm run build - - cd ../demo && tns build ios --bundle --env.uglify - - os: osx + - npm i -g appium + - cd tests && npm i + - travis_wait travis_retry npm run e2e -- --runType android24 --sauceLab --appPath $ANDROID_PACKAGE_VUE + - os: linux env: - - BuildiOS="12.0" - - Xcode="10.0" + - iOS="12.0" - Type="Angular" - osx_image: xcode10.2 language: node_js node_js: "10" - jdk: oraclejdk8 - before_script: pod repo update script: - - cd src && npm run build - - cd ../demo-angular && tns build ios - - stage: "UI Tests" + - npm i -g appium + - cd tests && npm i + - travis_wait travis_retry npm run e2e -- --runType sim.iPhoneX --sauceLab --appPath $IOS_PACKAGE_NG + - os: linux env: - - Android="24" - - Type="Angular" + - iOS="12.0" + - Type="VueJS" language: node_js - os: linux node_js: "10" script: - npm i -g appium - - cd demo-angular && npm i - - travis_wait travis_retry npm run e2e -- --runType android24 --sauceLab --appPath $ANDROID_PACKAGE_NG + - cd tests && npm i + - travis_wait travis_retry npm run e2e -- --runType sim.iPhoneX --sauceLab --appPath $IOS_PACKAGE_VUE - os: linux env: - iOS="12.0" - - Type="Angular" + - Type="VanillaJS" language: node_js node_js: "10" script: - npm i -g appium - - cd demo-angular && npm i - - travis_wait travis_retry npm run e2e -- --runType sim.iPhoneX --sauceLab --appPath $IOS_PACKAGE_NG + - cd tests && npm i + - travis_wait travis_retry npm run e2e -- --runType sim.iPhoneX --sauceLab --appPath $IOS_PACKAGE_JS android: components: diff --git a/demo-angular/package.json b/demo-angular/package.json index af13542..f755a79 100644 --- a/demo-angular/package.json +++ b/demo-angular/package.json @@ -38,14 +38,7 @@ "devDependencies": { "@angular/compiler-cli": "~8.0.0", "@ngtools/webpack": "~8.0.0", - "@types/chai": "~4.1.7", - "@types/mocha": "~5.2.5", "@types/node": "~10.12.18", - "mocha": "~5.2.0", - "mocha-junit-reporter": "~1.18.0", - "mocha-multi": "~1.0.1", - "mochawesome": "~3.1.1", - "nativescript-dev-appium": "~5.2.0", "nativescript-dev-webpack": "~1.0.1", "tslint": "~5.11.0", "typescript": "~3.4.5" diff --git a/demo-angular/e2e/config/appium.capabilities.json b/tests/e2e/config/appium.capabilities.json similarity index 100% rename from demo-angular/e2e/config/appium.capabilities.json rename to tests/e2e/config/appium.capabilities.json diff --git a/demo-angular/e2e/config/mocha.opts b/tests/e2e/config/mocha.opts similarity index 100% rename from demo-angular/e2e/config/mocha.opts rename to tests/e2e/config/mocha.opts diff --git a/demo-angular/e2e/helper.ts b/tests/e2e/helper.ts similarity index 100% rename from demo-angular/e2e/helper.ts rename to tests/e2e/helper.ts diff --git a/demo-angular/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssDatePicker.png b/tests/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssDatePicker.png similarity index 100% rename from demo-angular/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssDatePicker.png rename to tests/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssDatePicker.png diff --git a/demo-angular/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssTimePicker.png b/tests/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssTimePicker.png similarity index 100% rename from demo-angular/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssTimePicker.png rename to tests/e2e/resources/images/datetimepicker-ng-android/Android GoogleAPI Emulator/cssTimePicker.png diff --git a/demo-angular/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssDatePicker.png b/tests/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssDatePicker.png similarity index 100% rename from demo-angular/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssDatePicker.png rename to tests/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssDatePicker.png diff --git a/demo-angular/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssTimePicker.png b/tests/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssTimePicker.png similarity index 100% rename from demo-angular/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssTimePicker.png rename to tests/e2e/resources/images/datetimepicker-ng-ios/iPhone X/cssTimePicker.png diff --git a/demo-angular/e2e/setup.ts b/tests/e2e/setup.ts similarity index 100% rename from demo-angular/e2e/setup.ts rename to tests/e2e/setup.ts diff --git a/demo-angular/e2e/tests.e2e.ts b/tests/e2e/tests.e2e.ts similarity index 86% rename from demo-angular/e2e/tests.e2e.ts rename to tests/e2e/tests.e2e.ts index 8bd225e..21fefb4 100644 --- a/demo-angular/e2e/tests.e2e.ts +++ b/tests/e2e/tests.e2e.ts @@ -61,7 +61,7 @@ describe("DateTimePicker", () => { }); it("Should verify demo title", async () => { - const title = await driver.findElementByText("DateTimePicker Demo NG", SearchOptions.exact); + const title = await driver.findElementByText("DateTimePicker Demo", SearchOptions.contains); expect(title).to.exist; }); @@ -144,7 +144,7 @@ describe("DateTimePicker", () => { const dateString = day + "." + monthString + "." + year; console.log(dateString); const dateField = await driver.findElementByText(dateString); - expect(dateString).to.exist; + expect(dateField).to.exist; }); it("Should scroll to custom format and verify values", async () => { @@ -244,8 +244,8 @@ describe("DateTimePicker", () => { let rejectBtn; if(driver.isAndroid){ let buttons = await driver.findElementsByClassName("android.widget.Button"); - acceptBtn = buttons[5]; - rejectBtn = buttons[4]; + acceptBtn = buttons[buttons.length - 1]; + rejectBtn = buttons[buttons.length - 2]; } else{ acceptBtn = await driver.findElementByText("Bestätigen", SearchOptions.exact); @@ -256,7 +256,7 @@ describe("DateTimePicker", () => { expect(rejectBtn).to.exist; expect(title).to.exist; await acceptBtn.click(); - const dateField = await driver.findElementByText(time); + const dateField = await driver.findElementByText(time, SearchOptions.contains); expect(time).to.exist; }); @@ -283,36 +283,38 @@ describe("DateTimePicker", () => { await customButtonsTitle.click(); }); - it("Should tap button to select date and verify button text", async () => { - await scrollToElement(driver, "tap to select date and time", Direction.down); - let dateButton = await driver.findElementByText("tap to select date", SearchOptions.contains); - await dateButton.click(); - const date = await getPickerDate(driver); - await clickOkBtn(driver); - const pickerDate = new Date(date); - let day = pickerDate.getDate(); - let dayString = day.toString(); - if(day < 10){ - dayString = "0" + day.toString(); - } - let month = pickerDate.getMonth() + 1; - let monthString = month.toString(); - if(month < 10){ - monthString = "0" + month.toString(); - } - let year = pickerDate.getFullYear(); - const dateString = dayString + "." + monthString+ "." + year; - console.log(dateString); - const dateField = await driver.findElementByText(dateString); - expect(dateString).to.exist; - }) + if (process.env["Type"] === 'Angular'){ + it("Should tap button to select date and verify button text", async () => { + await scrollToElement(driver, "tap to select date and time", Direction.down); + let dateButton = await driver.findElementByText("tap to select date", SearchOptions.contains); + await dateButton.click(); + const date = await getPickerDate(driver); + await clickOkBtn(driver); + const pickerDate = new Date(date); + let day = pickerDate.getDate(); + let dayString = day.toString(); + if(day < 10){ + dayString = "0" + day.toString(); + } + let month = pickerDate.getMonth() + 1; + let monthString = month.toString(); + if(month < 10){ + monthString = "0" + month.toString(); + } + let year = pickerDate.getFullYear(); + const dateString = dayString + "." + monthString+ "." + year; + console.log(dateString); + const dateField = await driver.findElementByText(dateString); + expect(dateField).to.exist; + }) - it("Should tap button to select time and verify button text", async () => { - let timeButton = await driver.findElementByText("tap to select time", SearchOptions.contains); - await timeButton.click(); - const time = await getPickerTime(driver, 24); - await clickOkBtn(driver); - timeButton = await driver.findElementByText(time); - expect(timeButton).to.exist; - }); + it("Should tap button to select time and verify button text", async () => { + let timeButton = await driver.findElementByText("tap to select time", SearchOptions.contains); + await timeButton.click(); + const time = await getPickerTime(driver, 24); + await clickOkBtn(driver); + timeButton = await driver.findElementByText(time); + expect(timeButton).to.exist; + }); + } }); \ No newline at end of file diff --git a/demo-angular/e2e/tsconfig.json b/tests/e2e/tsconfig.json similarity index 100% rename from demo-angular/e2e/tsconfig.json rename to tests/e2e/tsconfig.json diff --git a/tests/package.json b/tests/package.json new file mode 100644 index 0000000..152ef39 --- /dev/null +++ b/tests/package.json @@ -0,0 +1,21 @@ +{ + "devDependencies": { + "@types/chai": "^4.1.3", + "@types/mocha": "^5.2.0", + "@types/node": "^10.1.2", + "babel-loader": "~8.0.0", + "chai": "~4.1.2", + "chai-as-promised": "~7.1.1", + "karma": "^2.0.2", + "karma-nativescript-launcher": "^0.4.0", + "mocha": "^3.3.0", + "mocha-junit-reporter": "^1.18.0", + "mocha-multi": "^1.0.1", + "mochawesome": "^3.1.1", + "nativescript-dev-appium": "~5.2.0", + "typescript": "~3.5.3" + }, + "scripts": { + "e2e": "tsc -p e2e && mocha --opts ./e2e/config/mocha.opts" + } + } \ No newline at end of file