
page.waitForTimeout — это всего лишь warning. Почему зелёный линт не спасает Playwright-тесты
Kova13v 31 минуту назад page.waitForTimeout — это всего лишь warning. Почему зелёный линт не спасает Playwright-тесты Средний 6 мин 1.2K Тестирование IT-систем * Тестирование веб-сервисов * Кейс Вот тест, который...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: Kova13v 31 минуту назад page. waitForTimeout — это всего лишь warning. Почему зелёный линт не спасает Playwright-тесты Средний 6 мин 1.
2K Тестирование IT-систем * Тестирование веб-сервисов * Кейс Вот тест, который проходит CI в большинстве проектов, что я видел:test('форма отправляется', async ({ page }) => { await page. goto('/feedback await page. click({ force: true }); await page.
Технические детали
waitForTimeout(3000); }); Три греха в пяти строках: клик в обход проверок видимости, слепая пауза вместо ожидания состояния и ни одной проверки результата — тест «проходит», даже если форма мертва. При этом подключите eslint-plugin-playwright с рекомендованным конфигом, и линт останется зелёным. Все три нарушения в recommended-наборе — это warning, а warning не валит сборку.
Это вторая статья про paranoid-qa — опенсорсный пак скиллов, который заставляет Claude Code подтверждать каждый вердикт артефактом (первая — о том, как я запретил агенту говорить «всё работает» без пруфов: Сегодня — про ревью автотестов: три слоя, по которым дефект проходит мимо линта. Покажу конфиг, который закрывает первые два, и десять правил для третьего. Слой первый: плагина может просто не бытьДва самых опасных класса дефектов в Playwright-тестах — висящие промисы и ручные ассерты — без специальных правил невидимы для ESLint.
toBeVisible(); // нет await - тест не ждёт expect(await loc. toBe(true); // мгновенный замер, не ретраится Первое ловит playwright/missing-playwright-await, второе — playwright/prefer-web-first-assertions. Оба правила — из eslint-plugin-playwright, который ставится отдельно и подключён далеко не в каждом проекте.
Отраслевые последствия
Универсальный @typescript-eslint/no-floating-promises тоже поймал бы первый случай, но он требует type-aware линтинга (parserOptions. project) — его включают ещё реже, потому что линт становится заметно медленнее. Пока плагина нет, floating promise будет тихо флакать месяцами.
Слой второй: recommended наполовину состоит из warnЯ пошёл в исходники плагина и выписал severity каждого правила из recommended-конфига — файл src/plugin. ts, объект sharedConfig; актуально для v2. Вот что там:SeverityПравилаerrormissing-playwright-await, prefer-web-first-assertions, no-networkidle, no-focused-test, valid-expect, no-standalone-expect, no-wait-for-navigation и ещё несколькоwarnno-wait-for-timeout, no-force-option, expect-expect (тест без ассертов!
), no-skipped-test, no-conditional-in-test, no-element-handle, no-eval, no-page-pause и другиеВо второй строке — слепая пауза, клик с force и тест, который ничего не проверяет: всё warn. Логика мейнтейнеров понятна: у этих правил бывают легитимные исключения, ломать сборку из-за них жестоко.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





