Рубрики
Без рубрики

Установка состояния с помощью файлов cookie с uppereer и PlayWrage

Протокол передачи гипертекста (HTTP) является нестандартным, но файлы cookie позволяют сохранить контекст соответствовать … Помечено JavaScript, WebDev, uppereer, Pramwright.

Гипертекстовый протокол передачи (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

Вынос

  1. Мы можем использовать файлы cookie и API для хранения веб-хранилища через uppereer и PlayWrage, чтобы установить тестовое состояние и ускорить тестовые люксы.
  2. Щелки и API PlayWrage для обработки печенья немного отличаются, но достигают тех же целей.

дальнейшее чтение

  1. Официальные документы MDN для Печенье Отказ
  2. Практическое руководство по Web Storage API , SessionStorage и LocalStorage.
  3. Официальный Кукла а также Драматург Документы вокруг куки.

Эта статья была первоначально опубликована на theheadless.dev

Оригинал: “https://dev.to/checkly/setting-state-using-cookies-1bk”