Перейти к основному содержимому

restoreState

Обзор

Команда для восстановления данных (cookies, local and session storages) из файла или объекта.

Использование

Вы можете восстановить состояние браузера из файла (с помощью параметра path) или непосредственно из объекта (с помощью параметра data).

Важно: Если вы указали оба параметра path и data, приоритет будет у файла, указанного в path.

При необходимости вы можете указать, какие типы данных восстановить, используя параметры cookies, localStorage и sessionStorage. Это позволяет восстановить только те данные, которые вам нужны.

Данные для восстановления состояния можно получить с помощью команды saveState.

warning

Вы должны находиться на той же странице, с которой были сохранены cookies. Вам нужно сначала перейти на страницу, используйте команду url перед восстановлением состояния.

await browser.restoreState({
path: "./stateDump.json",
data: stateDump,
cookies: true,
localStorage: true,
sessionStorage: true,
});

Параметры команды

ИмяТипЗначение по умолчаниюОписание
pathstring-Путь к файлу с данными.
dataSaveStateData-Объект с данными.
cookiesbooleantrueВключить восстановление кук (true по умолчанию).
localStoragebooleantrueВключить восстановление localStorage (true по умолчанию).
sessionStoragebooleantrueВключить восстановление sessionStorage (true по умолчанию).
cookieFilter(cookie: Cookie) => boolean-Функция для фильтрации кук, принимает объект куки и возвращает boolean.

Примеры использования

Восстановление данных из файла.

it("test", async ({ browser }) => {
await browser.url("https://github.com/gemini-testing/testplane");

await browser.restoreState({
path: "./stateDump.json",
cookieFilter: ({ domain }) => domain === ".example.com",
});

// Reload page for see auth result.
await browser.refresh();
});

Пример реализации аутентификации в тестах с использованием saveState/restoreState и хука beforeAll.

import { ConfigInput, WdioBrowser } from "testplane";
import { launchBrowser } from "testplane/unstable";

export default {
gridUrl: "local",
beforeAll: async ({ config }) => {
const b = await launchBrowser(config.browsers["chrome"]!);

await b.url("https://our-site.com");
await b.$("input.login").setValue("user@example.com");
await b.$("input.password").setValue("password123");

await b.saveState({ path: "./.testplane/state.json" });
await b.deleteSession();
},
sets: {
/* ... */
},
browsers: {
chrome: {
headless: false,
desiredCapabilities: {
browserName: "chrome",
},
},
},
plugins: {
/* ... */
"@testplane/global-hook": {
enabled: true,
beforeEach: async ({ browser }: { browser: WdioBrowser }) => {
await browser.url("https://our-site.com");
await browser.restoreState({ path: "./.testplane/state.json" });
},
},
},
} satisfies ConfigInput;