Вибір інструментів для API+UI фреймворку на JS.

Всім привіт, замовник зацікавлений в UI (protractor) та API (???) тестах на JS. Планую розробку спільного фреймворку, щоб була можливість використати API для прекондишенів також.

Аплікація має 2 версії: веб (angular, jasmine, nodejs) та мобайл (iOS, android, native app). 100% функціоналу базується на JSON веб-сервісах. Більшість сервісів спільні для веб та мобайл, частина тільки для мобайл.

Маю досвід розробки таких фреймворків на Java (selenide, json, spring http client, pojo, builders). З JS справи раніше немав. Розумію, що краще писати на тій мові яку знаєш, але замовник наполягає на JS:
Є вже пару десятків тестів написано
Є ще 1 автоматизатор (колишній мануал QA)
Девелопери зможуть розібратись в тестах, а як буде час теж писатимуть тести

Буду вдячний якщо поділетесь власним досвідом автоматизації на JS. Наразі є такі питання:
Які є явні мінуси чи обмеження в protractor та самої мови js в порівнянні з selenide+Java?
Які проблеми та обмеження є у JS для написання суто API тестів? Оскільки більшість тестів буде саме API.
Які інструменти, фреймворк ви використовуєте для JS API тестів?
Які проблеми можуть виникнути при автоматизації мобайл в зв’язці appium+js?

Практично такi ж задачi маю я на своєму проектi.
Використовую protractor(UI)+restler(API side), ще не виникало нiяких проблем з цiєю зв’язкою.

Тiльки вмiння працювати з асинхронними/синхронними викликами в тих випадках, коли тобi треба щось робити в чiтко поставленнiй послiдовностi. Але це не проблема i не обмеження, це скорiш “heads up”.

По iншим питанням не пiдкажу, бо Селенiд не використовував, а Appium тiльки з Ruby приходилось працювати.

Дякую за відповідь.

Я для тестов restful сервисов использую связку Mocha+Chai+Superagent. Для возможности использования возможностей ES6 использую Node v8 (позволяет использовать async/await без babel) для тех кто раньше не использовал JS с его ассинхронным стилем написания кода async/await позволит более менее писать код читаемый как синхронный и не мучатся с коллбеками и промисами (по началу это очень напрягает и может отбить желание использовать JS). Для ускорения выполнения тестовых сценариев использую mocha.parallel (позволяет запускать все тестовые сценарии паралельно) - одноко это довольно сырая библиотека и некоторые функции mocha вней работают неправильно (но она позволяет выполнить 1000 тестов за 15-20 сек, но тесты нужно писать изолироваными и не совать переменные в глобальную область видимости).