Обідня історія QA
Коли без LocalStorage не куда для веба.
Сьогодні з ранку ну прям день почався з кави але не з настрою після неї, це ішшью ідеальна класика для QA
Якщо коротко то тестував веб-додаток для відео/аудіо дзвінків, де юзер може вибрати, або свій телефон, або софтфон (внутрішній SIP) куди буде йти стрім аудіо,
Юзер вибрав софтфон очікуєш, що дзвінок піде через нього?
Ага, щас.
Дзвінок стабільно йде на старий номер, якого вже немає в UI.
Ну і консоль кричить
Error: call target mismatch, unexpected endpointId received ну це класична помилка. но не можу далі понять в чому проблема, і на другому env у мене не відтворюється.
Ну пишу деву, показую відео, логи.
Ну і Відповідь стандартна
У мене не відтворюється. У тебе щось з RDP або кешем. Це не бага. Ну да… тільки я цей баг вже тричі відловив.
Ну я як завжди Окей, іду копати глибше.
DevTools → Application → Local Storage.
Що бачу?
Є ключ call.rooms
В ній масив з кількома об'єктами типу і там є явно "type": "softphone", але поручь є ше один запис тільки з другой сессієй ID де там вже "type": "phone", і ось ти мій дорогенький
Виявляється, UI бере просто перший endpoint із localStorage
і дзвонить куди бачить першим, ігноруючи активну сесію.
Це як if (storage.rooms[0].endpoint) і поїхали. і це не відтворюється бо коли є реально 1 запись там все гуд працює і не дочепишься)
Знаєте мені 1 раз сказала дуже умна люди круту річь - якщо баг в QA відтвориться хотя б 1 раз і не де більше, в кастомерів він точно вилізе, і це True
Хотів також вам в комплект порадити пару тулів які я теж юзаю
Local Storage - це зручний інструмент для керування локальним сховищем через панель розширень
https://chromewebstore.google.com/detail/local-storage/nnlekldijoehomfgfciodmolohhfkfpm
Polypane - це реально справжня знахідка для куа якщо ви не знали, тестуєш різні стани юзерів (log in / log out, різні ролі) не треба логінитись щоразу, бачиш одразу як зміна localStorage/cookie впливає на рендер, Можна одночасно тримати кілька версій UI, наприклад, staging vs prod
https://polypane.app/
ну про Recorder у Chrome DevTools я думаю ви всі чули, Це інструмент вбудований у Chrome DevTools, який дозволяє записувати, редагувати й відтворювати дії користувача на сторінці, а також експортувати їх у скрипти для автотестів.
ну і куди ж без швидкого копіпаст localStorage між браузерами / сесіями
// Експорт:
copy(JSON.stringify(localStorage))
// Імпорт:
Object.entries(JSON.parse(prompt('Встав JSON:'))).forEach(([k,v]) => localStorage.setItem(k, v))
ось вам і бага на ровному місці)))
А які ви розширення чи тули юзаєте? поділіться в коментарям мені правда дуже цікаво - бо я як вже казав старе і юзаю може не шось новіше і всі про це знають)
ну і да, QA це коли ти кажешь деву це баг і це треба фіксити, і якщо він каже це фіча, треба як кажуть донести істину)
📲 Буду вдячний за репост Групи.
https://t.me/BugOrDefects
#обідні_історії_QA #localStorage