actor
Актор представляет собой пользователя. Осуществляет взаимодействие с приложением эмулируя действия на странице.
hover
Использует оригинальный метод playwright
click
Использует оригинальный метод playwright
dblclick
Использует оригинальный метод playwright
fill
Использует оригинальный метод playwright
wait
Использует оригинальный метод playwright
Данный метод предназначен исключительно для отладки.
scrollTo
Использует оригинальный метод
playwright
select
Использует оригинальный метод playwright
keyboard
press
Использует оригинальный метод playwright
down
Использует оригинальный метод playwright
up
Использует оригинальный метод playwright
mouse
move
Использует оригинальный метод playwright
down
Использует оригинальный метод playwright
up
Использует оригинальный метод playwright
wheel
Использует оригинальный метод playwright
clear
Использует оригинальный метод playwright
highlight
Использует оригинальный метод playwright
Данный метод предназначен исключительно для отладки.
drag
Использует оригинальный метод playwright
blur
Использует оригинальный метод playwright
pressSequentially
Использует оригинальный метод playwright
waitFor
Использует оригинальный метод playwright
waitForURL
Использует оригинальный метод playwright
resize
Изменяет viewport браузера в соответствии с конфигурацией:
actor.resize({ width: 1440, height: 920 });
resize также влияет и на размер снимка экрана. Рекомендуется использовать данный метод для съёмки длинных форм и
списков.
Размер сохраняется для всех последующих действий и может быть переопределён последующим resize.
screenshot
Осуществляет промежуточные снимки во время действий на странице.
Если вызывается последним в цепочке - переопределяет параметры последнего снимка создаваемого по умолчанию.
Имя снимка должно быть в формате PascalCase. Также допускаются символы _.
actor
// Сделать снимок начального состояния формы
.screenshot('Initial')
.do(fillForm())
// Назвать конечный снимок как Filled
.screenshot('Filled');
Маскирование
На снимках можно маскировать элементы, это может быть полезно при работе с динамически изменяемыми данными:
actor
.do(fillForm())
// Маскируем компонент отображающий время
.screenshot('Filled', { mask: [finder.get(appClock())] });
Данное свойство рекомендуется применять как можно реже, так как оно снижает защиту от регресса. Следует отдавать предпочтение иным методам подмены внешней среды.
uploadFile
Загружает один или несколько файлов в целевой элемент:
actor.uploadFile(finder.get(uploadTrigger()), 'path/to/file_0.ext');
Первым аргументом uploadFile принимает элемент, по клику на который открывается проводник файлов для загрузки.
Путь к файлам считается относительно рабочей директории проекта. Поэтому рекомендуется для простоты располагать их в одном месте:
function getPath(file: string) {
return `/src/storyshots/externals/files/${file}`;
}
actor.uploadFile(finder.get(uploadTrigger()), [
getPath('file_1.ext'),
getPath('file_2.ext'),
]);
do
Позволяет расширять действия пользователя используя специальные трансформеры:
function enterCredentials(): ActorTransformer {
return (actor) =>
actor
.fill(finder.getByRole('username'), 'user')
.fill(finer.getByRole('password'), 'pass');
}
actor.do(enterCredentials());
Функция также принимает окружение истории как второй аргумент:
function closePopup(): ActorTransformer {
return (actor, config) =>
config.device.name === 'mobile'
? actor.do(swipe())
: actor.click(finder.get(cross()));
}
toMeta
Преобразует действия актора в мета-объекты, используемые storyshots.
Если итоговый массив пустой, тест считается пустым и не запускается тест-раннером.
stop
Останавливает выполнение всех последующих действий:
actor
.hover() // Выполнится
.stop() // После данной точки, все последующие действия не будут выполнены
.click()
.fill();
Данный метод предназначен исключительно для отладки.
exec
Вызывает переданную функцию в контексте страницы.
actor
.do(submit())
// Будет выполнен сразу после submit
.exec(() => window.alert('Code has been injected'));
Функции, передаваемые в exec не могут иметь внешних зависимостей за исключением
глобальных объектов Browser API.