Перейти к основному содержимому
Версия: v8

restoreState

Доступно начиная с testplane v8.33.0

Обзор​

Команда для восстановления данных (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Включить восстановление кук.
localStoragebooleantrueВключить восстановление localStorage.
sessionStoragebooleantrueВключить восстановление sessionStorage.
cookieFilter(cookie: Cookie) => boolean-Функция для фильтрации кук, принимает объект куки и возвращает boolean.
refreshbooleantrueОбновить страницу после восстановления состояния.

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

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

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;