Настройка Nativescript-Dev-Appium

Я пытаюсь реализовать nativescript-dev-appium в существующем проекте nativescript-angular, и у меня много проблем с настройкой плагина.

Симулятор, кажется, найден, но запуск перехватчиков before all и after all завершается неудачно, потому что он не имеет экземпляра устройства.

walrus:demo-appium niirds$ npm run e2e -- --runType sim.iPhoneX --verbose

> @ e2e /Users/niirds/mobi/demo-appium
> node ./node_modules/nativescript-dev-appium/check-dev-deps.js &&  tsc -p e2e  &&  mocha --opts ./e2e/config/mocha.opts  "--runType" "sim.iPhoneX" "--verbose"



/Users/niirds/mobi/demo-appium/e2e/config/appium.capabilities.json
Capabilities found at: /Users/niirds/mobi/demo-appium/e2e/config/appium.capabilities.json 
Appium will use default automation name
Available applications:  ["platforms/ios/build/emulator/demoappium.app"]
Pick first application:   "platforms/ios/build/emulator/demoappium.app"
Application full path: /Users/niirds/mobi/demo-appium/platforms/ios/build/emulator/demoappium.app 
Found devices:  [ { token: 'C8B1990E-1593-49A8-AA68-C7E5CC2134BB',
    name: 'iPhone X',
    status: 'booted',
    type: 'watch',
    apiLevel: '12.2',
    platform: 'ios',
    config: { density: 3, offsetPixels: 87 } } ]
  1) "before all" hook: start server
  2) "after all" hook: stop server

  0 passing (2s)
  2 failing

  1) "before all" hook: start server:
     TypeError: Cannot read property 'type' of undefined
      at DeviceManager.<anonymous> (node_modules/nativescript-dev-appium/lib/device-manager.js:82:28)
      at Generator.next (<anonymous>)
      at fulfilled (node_modules/nativescript-dev-appium/lib/device-manager.js:4:58)
      at process._tickCallback (internal/process/next_tick.js:68:7)

  2) "after all" hook: stop server:
     TypeError: Cannot read property 'platform' of undefined
      at Function.<anonymous> (node_modules/mobile-devices-controller/lib/device-controller.js:104:24)
      at Generator.next (<anonymous>)
      at /Users/niirds/mobi/demo-appium/node_modules/mobile-devices-controller/lib/device-controller.js:7:71
      at new Promise (<anonymous>)
      at __awaiter (node_modules/mobile-devices-controller/lib/device-controller.js:3:12)
      at Function.uninstallApp (node_modules/mobile-devices-controller/lib/device-controller.js:103:16)
      at Object.<anonymous> (node_modules/nativescript-dev-appium/index.js:85:64)
      at Generator.next (<anonymous>)
      at /Users/niirds/mobi/demo-appium/node_modules/nativescript-dev-appium/index.js:7:71
      at new Promise (<anonymous>)
      at __awaiter (node_modules/nativescript-dev-appium/index.js:3:12)
      at Object.stopServer (node_modules/nativescript-dev-appium/index.js:77:12)
      at Object.<anonymous> (e2e/setup.js:16:37)
      at Generator.next (<anonymous>)
      at /Users/niirds/mobi/demo-appium/e2e/setup.js:7:71
      at new Promise (<anonymous>)
      at __awaiter (e2e/setup.js:3:12)
      at Context.after (e2e/setup.js:15:28)
      at process.topLevelDomainCallback (domain.js:121:23)



npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ e2e: `node ./node_modules/nativescript-dev-appium/check-dev-deps.js &&  tsc -p e2e  &&  mocha --opts ./e2e/config/mocha.opts  "--runType" "sim.iPhoneX" "--verbose"`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the @ e2e script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Возможности симулятора, предоставляемые установкой:

    "sim.iPhoneX": {
        "platformName": "iOS",
        "platformVersion": "/12*/",
        "deviceName": "iPhone X",
        "noReset": false,
        "fullReset": false,
        "app": ""
    },

У меня установлен xcode 10.2, и вот package.json, если это поможет.

