Modern QA2026Стратегия кроссбраузерного тестирования
Join

Course09 Mobile & Cross-Platform Testing

Cutting-edge · Chapter 09

Стратегия кроссбраузерного тестирования

Updated Jul 2026

Трёхуровневый подход

Тестирование каждой функции в каждом браузере не является ни практичным, ни необходимым. Ключ — знать, что тестировать везде, что проверять выборочно и что пропускать. Трёхуровневая стратегия обеспечивает максимальное покрытие при минимальных усилиях.

Статистика использования браузеров (справочная)

Браузер Доля на десктопе Доля на мобильных Движок Приоритет тестирования
Chrome ~65% ~63% Blink Всегда
Safari ~18% ~25% WebKit Всегда
Firefox ~3% ~0.5% Gecko Каждый релиз
Edge ~5% ~0.3% Blink Еженедельно (общий движок с Chrome)
Samsung Internet <1% ~4.5% Blink Ежемесячно (значителен на Android)
Opera ~2% ~1.5% Blink Ежеквартально
UC Browser <1% ~1.5% Смешанный Только при ориентации на Индию/ЮВА

Ключевой вывод: движок важнее браузера

Chrome, Edge, Opera, Samsung Internet и Brave используют движок Blink. Если ваше приложение работает в Chrome, оно будет работать в Edge за редкими исключениями. Это означает, что у вас три реальных движка рендеринга для тестирования:

  • Blink (Chrome и производные) -- ~75% всех пользователей
  • WebKit (Safari) -- ~20% всех пользователей
  • Gecko (Firefox) -- ~3% всех пользователей

Трёхуровневая стратегия

+------------------------------------------------------+
|  Tier 1: Full Regression (every PR)                  |
|  Chrome (latest) + Firefox (latest) + Safari (latest)|
|  These 3 cover ~92% of desktop users                 |
+------------------------------------------------------+
|  Tier 2: Critical Path (weekly / release)            |
|  Chrome Android + Safari iOS + Edge                  |
|  Samsung Internet + Firefox Android                  |
+------------------------------------------------------+
|  Tier 3: Spot Check (monthly / quarterly)            |
|  Older Safari (2 versions back)                      |
|  Chrome on low-end Android                           |
|  UCBrowser / Opera Mini (if emerging market users)   |
+------------------------------------------------------+

Уровень 1: полная регрессия при каждом PR

Запускайте весь набор тестов на последних версиях Chrome, Firefox и Safari. Эти три браузера представляют три движка рендеринга и покрывают подавляющее большинство пользователей.

// playwright.config.ts -- Tier 1 configuration
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
    projects: [
        {
            name: 'chrome',
            use: { ...devices['Desktop Chrome'] },
        },
        {
            name: 'firefox',
            use: { ...devices['Desktop Firefox'] },
        },
        {
            name: 'safari',
            use: { ...devices['Desktop Safari'] },
        },
    ],
});

Уровень 2: критические пути при релизе

Тестируйте наиболее важные пользовательские сценарии (вход, поиск, корзина, оплата) в мобильных браузерах и менее распространённых десктопных браузерах:

// playwright.config.tier2.ts
export default defineConfig({
    projects: [
        {
            name: 'chrome-android',
            use: { ...devices['Pixel 7'] },
        },
        {
            name: 'safari-ios',
            use: { ...devices['iPhone 15'] },
        },
        {
            name: 'edge',
            use: { channel: 'msedge' },
        },
    ],
    // Only run critical path tests
    testMatch: '**/critical-path/**',
});

Уровень 3: выборочные проверки

Ручные или полуавтоматизированные проверки на старых браузерах и нишевых платформах. Их не нужно запускать в CI:

# Quarterly checklist for Tier 3 browsers
# Run manually on BrowserStack/Sauce Labs:
# - Safari 2 versions back: login + main page + checkout
# - Chrome on Android 12 (low-end): page load under 5s
# - Samsung Internet: form submission + file upload
# - Opera Mini: basic content rendering (no JS-heavy features)

Настройка кроссбраузерного CI

# .github/workflows/cross-browser.yml
name: Cross-Browser Tests
on:
  pull_request:
    # Tier 1: every PR
  schedule:
    - cron: '0 6 * * 1'  # Tier 2: weekly on Monday
    - cron: '0 6 1 * *'  # Tier 3: monthly on 1st

jobs:
  tier-1:
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    strategy:
      matrix:
        browser: [chromium, firefox, webkit]
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npx playwright install --with-deps ${{ matrix.browser }}
      - run: npx playwright test --project=${{ matrix.browser }}

  tier-2:
    if: github.event_name == 'schedule' || github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npx playwright install --with-deps
      - run: npx playwright test --config=playwright.config.tier2.ts

  tier-3:
    if: github.event.schedule == '0 6 1 * *'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - name: Run on BrowserStack
        env:
          BROWSERSTACK_USER: ${{ secrets.BS_USER }}
          BROWSERSTACK_KEY: ${{ secrets.BS_KEY }}
        run: npx playwright test --config=playwright.config.tier3.ts

Особенности браузеров в CI

Браузер Проблема в CI Решение
Safari/WebKit Недоступен на Linux CI-раннерах Используйте движок WebKit от Playwright (близкое приближение)
Safari (настоящий) Требует macOS-раннер Используйте macOS-раннер для критичных Safari-тестов
Edge Требует отдельную установку Используйте channel: 'msedge' в Playwright
Firefox Требователен к памяти в CI Увеличьте память раннера или ограничьте параллельные тесты
Mobile Safari Невозможно автоматизировать напрямую Используйте BrowserStack/Sauce Labs
Samsung Internet Отсутствует в стандартных инструментах автоматизации Используйте лабораторию устройств BrowserStack

Когда тестировать на реальных браузерах vs эквивалентах движков

Сценарий Нужен реальный браузер? Почему
Различия CSS-рендеринга Нет -- достаточно теста движка Одинаковый движок = одинаковый рендеринг
Поведение автозаполнения форм Да Специфичные для браузера UI-оверлеи
Конфликты расширений Да Расширения специфичны для браузера
Поведение скачивания/печати Да Специфичные для браузера диалоги
Промпты установки PWA Да Различаются в Chrome, Edge, Safari
Видеозвонки через WebRTC Да Различия реализации в каждом браузере
Payment Request API Да Различный UI в каждом браузере

Движок WebKit от Playwright — близкое, но не идентичное приближение к Safari. Для большинства веб-тестирования его достаточно. Для Safari-специфичных функций (воспроизведение медиа, CSS только для WebKit, Share Sheet) тестируйте на реальном Safari через BrowserStack.

Трёхуровневая стратегия балансирует тщательность с практичностью. Уровень 1 ловит 95% кроссбраузерных багов. Уровень 2 ловит мобильно-специфичные проблемы. Уровень 3 — страховка от крайних случаев длинного хвоста.