В WebdriverIO управление выполнением тестов и организация их изоляции играет ключевую роль для стабильности и удобства поддержки автоматизации. Пропуск тестов позволяет временно исключать отдельные сценарии из запуска, а изоляция обеспечивает независимость тестов друг от друга, что минимизирует влияние одного сценария на другие.
skipWebdriverIO поддерживает несколько способов пропуска тестов. Основные механизмы:
Метод it.skip Используется для
временного исключения конкретного теста из запуска.
it.skip('не выполняемый тест', async () => {
await browser.url('https://example.com');
const title = await browser.getTitle();
expect(title).toBe('Example Domain');
});
Тест будет проигнорирован, и в отчёте отобразится как пропущенный.
Метод describe.skip Позволяет
пропускать целый блок тестов.
describe.skip('Блок тестов для временной приостановки', () => {
it('тест 1', async () => { /* код */ });
it('тест 2', async () => { /* код */ });
});
Все тесты внутри блока не выполняются, что удобно при работе с недоступными функциями или экспериментальными сценариями.
Условный пропуск с this.skip()
Внутри теста можно динамически пропустить его выполнение на основе
условий.
it('пропуск при определённом условии', async function () {
const env = process.env.TEST_ENV;
if (env !== 'staging') {
this.skip();
}
await browser.url('https://example.com');
});
Такой подход позволяет интегрировать пропуск в зависимости от окружения, конфигурации или состояния приложения.
WebdriverIO поддерживает фильтрацию тестов по тегам, что упрощает массовое исключение отдельных категорий. В конфигурации можно указать, какие тесты запускать или пропускать:
// wdio.conf.js
mochaOpts: {
grep: '@critical', // выполняются только тесты с тегом @critical
invert: true // инверсия фильтрации, пропуск тестов с тегом
}
Использование тегов помогает управлять тестовыми наборами без модификации кода.
Изоляция обеспечивает выполнение каждого теста в независимой среде, предотвращая побочные эффекты и зависимость результатов. Основные подходы:
Перезапуск браузера для каждого теста Конфигурация WebdriverIO позволяет сбрасывать состояние браузера перед каждым тестом:
beforeEach(async () => {
await browser.reloadSession();
});
Это гарантирует отсутствие остаточных данных, cookies или локального хранилища от предыдущих сценариев.
Использование beforeEach и
afterEach для подготовки и очистки Эти хуки
помогают настроить стартовое состояние и очищать тестовые данные:
beforeEach(async () => {
await browser.url('https://example.com/login');
});
afterEach(async () => {
await browser.execute(() => localStorage.clear());
await browser.deleteCookies();
});
Такой подход обеспечивает повторяемость тестов и минимизирует ложные отрицательные результаты.
Локальные данные и уникальные идентификаторы Для тестов с созданием ресурсов важно использовать уникальные значения, чтобы каждый тест был независимым:
const userEmail = `user_${Date.now()}@example.com`;
await browser.$('#email').setValue(userEmail);WebdriverIO позволяет настраивать параллельное выполнение и изоляцию на уровне конфигурации:
Пример конфигурации:
capabilities: [{
maxInstances: 1,
browserName: 'chrome',
}],
this.skip()
вместо постоянного it.skip, если условие зависит от
окружения или внешних данных.Эти методы создают стабильную и управляемую среду тестирования, сокращают количество ложных ошибок и упрощают сопровождение больших тестовых наборов.