Особенности Edge

Поддержка Microsoft Edge в экосистеме Cypress появилась сравнительно поздно, но быстро стала стандартной практикой для компаний, ориентированных на корпоративный сегмент. Edge основан на Chromium, что обеспечивает близкую совместимость с Chrome, однако имеются нюансы, влияющие на стабильность тестов, конфигурацию окружения и работу с DevTools-протоколом.

Chromium-основа и влияние на Cypress

Edge использует тот же движок рендеринга и сетевой стек, что и Chrome, поэтому большая часть API Cypress работает без модификаций. Тесты, использующие cy.intercept(), cy.request() или работу с localStorage, ведут себя идентично. Отличия проявляются в следующих аспектах:

  • механизм обновлений и версия драйвера DevTools;
  • дополнительные политики корпоративной безопасности;
  • расширенное управление сертификатами и сетевыми фильтрами.

Настройки в 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-окружения

В корпоративных 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

Edge часто разворачивается в доменных средах с управляемыми GPO-политиками. Такие политики могут блокировать:

  • доступ DevTools;
  • инициализацию WebSocket-канала для протокола Chrome DevTools;
  • скачивание файлов;
  • работу с cookies третьих сторон.

Для Cypress это критично. Блокировка DevTools-канала приводит к ошибкам при запуске браузера и падению тестов. В корпоративных сетях также встречаются прокси, внедряющие свои сертификаты. Требуется корректная загрузка сертификата в Edge или отключение проверки в CI-контейнере.

Сетевые перехваты и поведение Edge

Edge применяет собственные оптимизации климатизации трафика. На практике это может влиять на работу:

  • cy.intercept() при подстановке ответов;
  • подмен запросов типа fetch;
  • синхронизацию между вкладками.

Стандартные сценарии работают стабильно, но в некоторых версиях Edge наблюдались задержки на обработку fetch при большом количестве перехватов.

Работа с WebRTC и медиапотоками

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-поведения во время тестирования.

Поддержка DevTools и протокольные несовпадения

Хотя Edge совместим с протоколом Chrome DevTools, история показывает случаи несовпадений версий. Cypress использует протокол мыши, клавиатуры, навигации и сетевых событий. Несовпадения версий могут вызвать:

  • зависания при переходах между страницами;
  • некорректные события before:browser:launch;
  • сбои при сборе coverage.

Для стабильной работы важно отслеживать матрицу совместимости Cypress и Edge. Большие обновления Edge в корпоративных средах часто задерживаются, что, наоборот, делает тестирование в таких условиях более стабильным.

Тестирование рендеринга Edge-специфичных возможностей

Несмотря на общую Chromium-основу, Edge добавляет собственные экспериментальные элементы:

  • политику Tracking Prevention;
  • интеграцию Microsoft Account;
  • SmartScreen;
  • пограничные режимы для PDF-просмотра.

Некоторые приложения используют эти функции, и Cypress должен учитывать их при открытии окна браузера через дополнительные launchOptions.

Особенности выполнения UI-тестов

При UI-тестировании Edge проявляет своеобразное поведение:

  • другие метрики шрифтов;
  • отличия в антиалиасинге;
  • иные правила сглаживания изображений.

При визуальных тестах и практиках snapshot-сравнения результаты Edge отличаются от Chrome, что требует отдельных эталонных снимков.

CLI-запуск и матрицы стратегий

Современные CI-конвейеры часто запускают Cypress по матрицам: Chrome + Edge + Firefox. Edge занимает важную позицию для проверки доступности корпоративных приложений и Single Sign-On. Практика показывает, что часть ошибок проявляется только в Edge, особенно при работе с cookie-политиками и локальными сертификатами.

Использование Edge в режиме WebView2

Edge предоставляет платформу WebView2 для встраивания веб-контента в десктоп-приложения. Cypress способен тестировать такие приложения через запуск встроенного браузера. При тестировании WebView2 важны корректная маршрутизация запросов, стабильный DevTools-канал и отсутствие конфликтов с UI-фреймворками.


Совокупность перечисленных особенностей делает Edge важным элементом кроссбраузерного тестирования на Cypress. Несмотря на общую Chromium-основу, Edge формирует свою инженерную специфику через корпоративные политики, DevTools-протокол и дополнительные настройки браузера.