Size: a a a

2020 September 25

B

Bola in JS for testing
да вроде не, можно и без cdp, кроме geo location
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Моя проблема собственно:
- нужно выставлять geo location для браузера
- эмулировать различные разрешения (идеально чтобы такие же пресеты как в хроме - iPhone 6, 8…)
- доступ к local storage чтобы забрать значение

Это все работало в текущем проекте пока не обновился хром и wdio не задепрекейтил
- geolocation можно через CDP оверрайднуть, надо глянуть апи
- разрешения - через капабилити можно установить mobileEmulation, заодно и dpi и useragent оверрайднуть
-  localstorage - browser.execute(()=> window.localStorage)
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Я так понимаю это все теперь надо через cdp делать, причем тесты гоняются удаленно, соотвественно надо чтобы работало удаленно.

Так что если я правильно понял мой выход это дружить wdio + puppeteer.
Ну и под шумок прикрутить селенид
если геолокейшн не критично - то можно без cdp обойтись
источник

G

Gnam in JS for testing
Oleksandr Khotemskyi
- geolocation можно через CDP оверрайднуть, надо глянуть апи
- разрешения - через капабилити можно установить mobileEmulation, заодно и dpi и useragent оверрайднуть
-  localstorage - browser.execute(()=> window.localStorage)
- да там как раз делается. Сделал у себя и локально работает, но не удаленно.
- mobileEmulation почему-то перестал отрабатывать. аргументы типа такого '--window-size=375,667', выставляют разное значение которое по факту не соответствует. 🙁
- localstorage как раз через execute и сделал  this.localStorage.getItem
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
- да там как раз делается. Сделал у себя и локально работает, но не удаленно.
- mobileEmulation почему-то перестал отрабатывать. аргументы типа такого '--window-size=375,667', выставляют разное значение которое по факту не соответствует. 🙁
- localstorage как раз через execute и сделал  this.localStorage.getItem
{
   browserName: 'chrome',
   // Enabling parallel threads by files
   shardTestFiles: true,
   maxInstances: 10,
   'selenoid:options': {
       screenResolution: '500x1100x24'
   },
   chromeOptions: {
       prefs: {
           'profile.password_manager_enabled': false,
           'credentials_enable_service': false,
           'password_manager_enabled': false
       },
       args: [
           '--disable-infobars',
           '--window-size=400,1080',
           '--ignore-certificate-errors'
       ],
       mobileEmulation: {
           deviceName: 'iPhone X'
       }
   }
}
источник

OK

Oleksandr Khotemskyi in JS for testing
вот посмотри
источник

G

Gnam in JS for testing
Oleksandr Khotemskyi
если геолокейшн не критично - то можно без cdp обойтись
Тут как раз таки критично. Проект такси приложение. Так что там очень многое подвязано  на этом. Тестировать на разных территориях, разные охваты, доступные машины и тому подобное. 😅
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Тут как раз таки критично. Проект такси приложение. Так что там очень многое подвязано  на этом. Тестировать на разных территориях, разные охваты, доступные машины и тому подобное. 😅
а зачем тебе вебдрайвер тогда? Возьми playwright/puppeteer и все
источник

G

Gnam in JS for testing
Oleksandr Khotemskyi
а зачем тебе вебдрайвер тогда? Возьми playwright/puppeteer и все
Я так понял что из всех этих инструментов он максимально полно и правдиво эмулирует действия пользователя.
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Я так понял что из всех этих инструментов он максимально полно и правдиво эмулирует действия пользователя.
а тебе нужна такая эмуляция?
источник

G

Gnam in JS for testing
Ага. UI продукт же. Поэтому и пытаюсь максимально приближенно к реальности.
источник

G

Gnam in JS for testing
Даже screenshot comparison замутил, чтобы пиксельные расхождения находить и разрабам предъявлять при регрешене
источник

G

Gnam in JS for testing
Решения различные делаем крупным компаниям, которые потом любят предъявить за расхождения с дизайном.
Ибо должно выглядеть также как и их брендбук 🤪
источник

G

Gnam in JS for testing
Более того думал пойти дальше и заюзать getCSSProperty от wdio для главных элементов и проверять цвета, шрифты, бэкграунды и тому подобное
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Более того думал пойти дальше и заюзать getCSSProperty от wdio для главных элементов и проверять цвета, шрифты, бэкграунды и тому подобное
лучше уже взять - http://galenframework.com/
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Более того думал пойти дальше и заюзать getCSSProperty от wdio для главных элементов и проверять цвета, шрифты, бэкграунды и тому подобное
если именно через атрибуты тестить
источник

G

Gnam in JS for testing
Oleksandr Khotemskyi
лучше уже взять - http://galenframework.com/
👍вроде интересная штука
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
👍вроде интересная штука
Я конечно не знаю деталей твоего проекта. Но я бы не мудрил. Чем больше накрутишь - скрины, девтулз, проверка свойств - тем нестабильней будет.
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
👍вроде интересная штука
Можешь еще подумать про вариант Component UI тестов - рендерить отдельные компоненты и тестить их с помощью пусть даже того же cypress - там и скрины сравнить отдельных компонентов замоканых проще чем всю страницу
источник

G

Gnam in JS for testing
Oleksandr Khotemskyi
Я конечно не знаю деталей твоего проекта. Но я бы не мудрил. Чем больше накрутишь - скрины, девтулз, проверка свойств - тем нестабильней будет.
Обязательный минимум для меня сейчас это геолокацию вернуть) С этим бы разобраться и можно уже смотреть дальше
источник