Гипертекстовый протокол передачи (HTTP) нестандартно, но файлы cookie позволяют сохранить контекст в соответствии с течением сеанса. Другими словами, имея наш браузер автоматически обмениваться небольшими объемами данных, у нас есть сайты распознавать нас и помнить наши предпочтения, содержание наших торговых корзин или тот факт, что мы только что вошли в наш счет.
В этой статье показано, как мы можем использовать файлы cookie и API для хранения веб-хранилища, чтобы установить состояние в наших сценариях PlayWright, открывая новые сценарии и сохранение в течение времени выполнения.
Чтение и запись печенья в браузер
Чтение или модифицирующее файлы cookie открывают полезные возможности. Практический пример пропускает аутентификацию при тестировании функций, доступных только после входа в систему. Мы могли бы автоматизировать процедуру входа в систему, но нет смысла проходить через него для каждого теста в нашем номере. Пропуская это может освободить драгоценное время, ускорение доставки.
Следующие примеры показывают, как мы можем сохранить существующие файлы cookie после входа в GitHub и повторно использовать их, чтобы пропустить вход в систему. Во-первых, давайте выполним вход в систему с нашими учетными данными, прочитайте файлы cookie и сохраните их в файл.
Для куклора:
Для драматурга:
После успешного входа в систему наши сохраненные файл файлов cookie будут выглядеть что-то подобное:
[ { "name": "dotcom_user", "value":, "domain": ".github.com", "path": "/", "expires": 1633622615.629729, "size": 16, "httpOnly": true, "secure": true, "session": false, "sameSite": "Lax" }, { "name": "user_session", "value": , "domain": "github.com", "path": "/", "expires": 1603296216.923899, "size": 60, "httpOnly": true, "secure": true, "session": false, "sameSite": "Lax" }, ... ]
Теперь мы можем прочитать файл позже и загрузить куки в наш новый браузер. Обратите внимание, как мы вошли в систему с самого начала, не пройденное через процедуру входа в систему пользовательского интерфейса.
Для куклора:
Для драматурга:
Совет: Печенье поставляются с истечением срока годности, поэтому убедитесь, что те, которые вы пытаетесь повторно использовать, все еще действителен.
В то время как совершенно новые сеансы браузера с помощью Puppeteer и PlayWrage не будут содержать файлы cookie по умолчанию, могут быть точки, когда нужно их очистить.
Если вам нужно очистить куки, вы можете использовать Page.deleteCookie (... cookies)
с куклором и BrowserContext.ClearCookies ()
с драматургом.
Совет: Обратите внимание, как Cuppeteer обрабатывает печенье на уровне страницы, когда PlayWrage делает это на уровне контекста.
LocalStorage и SessionStorage.
Печенье отправляется с каждым запросом, потенциально ухудшается Производительность При использовании для хранения большого количества данных. LocalStorage и SessionStorage API могут помочь нам разгрузить некоторые из этих данных в браузере. Также как с печеньями, кукольщиком и драматургом, доступа к локальному и сессионному состоянию.
Наш тестовый сайт, Дунай , на самом деле использует LocalStorage для отслеживания нескольких вещей, таких как содержание вашей корзины. Давайте посмотрим, как мы можем получить доступ к этому состоянию, а затем повторить его на более позднюю сессию.
Сначала мы будем заполнить корзину, добавив три предмета, тогда мы скопируем содержимое LocalStorage в файл.
Для куклора:
Для драматурга:
В этом случае наш файл будет выглядеть следующим образом:
{ "cartContent": "[{\"id\":1,\"title\":\"Haben oder haben\",\"author\":\"Fric Eromm\",\"genre\":\"philosophy\",\"price\":\"9.95\",\"rating\":\"★★★★☆\",\"stock\":\"1\"},{\"id\":2,\"title\":\"Parry Hotter\",\"author\":\"J/K Rowlin'\",\"genre\":\"erotic\",\"price\":\"9.95\",\"rating\":\"★★★☆☆\",\"stock\":\"1\"},{\"id\":3,\"title\":\"Laughterhouse-Five\",\"author\":\"Truk Tugennov\",\"genre\":\"scifi\",\"price\":\"9.95\",\"rating\":\"★★★☆☆\",\"stock\":\"1\"}]" }
Мы можем использовать содержимое этого файла для установки локальной таблички в отдельном сеансе. Таким образом, мы немедленно начнем с трех предметов, уже в нашей корзине, потенциально приблизившись к конкретному сценарию, который мы хотим тестировать и тем самым спасать свое время.
Для куклора:
Для драматурга:
Вы можете взаимодействовать с SessionStorage очень, подобным, как у нас с местным.
Совет: Не стоит недооценивать полезность более короткого времени исполнения на скрипты, особенно когда часто работают большие партии/люксы.
Все вышеперечисленные примеры могут быть выполнены следующим образом:
На MacOS/Linux:
GITHUB_USER=username GITHUB_PWD=password node managing-cookies.js
В окнах:
SET GITHUB_USER=username SET GITHUB_PWD=password node managing-cookies.js
Вынос
- Мы можем использовать файлы cookie и API для хранения веб-хранилища через uppereer и PlayWrage, чтобы установить тестовое состояние и ускорить тестовые люксы.
- Щелки и API PlayWrage для обработки печенья немного отличаются, но достигают тех же целей.
дальнейшее чтение
- Официальные документы MDN для Печенье Отказ
- Практическое руководство по Web Storage API , SessionStorage и LocalStorage.
- Официальный Кукла а также Драматург Документы вокруг куки.
Эта статья была первоначально опубликована на theheadless.dev
Оригинал: “https://dev.to/checkly/setting-state-using-cookies-1bk”