Поддержка Microsoft Edge в экосистеме Cypress появилась сравнительно поздно, но быстро стала стандартной практикой для компаний, ориентированных на корпоративный сегмент. Edge основан на Chromium, что обеспечивает близкую совместимость с Chrome, однако имеются нюансы, влияющие на стабильность тестов, конфигурацию окружения и работу с DevTools-протоколом.
Edge использует тот же движок рендеринга и сетевой стек, что и
Chrome, поэтому большая часть API Cypress работает без модификаций.
Тесты, использующие cy.intercept(),
cy.request() или работу с localStorage, ведут
себя идентично. Отличия проявляются в следующих аспектах:
cypress.config.js для выбора EdgeЗапуск Edge осуществляется через указание браузера по имени. Cypress автоматически обнаруживает доступные браузеры на системе, включая Edge Stable, Edge Beta и Edge Dev. Наиболее стабильный вариант – Edge Stable.
module.exports = {
e2e: {
setupNodeEvents(on, config) {
// дополнительные хуки при необходимости
},
browser: 'edge'
}
}
При наличии нескольких каналов Edge Cypress позволяет выбирать их через UI или CLI. В CI необходимо явное указание пути к бинарному файлу.
В корпоративных CI часто используется кастомный путь к Edge. Cypress допускает прямое указание бинарника:
module.exports = {
e2e: {
browser: {
name: 'edge',
channel: 'stable',
path: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'
}
}
}
Для Linux-окружений это особенно актуально, поскольку Edge доступен в репозиториях и устанавливается нестандартно. При сборках в Docker важно закрепить конкретную версию, чтобы избежать несовместимости DevTools-протокола.
Edge часто разворачивается в доменных средах с управляемыми GPO-политиками. Такие политики могут блокировать:
Для Cypress это критично. Блокировка DevTools-канала приводит к ошибкам при запуске браузера и падению тестов. В корпоративных сетях также встречаются прокси, внедряющие свои сертификаты. Требуется корректная загрузка сертификата в Edge или отключение проверки в CI-контейнере.
Edge применяет собственные оптимизации климатизации трафика. На практике это может влиять на работу:
cy.intercept() при подстановке ответов;fetch;Стандартные сценарии работают стабильно, но в некоторых версиях Edge
наблюдались задержки на обработку fetch при большом
количестве перехватов.
Edge обеспечивает более строгую политику разрешений для микрофона и
камеры. Для тестов, связанных с WebRTC, иногда требуется предварительная
активация флагов через args, передаваемые Cypress
браузеру:
const { defineConfig } = require('cypress')
module.exports = defineConfig({
e2e: {
browser: 'edge',
launchOptions: {
args: [
'--use-fake-device-for-media-stream',
'--use-fake-ui-for-media-stream'
]
}
}
})
Такая конфигурация обеспечивает детерминированность UI-поведения во время тестирования.
Хотя Edge совместим с протоколом Chrome DevTools, история показывает случаи несовпадений версий. Cypress использует протокол мыши, клавиатуры, навигации и сетевых событий. Несовпадения версий могут вызвать:
before:browser:launch;Для стабильной работы важно отслеживать матрицу совместимости Cypress и Edge. Большие обновления Edge в корпоративных средах часто задерживаются, что, наоборот, делает тестирование в таких условиях более стабильным.
Несмотря на общую Chromium-основу, Edge добавляет собственные экспериментальные элементы:
Tracking Prevention;Некоторые приложения используют эти функции, и Cypress должен
учитывать их при открытии окна браузера через дополнительные
launchOptions.
При UI-тестировании Edge проявляет своеобразное поведение:
При визуальных тестах и практиках snapshot-сравнения результаты Edge отличаются от Chrome, что требует отдельных эталонных снимков.
Современные CI-конвейеры часто запускают Cypress по матрицам: Chrome + Edge + Firefox. Edge занимает важную позицию для проверки доступности корпоративных приложений и Single Sign-On. Практика показывает, что часть ошибок проявляется только в Edge, особенно при работе с cookie-политиками и локальными сертификатами.
Edge предоставляет платформу WebView2 для встраивания веб-контента в десктоп-приложения. Cypress способен тестировать такие приложения через запуск встроенного браузера. При тестировании WebView2 важны корректная маршрутизация запросов, стабильный DevTools-канал и отсутствие конфликтов с UI-фреймворками.
Совокупность перечисленных особенностей делает Edge важным элементом кроссбраузерного тестирования на Cypress. Несмотря на общую Chromium-основу, Edge формирует свою инженерную специфику через корпоративные политики, DevTools-протокол и дополнительные настройки браузера.