{
  "nativescript": {
    "id": "org.nativescript.demoappium",
    "tns-android": {
      "version": "5.3.0"
    },
    "tns-ios": {
      "version": "5.3.0"
    }
  },
  "description": "NativeScript Application",
  "license": "SEE LICENSE IN <your-license-filename>",
  "repository": "<fill-your-repository-here>",
  "scripts": {
    "lint": "tslint \"src/**/*.ts\"",
    "e2e": "node ./node_modules/nativescript-dev-appium/check-dev-deps.js &&  tsc -p e2e  &&  mocha --opts ./e2e/config/mocha.opts ",
    "e2e-watch": "tsc -p e2e --watch"
  },
  "dependencies": {
    "@angular/animations": "~7.2.0",
    "@angular/common": "~7.2.0",
    "@angular/compiler": "~7.2.0",
    "@angular/core": "~7.2.0",
    "@angular/forms": "~7.2.0",
    "@angular/http": "~7.2.0",
    "@angular/platform-browser": "~7.2.0",
    "@angular/platform-browser-dynamic": "~7.2.0",
    "@angular/router": "~7.2.0",
    "nativescript-angular": "~7.2.0",
    "nativescript-theme-core": "~1.0.4",
    "reflect-metadata": "~0.1.12",
    "rxjs": "~6.3.0",
    "tns-core-modules": "~5.3.0",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular/compiler-cli": "~7.2.0",
    "@nativescript/schematics": "~0.5.0",
    "@ngtools/webpack": "~7.2.0",
    "@types/chai": "~4.1.7",
    "@types/mocha": "~5.2.5",
    "@types/node": "~10.12.18",
    "codelyzer": "~4.5.0",
    "mocha": "~5.2.0",
    "mocha-junit-reporter": "~1.18.0",
    "mocha-multi": "~1.0.1",
    "nativescript-dev-appium": "^5.1.0",
    "nativescript-dev-sass": "~1.7.0",
    "nativescript-dev-typescript": "~0.9.0",
    "nativescript-dev-webpack": "~0.21.0",
    "tslint": "~5.11.0"
  },
  "gitHead": "6ccaee804c71761be1c2f91d0b2dd67c8ba6d2b6",
  "readme": "NativeScript Application"
}

Шаги по воспроизведению: 1. Создайте образец приложения nativescript-angular - в этом тесте я использовал навигацию по вкладкам. 2. установить nativescript-dev-appium: npm i -D nativescript-dev-appium 3. установить другие зависимости https://docs.nativescript.org/angular/tooling/testing/end-to-end-testing/overview#environment-setup 4. создать приложение: tns build <platform> 5. запустить тест : `npm run e2e - --runType

Я пытаюсь заставить это работать на iOS. Любая помощь будет оценена!


person Daniel Battaglia    schedule 29.03.2019    source источник
comment
Вы проверили настройку своей среды, выполнив тесты в примере приложения ? У вас есть образец Github, где можно воспроизвести проблему?   -  person Manoj    schedule 29.03.2019
comment
да, код, который я опубликовал, взят из примера приложения angular tab. я могу добавить шаги для воспроизведения, чтобы уточнить.   -  person Daniel Battaglia    schedule 29.03.2019


Ответы (1)


Я думаю, что по какой-то причине тип устройства, который вернул контроллер устройства type: 'watch', неверен.

Предлагаю вам изменить конфигурацию на что-то вроде:

"sim.iPhoneX": {
    "platformName": "iOS",
    "platformVersion": "12.2",
    "deviceName": "iPhone X",
    "noReset": false,
    "fullReset": false,
    "app": ""
},

или просто попробуйте с опцией --ignoreDeviceController.

person SvetoslavTsenov    schedule 01.04.2019
comment
огромное спасибо! опция ignoreDeviceController определенно помогла appium найти устройство, и мне пришлось изменить версии установки с / 12 * / на 12.2. хотя я обнаружил, что мне нужно запустить сервер appium с помощью настольного приложения и запустить симулятор, прежде чем я начну тест - ни один из них не запускается с теста. Подскажите, могу ли я неправильно настроить конфигурацию? я думал, что сервер appium и симулятор должны запускаться плагином? - person Daniel Battaglia; 12.04.2019