Конфігурація
Залежно від типу налаштування (наприклад, використання прямих протокольних прив'язок, WebdriverIO як окремий пакет або тестовий раннер WDIO) існує різний набір опцій для керування середовищем.
Опції WebDriver
Наступні опції визначені при використанні пакету протоколу webdriver:
protocol
Протокол для взаємодії з серверо м драйвера.
Тип: String
За замовчуванням: http
hostname
Хост вашого сервера драйвера.
Тип: String
За замовчуванням: 0.0.0.0
port
Порт, на якому працює ваш сервер драйвера.
Тип: Number
За замовчуванням: undefined
path
Шлях до кінцевої точки сервера драйвера.
Тип: String
За замовчуванням: /
queryParams
Параметри запиту, які передаються до сервера драйвера.
Тип: Object
За замовчуванням: undefined
user
Ваш логін для хмар ного сервісу (працює лише для облікових записів Sauce Labs, Browserstack, TestingBot або TestMu AI). Якщо встановлено, WebdriverIO автоматично налаштує параметри підключення для вас. Якщо ви не використовуєте хмарного провайдера, це можна використовувати для аутентифікації на будь-якому іншому бекенді WebDriver.
Тип: String
За замовчуванням: undefined
key
Ваш ключ доступу або секретний ключ для хмарного сервісу (працює лише для облікових записів Sauce Labs, Browserstack, TestingBot або TestMu AI). Якщо встановлено, WebdriverIO автоматично налаштує параметри підключення для вас. Якщо ви не використовуєте хмарного провайдера, це можна використовувати для аутентифікації на будь-якому іншому бекенді WebDriver.
Тип: String
За замовчуванням: undefined
capabilities
Визначає можливості, які ви хочете запустити у вашій сесії WebDriver. Перегляньте Протокол WebDriver для отримання додаткової інформації. Якщо ви використовуєте старий драйвер, який не підтримує протокол WebDriver, вам потрібно буде використовувати можливості JSONWireProtocol для успішного запуску сесії.
Окрім capabilities на основі WebDriver, ви можете застосувати браузерні та специфічні для постачальника опції, які дозволяють глибше налаштувати віддалений браузер або пристрій. Вони документовані у відповідних документах постачальників, наприклад:
goog:chromeOptions: для Google Chromemoz:firefoxOptions: для Mozilla Firefoxms:edgeOptions: для Microsoft Edgesauce:options: для Sauce Labsbstack:options: для BrowserStackselenoid:options: для Selenoid
Додатково, корисним інструментом є Automated Test Configurator від Sauce Labs, який допомагає створити цей об'єкт, клацаючи разом потрібні можливості.
Тип: Object
За замовчуванням: null
Приклад:
{
browserName: 'chrome', // опції: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // версія браузера
platformName: 'Windows 10' // платформа ОС
}
Якщо ви запускаєте веб- або нативні тести на мобільних пристроях, capabilities відрізняється від протоколу WebDriver. Див. документацію Appium для отримання додаткової інформації.
logLevel
Рівень деталізації логування.
Тип: String
За замовчуванням: info
Опції: trace | debug | info | warn | error | silent
outputDir
Каталог для зберігання всіх файлів логів тестового раннера (включаючи логи репортерів та логи wdio). Якщо не встановлено, усі логи будуть передаватися до stdout. Оскільки більшість репортерів призначені для логування в stdout, рекомендується використовувати цю опцію лише для конкретних репортерів, де має сенс зберігати звіт у файл (наприклад, для репортера junit).
При запуску в автономному режимі, єдиним логом, створеним WebdriverIO, буде лог wdio.
Тип: String
За замовчуванням: null
connectionRetryTimeout
Час очікування для будь-якого запиту WebDriver до драйвера або сітки.
Тип: Number
За замовчуванням: 120000
connectionRetryCount
Максимальна кількість повторних спроб запиту до сервера Selenium.
Тип: Number
За замовчуванням: 3
agent
Дозволяє використовувати власний http/https/http2 агент для виконання запитів.
Тип: Object
За замовчуванням:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Вказати власні headers, які будуть передані в кожен запит WebDriver. Якщо ваша Selenium Grid вимагає базової аутентифікації, ми рекомендуємо передавати заголовок Authorization через цю опцію для аутентифікації ваших запитів WebDriver, наприклад:
import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Тип: Object
За замовчуванням: {}
transformRequest
Функція перехоплення опцій HTTP-запиту перед виконанням запиту WebDriver
Тип: (RequestOptions) => RequestOptions
За замовчуванням: немає
transformResponse
Функція перехоплення об'єктів HTTP-в ідповіді після отримання відповіді WebDriver. Функція отримує оригінальний об'єкт відповіді як перший аргумент і відповідні RequestOptions як другий аргумент.
Тип: (Response, RequestOptions) => Response
За замовчуванням: немає
strictSSL
Чи потрібно, щоб SSL сертифікат був дійсним.
Може бути встановлено через змінні середовища як STRICT_SSL або strict_ssl.
Тип: Boolean
За замовчуванням: true
enableDirectConnect
Чи увімкнути функцію прямого підключення Appium. Не має ефекту, якщо відповідь не містить відповідних ключів, коли прапор увімкнено.
Тип: Boolean
За замовчуванням: true
cacheDir
Шлях до кореня каталогу кешу. Цей каталог використовується для зберігання всіх драйверів, які завантажуються при спробі запустити сесію.
Тип: String
За замовчуванням: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
maskingPatterns
Для більш безпечного логування, регулярні вирази, встановлені за допомогою maskingPatterns, можуть приховати конфіденційну інформацію з логу.
- Формат рядка - це регулярний вираз з прапорцями або без них (наприклад,
/.../i) і через кому для кількох регулярних виразів. - Для отримання додаткової інформації про маскуючі патерни, див. розділ Masking Patterns у README логера WDIO.
Тип: String
За замовчуванням: undefined
Приклад:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
Наступні опції (включаючи перелічені вище) можуть бути використані з WebdriverIO в автономному режимі:
automationProtocol
Визначте протокол, який ви хочете використовувати для автоматизації браузера. На даний момент підтримується лише webdriver, оскільки це основна технологія автоматизації браузера, яку використовує WebdriverIO.
Якщо ви хочете автоматизувати браузер за допомогою іншої технології автоматизації, переконайтеся, що встановили цю властивість на шлях, який вказує на модуль, що відповідає наступному інтерфейсу:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Start a automation session and return a WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* with respective automation commands. See the [webdriver](https://www.npmjs.com/package/webdriver) package
* as a reference implementation
*
* @param {Capabilities.RemoteConfig} options WebdriverIO options
* @param {Function} hook that allows to modify the client before it gets released from the function
* @param {PropertyDescriptorMap} userPrototype allows user to add custom protocol commands
* @param {Function} customCommandWrapper allows to modify the command execution
* @returns a WebdriverIO compatible client instance
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* allows user to attach to existing sessions
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Changes The instance session id and browser capabilities for the new session
* directly into the passed in browser object
*
* @optional
* @param {object} instance the object we get from a new browser session.
* @returns {string} the new session id of the browser
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Тип: String
За замовчуванням: webdriver
baseUrl
Скорочує виклики команди url шляхом встановлення базового URL.
- Якщо ваш параметр
urlпочинається з/, тоbaseUrlдодається як префікс (за винятком шляхуbaseUrl, якщо він є). - Якщо ваш параметр
urlпочинається без схеми або/(наприклад,some/path), то повнийbaseUrlдодається як префікс безпосередньо.
Тип: String
За замовчуванням: null
waitforTimeout
Час очікування за замовчуванням для всіх команд waitFor*. (Зверніть увагу на малу літеру f в назві опції.) Цей тайм-аут тільки впливає на команди, що починаються з waitFor* та їхній час очікування за замовчуванням.
Щоб збільшити тайм-аут для тесту, будь ласка, зверніться до документації фреймво рку.
Тип: Number
За замовчуванням: 5000
waitforInterval
Інтервал за замовчуванням для всіх команд waitFor* для перевірки, чи змінився очікуваний стан (наприклад, видимість).
Тип: Number
За замовчуванням: 100
region
Якщо ви використовуєте Sauce Labs, ви можете обрати запуск тестів між різними дата-центрами: US або EU.
Щоб змінити регіон на EU, додайте region: 'eu' до вашої конфігурації.
Примітка: Це впливає лише якщо ви надали опції user та key, які пов'язані з вашим обліковим записом Sauce Labs.
Тип: String
За замовчуванням: us
(тільки для віртуальних машин та/або емуляторів/симуляторів)
Опції тестового раннера
Наступні опції (включаючи перелічені вище) визначені лише для запуску WebdriverIO з тестовим раннером WDIO:
specs
Визначити спеки для виконання тестів. Ви можете або вказати шаблон glob для відповідності кільком файлам одночасно, або обернути glob чи набір шляхів у масив, щоб запустити їх в межах одного робочого процесу. Усі шляхи розглядаються як відносні від шляху файлу конфігурації.
Тип: (String | String[])[]
За замовчуванням: []
exclude
Виключити специфікації з виконання тестів. Усі шляхи розглядаються як відносні від шляху файлу конфігурації.
Тип: String[]
За замовчуванням: []
suites
Об'єкт, що описує різні набори тестів, які ви можете вказати за допомогою о пції --suite в CLI wdio.
Тип: Object
За замовчуванням: {}
capabilities
Те ж саме, що і розділ capabilities, описаний вище, за винятком можливості вказати об'єкт multiremote або кілька сесій WebDriver у масиві для паралельного виконання.
Ви можете застосувати ті ж можливості, специфічні для постачальника та браузера, як визначено вище.
Тип: Object|Object[]
За замовчуванням: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]
maxInstances
Максимальна кількість загальних паралельних робочих процесів.
Примітка: це може бути число, таке високе як 100, коли тести виконуються на зовнішніх постачальниках, таких як машини Sauce Labs. Там тести не тестуються на одній машині, а на кількох віртуальних машинах. Якщо тести повинні виконуватися на локальній машині розробки, використовуйте більш розумне число, таке як 3, 4 або 5. По суті, це кількість браузерів, які будуть одночасно запущені та виконувати ваші тести одночасно, тому це залежить від того, скільки оперативної пам'яті є на вашій машині та скільки інших програм працює на вашій машині.
Ви також можете застосувати maxInstances в об'єктах можливостей, використовуючи можливість wdio:maxInstances. Це обмежить кількість паралельних сесій для цієї конкретної можливості.
Тип: Number
За замовчуванням: 100
maxInstancesPerCapability
Максимальна кількість загальних паралельних робочих процесів на одну можливість.
Тип: Number
За замовчуванням: 100
injectGlobals
Вставляє глобальні змінні WebdriverIO (наприклад, browser, $ та $$) у глобальне середовище.
Якщо ви встановите значення false, вам слід імпортувати з @wdio/globals, наприклад:
import { browser, $, $$, expect } from '@wdio/globals'
Примітка: WebdriverIO не обробляє ін'єкцію глобальних змінних, специфічних для тестового фреймворку.
Тип: Boolean
За замовчуванням: true
bail
Якщо ви хочете, щоб ваш тестовий запуск зупинявся після певної кількості невдалих тестів, використовуйте bail.
(За замовчуванням 0, що запускає всі тести, незалежно від результату.) Примітка: Тест в цьому контексті - це всі тести в одному файлі специфікації (при використанні Mocha або Jasmine) або всі кроки в одному файлі функцій (при використанні Cucumber). Якщо ви хочете контролювати поведінку bail всередині тестів одного тестового файлу, перегляньте доступні опції фреймворку.
Тип: Number
За замовчуванням: 0 (не зупиняти; запускати всі тести)
specFileRetries
Кількість повторних спроб для цілого файлу специфікації, коли він повністю не пройшов.
Тип: Number
За замовчуванням: 0
specFileRetriesDelay
Затримка в секундах між повторними спробами файлу специфікації
Тип: Number
За замовчуванням: 0
specFileRetriesDeferred
Чи повинні повторні спроби файлів специфікації повторюватися негайно або бути відкладені в кінець черги.
Тип: Boolean
За замовчуванням: true
groupLogsByTestSpec
Виберіть вигляд виводу логів.
Якщо встановлено значення false, логи з різних тестових файлів будуть виводитися в реальному часі. Зверніть увагу, що це може призвести до змішування виводу логів з різних файлів при паралельному запуску.
Якщо встановлено значення true, виводи логів будуть згруповані за специфікацією тесту і виводитися лише після завершення специфікації тесту.
За замовчуванням встановлено значення false, тому логи виводяться в реальному часі.
Тип: Boolean
За замовчуванням: false
autoAssertOnTestEnd
Контролює, чи WebdriverIO автоматично перевіряє всі м'які твердження в кінці кожного тесту. Коли встановлено значення true, будь-які накопичені м'які твердження будуть автоматично перевірені і викличуть збій тесту, якщо будь-які твердження не пройшли. Коли встановлено значення false, ви повинні вручну викликати метод assert для перевірки м'яких тверджень.
Тип: Boolean
За замовчуванням: true
services
Сервіси беруть на себе конкретні завдання, про які ви не хочете дбати. Вони покращують ваше тестове середовище майже без зусиль.
Тип: String[]|Object[]
За замовчуванням: []
framework
Визначає тестовий фреймворк, який буде використовуватися тестовим раннером WDIO.
Тип: String
За замовчуванням: mocha
Опції: mocha | jasmine
mochaOpts, jasmineOpts та cucumberOpts
Специфічні опції, пов'язані з фреймворком. Див. документацію адаптера фреймворку, щоб дізнатися, які опції доступні. Детальніше про це у Frameworks.
Тип: Object
За замовчуванням: { timeout: 10000 }
cucumberFeaturesWithLineNumbers
Список cucumber функцій з номерами рядків (при використанні cucumber framework).
Тип: String[]
За замовчуванням: []
reporters
Список репортерів для використання. Репортер може бути або рядком, або масивом
['reporterName', { /* reporter options */}], де перший елемент - це рядок з ім'ям репортера, а другий елемент - об'єкт з опціям и репортера.
Тип: String[]|Object[]
За замовчуванням: []
Приклад:
reporters: [
'dot',
'spec'
['junit', {
outputDir: `${__dirname}/reports`,
otherOption: 'foobar'
}]
]
reporterSyncInterval
Визначає, з яким інтервалом репортер повинен перевіряти, чи вони синхронізовані, якщо вони повідомляють свої логи асинхронно (наприклад, якщо логи передаються до стороннього постачальника).
Тип: Number
За замовчуванням: 100 (мс)
reporterSyncTimeout
Визначає максимальний час, який репортери мають для завершення завантаження всіх своїх логів, перш ніж тестовий раннер видасть помилку.
Тип: Number
За замовчуванням: 5000 (мс)
execArgv
Аргументи Node для вказівки при запуску дочірніх процесів.
Тип: String[]
За замовчуванням: null
filesToWatch
Список шаблонів рядків, що підтримують glob, які вказують тестовому раннеру додатково стежити за іншими файлами, наприклад, файлами додатків, при запуску з прапором --watch. За замовчуванням тестовий раннер вже відстежує всі файли специфікацій.
Тип: String[]
За замовчуванням: []
updateSnapshots
Встановіть значення true, якщо ви хочете оновити свої знімки. Ідеально використовувати як частину параметра CLI, наприклад, wdio run wdio.conf.js --s.
Тип: 'new' | 'all' | 'none'
За замовчуванням: none якщо не вказано і тести запускаються в CI, new якщо не вказано, інакше те, що було вказано
resolveSnapshotPath
Перевизначає шлях до знімка за замовчуванням. Наприклад, щоб зберігати знімки поруч з тестовими файлами.
export const config: WebdriverIO.Config = {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
}
Тип: (testPath: string, snapExtension: string) => string
За замовчуванням: зберігає файли знімків у каталозі __snapshots__ поряд із тестовим файлом
tsConfigPath
WDIO використовує tsx для компіляції файлів TypeScript. Ваш TSConfig автоматично виявляється з поточного робочого каталогу, але ви можете вказати власний шлях тут або встановивши змінну середовища TSX_TSCONFIG_PATH.
Див. документацію tsx: https://tsx.is/dev-api/node-cli#custom-tsconfig-json-path
Тип: String
За замовчуванням: null
Хуки
Тестовий раннер WDIO дозволяє встановлювати хуки, які будуть запущені в певні моменти життєвого циклу тесту. Це дозволяє виконувати власні дії (наприклад, робити знімок екрана, якщо тест не пройшов).
Кожен хук має як параметр конкретну інформацію про життєвий цикл (наприклад, інформацію про тестовий набір або тест). Дізнайтеся більше про всі властивості хуків у нашому прикладі конфігурації.
Примітка: Деякі хуки (onPrepare, onWorkerStart, onWorkerEnd та onComplete) виконуються в іншому процесі, і тому не можуть ділитися будь-якими глобальними даними з іншими хуками, які працюють у робочому процесі.
onPrepare
Виконується один раз перед запуском усіх робочих процесів.
Параметри:
config(object): об'єкт конфігурації WebdriverIOparam(object[]): список деталей можливостей
onWorkerStart
Виконується перед створенням робочого процесу і може бути використаний для ініціалізації конкретного сервісу для цього робочого процесу, а також для модифікації середовища виконання асинхронним способом.
Параметри:
cid(string): ідентифікатор можливості (наприклад, 0-0)caps(object): містить можливості для сесії, яка буде створена в робочому процесіspecs(string[]): специфікації, які будуть запущені в робочому процесіargs(object): об'єкт, який буде об'єднаний з основною конфігурацією після ініціалізації робочого процесуexecArgv(string[]): список рядкових аргументів, переданих робочому процесу
onWorkerEnd
Виконується відразу після завершення роботи робочого процесу.
Параметри:
cid(string): ідентифікатор можливості (наприклад, 0-0)exitCode(number): 0 - успіх, 1 - невдачаspecs(string[]): специфікації, які були запущені в робочому процесіretries(number): кількість повторних спроб на рівні специфікації, використаних як визначено в "Додавання повторних спроб на основі специфікації"
beforeSession
Виконується перед ініціалізацією сесії webdriver та тестового фреймворку. Дозволяє маніпулювати конфігураціями залежно від можливостей або специфікацій.
Параметри:
config(object): об'єкт конфігурації WebdriverIOcaps(object): містить можливості для сесії, яка буде створена в робочому процесіspecs(string[]): специфікації, які будуть запущені в робочому процесі
before
Виконується перед початком виконання тестів. У цей момент ви можете отримати доступ до всіх глобальних змінних, таких як browser. Це ідеальне місце для визначення власних команд.
Параметри:
caps(object): містить можливості для сесії, яка була створенаspecs(string[]): специфікації, які будуть запущені в робочому процесіbrowser(object): екземпляр створеної сесії браузера/пристрою
beforeSuite
Хук, який виконується перед початком набору (лише в Mocha/Jasmine)
Параметри:
suite(object): деталі набору
beforeHook
Хук, який виконується перед хуком всередині набору (наприклад, виконується перед викликом beforeEach у Mocha)
Параметри:
test(object): деталі тестуcontext(object): контекст тесту (представляє об'єкт World в Cucumber)
afterHook
Хук, який виконується після хуку всередині набору (наприклад, виконується після виклику afterEach у Mocha)
Параметри:
test(object): деталі тестуcontext(object): контекст тесту (представляє об'єкт World в Cucumber)result(object): результат хуку (містить властивостіerror,result,duration,passed,retries)
beforeTest
Функція, яка виконується перед тестом (лише в Mocha/Jasmine).
Параметри:
test(object): деталі тестуcontext(object): об'єкт області, з яким був виконаний тест
beforeCommand
Виконується перед виконанням команди WebdriverIO.
Параметри:
commandName(string): ім'я командиargs(*): аргументи, які команда отримає
afterCommand
Виконується після виконання команди WebdriverIO.
Параметри:
commandName(string): ім'я командиargs(*): аргументи, які команда отрималаresult(*): результат командиerror(Error): об'єкт помилки, якщо є
afterTest
Функція, яка виконується після завершення тесту (в Mocha/Jasmine).
Параметри:
test(object): деталі тестуcontext(object): об'єкт області, з яким був виконаний тестresult.error(Error): об'єкт помилки у випадку невдачі тесту, інакшеundefinedresult.result(Any): об'єкт повернення тестової функціїresult.duration(Number): тривалість тестуresult.passed(Boolean): true, якщо тест пройшов, інакше falseresult.retries(Object): інформація про повторні спроби окремих тестів, як визначено для Mocha та Jasmine, а також Cucumber, наприклад,{ attempts: 0, limit: 0 }, див.result(object): результат хуку (містить властивостіerror,result,duration,passed,retries)
afterSuite
Хук, який виконується після завершення набору (лише в Mocha/Jasmine)
Параметри:
suite(object): деталі набору
after
Виконується після завершення всіх тестів. У вас все ще є доступ до всіх глобальних змінних з тесту.
Параметри:
result(number): 0 - тест пройшов, 1 - тест не пройшовcaps(object): містить можливості для сесії, яка була створенаspecs(string[]): специфікації, які були запущені в робочому процесі
afterSession
Виконується відразу після завершення сесії webdriver.
Параметри:
config(object): об'єкт конфігурації WebdriverIOcaps(object): містить можливості для сесії, яка була створенаspecs(string[]): специфікації, які були запущені в робочому процесі
onComplete
Виконується після завершення роботи всіх робочих процесів і процес готовий до виходу. Помилка, видана в хуку onComplete, призведе до невдачі тестового запуску.
Параметри:
exitCode(number): 0 - успіх, 1 - невдачаconfig(object): об'єкт конфігурації WebdriverIOcaps(object): містить можливості для сесії, яка була створенаresult(object): об'єкт результатів, що містить результати тестів
onReload
Виконується при оновленні сторінки.
Параметри:
oldSessionId(string): ідентифікатор сесії старої сесіїnewSessionId(string): ідентифікатор сесії нової сесії
beforeFeature
Виконується перед функцією Cucumber.
Параметри:
uri(string): шлях до файлу функційfeature(GherkinDocument.IFeature): об'єкт функції Cucumber
afterFeature
Виконується після функції Cucumber.
Параметри:
uri(string): шлях до файлу функційfeature(GherkinDocument.IFeature): об'єкт функції Cucumber
beforeScenario
Виконується перед сценарієм Cucumber.
Параметри:
world(ITestCaseHookParameter): об'єкт світу, що містить інформацію про pickle та тестовий крокcontext(object): об'єкт світу Cucumber
afterScenario
Виконується після сценарію Cucumber.