Protractor — это инструмент для энд-ту-энд тестирования Angular и других веб-приложений на основе браузера. Одной из важных задач при автоматизированном тестировании является управление сессиями браузера, в частности запуск тестов в приватном (инкогнито) режиме, что позволяет изолировать тестируемую среду от данных предыдущих сессий, кэша и куки.
Protractor использует WebDriver, который позволяет передавать
опции запуска браузера. Для Google Chrome приватный
режим активируется с помощью аргумента --incognito.
Настройка в файле конфигурации protractor.conf.js выглядит
следующим образом:
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['specs/**/*.spec.js'],
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--incognito', '--disable-extensions']
}
}
};
Ключевые моменты:
--incognito — включает приватный режим.--disable-extensions — предотвращает влияние расширений
браузера на тесты.chromeOptions — объект для передачи всех специфичных
для Chrome настроек.Для Firefox используется аналогичный подход, но с профилем Firefox:
const firefox = require('selenium-webdriver/firefox');
exports.config = {
capabilities: {
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-private']
}
}
};
Аргумент -private включает приватный режим Firefox.
Приватный режим изменяет несколько ключевых аспектов браузера:
Изоляция кук и сессий Все куки, локальное хранилище и сессии не сохраняются после закрытия окна браузера. Это позволяет проверять сценарии аутентификации без зависимости от предыдущих тестов.
Кэш и данные сайтов Кэш браузера отключён, поэтому страницы загружаются как при первом посещении. Это особенно важно для тестирования динамических изменений на сайте.
Расширения и плагины В большинстве случаев приватный режим отключает сторонние расширения. Это уменьшает вероятность влияния постороннего кода на результат тестов.
describe('Login flow in incognito mode', function() {
it('should login with valid credentials', async function() {
await browser.get('https://example.com/login');
await element(by.id('username')).sendKeys('testuser');
await element(by.id('password')).sendKeys('password');
await element(by.id('loginButton')).click();
const welcomeText = await element(by.css('.welcome')).getText();
expect(welcomeText).toContain('Welcome, testuser');
});
});
При запуске этого теста в приватном режиме можно быть уверенным, что никакие куки от предыдущих сессий не повлияют на результат.
Приватный режим можно использовать для проверки работы функций очистки данных на сайте, например удаления профиля, очистки корзины или выхода из системы.
Protractor позволяет задавать режим запуска глобально для
всего проекта через capabilities или
локально для отдельных тестов с использованием
browser.restart():
browser.restart().then(function() {
browser.waitForAngularEnabled(false);
browser.driver.getCapabilities().then(function(caps) {
console.log('New incognito session started:', caps.get('browserName'));
});
});
Это позволяет переключаться между обычным и приватным режимом в рамках одного набора тестов без изменения основной конфигурации.
Приватный режим в Protractor обеспечивает надёжную и воспроизводимую среду для тестирования веб-приложений. Управление аргументами браузера, грамотное использование изоляции сессий и кэша позволяет создавать стабильные энд-ту-энд тесты, минимизируя влияние внешних факторов на результат.