restoreState
Доступно начиная с testplane v8.33.0
Обзор
Команда для восстановления данных (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 | Включить восстановление кук. |
| localStorage | boolean | true | Включить восстановление localStorage. |
| sessionStorage | boolean | true | Включить восстановление sessionStorage. |
| 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;