restoreState
Обзор
Команда для восстановления данных (cookies, local and session storages) из файла или объекта.
Использование
Вы можете восстановить состояние браузера из файла (с помощью параметра path
) или непосредственно из объекта (с помощью параметра data
).
Важно: Если вы указали оба параметра path
и data
, приоритет будет у файла, указанного в path
.
При необходимости вы можете указать, какие типы данных восстановить, используя параметры cookies
, localStorage
и sessionStorage
. Это позволяет восстановить только те данные, которые вам нужны.
Данные для восстановления состояния можно получить с помощью команды saveState.
Вы должны находиться на той же странице, с которой были сохранены cookies. Вам нужно сначала перейти на страницу, используйте команду url перед восстановлением состояния.
await browser.restoreState({
path: "./stateDump.json",
data: stateDump,
cookies: true,
localStorage: true,
sessionStorage: true,
});
Параметры команды
Имя | Тип | Значение по ум олчанию | Описание |
path | string | - | Путь к файлу с данными. |
data | SaveStateData | - | Объект с данными. |
cookies | boolean | true | Включить восстановление кук (true по умолчанию). |
localStorage | boolean | true | Включить восстановление localStorage (true по умолчанию). |
sessionStorage | boolean | true | Включить восстановление 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;