Сервис сравнения изображений (визуальное регрессионное тестирование)
@wdio/visual-service - это сторонний пакет, для получения дополнительной информации, пожалуйста, посетите GitHub | npm
Для документации по визуальному тестированию с WebdriverIO, пожалуйста, обратитесь к документации. Этот проект содержит все необходимые модули для проведения визуальных тестов с WebdriverIO. В директории ./packages
вы найдёте:
@wdio/visual-testing
: сервис WebdriverIO для интеграции визуального тестированияwebdriver-image-comparison
: модуль сравнения изображ ений, который можно использовать для различных фреймворков автоматизации тестирования NodeJS, поддерживающих протокол WebDriver
Storybook Runner (БЕТА)
Нажмите, чтобы узнать больше о Storybook Runner БЕТА
Storybook Runner всё ещё находится в стадии БЕТА, документация позже будет перемещена на страницы документации WebdriverIO.
Этот модуль теперь поддерживает Storybook с новым визуальным раннером. Этот раннер автоматически сканирует локальный/удалённый экземпляр Storybook и создаёт снимки элементов каждого компонента. Это можно сделать, добавив
export const config: WebdriverIO.Config = {
// ...
services: ["visual"],
// ....
};
в ваши services
и запустив npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook
через командную строку.
По умолчанию будет использоваться Chrome в режиме headless.
[!NOTE]
- Большинство опций визуального тестирования также будут работать для Storybook Runner, см. документацию WebdriverIO.
- Storybook Runner перезапишет все ваши возможности и может запускаться только на поддерживаемых браузерах, см.
--browsers
.- Storybook Runner не поддерживает существующую конфигурацию, использующую возможности Multiremote, и выдаст ошибку.
- Storybook Runner поддерживает только веб-интерфейс для десктопа, а не для мобильных устройств.
Опции сервиса Storybook Runner
Опции сервиса можно предоставить следующим образом
export const config: WebdriverIO.Config = {
// ...
services: [
[
'visual',
{
// Некоторые опции по умолчанию
baselineFolder: join(process.cwd(), './__snapshots__/'),
debug: true,
// Опции storybook, см. описание опций CLI
storybook: {
additionalSearchParams: new URLSearchParams({foo: 'bar', abc: 'def'}),
clip: false,
clipSelector: ''#some-id,
numShards: 4,
// `skipStories` может быть стр окой ('example-button--secondary'),
// массивом (['example-button--secondary', 'example-button--small'])
// или регулярным выражением, которое нужно предоставить в виде строки ("/.*button.*/gm")
skipStories: ['example-button--secondary', 'example-button--small'],
url: 'https://www.bbc.co.uk/iplayer/storybook/',
version: 6,
// Опционально - Позволяет переопределять путь к базовым изображениям. По умолчанию они группируются по категории и компоненту (например, forms/input/baseline.png)
getStoriesBaselinePath: (category, component) => `path__${category}__${component}`,
},
},
],
],
// ....
}
Опции CLI Storybook Runner
--additionalSearchParams
- Тип:
string
- Обязательно: Нет
- По умолчанию: ''
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --additionalSearchParams="foo=bar&abc=def"
Добавляет дополнительные параметры поиска к URL Storybook. См. документацию URLSearchParams для получения дополнительной информации. Строка должна быть действительной строкой URLSearchParams.
[!NOTE] Двойные кавычки необходимы, чтобы предотвратить интерпретацию
&
как разделителя команд. Например, с--additionalSearchParams="foo=bar&abc=def"
будет сгенерирован следующий URL Storybook для тестов историй:http://storybook.url/iframe.html?id=story-id&foo=bar&abc=def
.
--browsers
- Тип:
string
- Обя зательно: Нет
- По умолчанию:
chrome
, вы можете выбрать изchrome|firefox|edge|safari
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --browsers=chrome,firefox,edge,safari
- ПРИМЕЧАНИЕ: Доступно только через CLI
Использует указанные браузеры для создания снимков компонентов
[!NOTE] Убедитесь, что у вас установлены браузеры, на которых вы хотите запускать тесты, на вашей локальной машине
--clip
- Тип:
boolean
- Обязательно: Нет
- По умолчанию:
true
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --clip=false
При отключении создаст снимок области просмотра. При включении создаст снимки элементов на основе --clipSelector
, что уменьшит количество пустого пространства вокруг снимка компонента и размер снимка.
--clipSelector
- Тип:
string
- Обязательно: Нет
- По умолчанию:
#storybook-root > :first-child
для Storybook V7 и#root > :first-child:not(script):not(style)
для Storybook V6, см. также--version
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --clipSelector="#some-id"
Это селектор, который будет использоваться:
- для выбора элемента, снимок которого нужно сделать
- для элемента, который должен быть видимым перед созданием снимка экрана
--devices
- Тип:
string
- Обязательно: Нет
- По умолчанию: Вы можете выбрать из
deviceDescriptors.ts
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --devices="iPhone 14 Pro Max","Pixel 3 XL"
- ПРИМЕЧАНИЕ: Доступно только через CLI
Использует предоставленные устройства, соответствующие deviceDescriptors.ts
, для создания снимков компонентов
[!NOTE]
- Если вам не хватает конфигурации устройства, не стесняйтесь отправить запрос на функцию
- Это будет работать только с Chrome:
- если вы предоставите
--devices
, то все экземпляры Chrome будут работать в режиме мобильной эмуляции- если вы также предоставите другие браузеры, кроме Chrome, например,
--devices --browsers=firefox,safari,edge
, то автоматически добавится Chrome в режиме мобильной эмуляции- Storybook Runner по умолчанию создаст снимки элементов, если вы хотите увидеть полный эмулированный мобильный снимок экрана, то укажите
--clip=false
через командную строку- Имя файла, например, будет выглядеть так:
__snapshots__/example/button/desktop_chrome/example-button--large-local-chrome-iPhone-14-Pro-Max-430x932-dpr-3.png
- SRC: Тестирование мобильного сайта на десктопе с использованием мобильной эмуляции может быть полезным, но тестировщики должны знать, что существует много тонких различий, таких как:
- совершенно другой GPU, что может привести к большим изменениям производительности;
- мобильный UI не эмулируется (в частности, скрывающаяся URL-панель влияет на высоту страницы);
- всплывающее окно разъяснения (где вы выбираете один из нескольких сенсорных целей) не поддерживается;
- многие аппаратные API (например, событие orientationchange) недоступны.
--headless
- Тип:
boolean
- Обязательно: Нет
- По умолчанию:
true
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --headless=false
- ПРИМЕЧАНИЕ: Доступно только через CLI
По умолчанию запускает тесты в режиме headless (когда браузер поддерживает его) или может быть отключено
--numShards
- Тип:
number
- Обязательно: Нет
- По умолчанию:
true
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --numShards=10
Количество параллельных экземпляров, которые будут использоваться для запуска историй. Это будет ограничено параметром maxInstances
в вашем файле wdio.conf
.
[!IMPORTANT] При запуске в режиме
headless
не увеличивайте число больше 20, чтобы предотвратить нестабильность из-за ограничений ресурсов
--skipStories
- Тип:
string|regex
- Обязательно: Нет
- По умолчанию: null
- Пример:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --skipStories="/.*button.*/gm"
Это может быть:
- строка (
example-button--secondary,example-button--small
) - или регулярное выражение (
"/.*button.*/gm"
)
для пропуска определенных историй. Используйте id
истории, который можно найти в URL истории. Например, id
в этом URL http://localhost:6006/?path=/story/example-page--logged-out
- это example-page--logged-out