В проектах на JavaScript тестирование с Playwright часто сопровождается использованием множества внешних пакетов: библиотек для отчетности, утилит для мокирования, средств интеграции с CI/CD. Конфликты зависимостей возникают, когда разные пакеты требуют несовместимых версий одной и той же библиотеки. Типичные симптомы:
Cannot find module или
Module version mismatch.Конфликты бывают явные (например, два пакета
напрямую зависят от разных версий playwright-core) и
неявные, когда несовместимость проявляется косвенно
через цепочку зависимостей.
npm ls <package>
показывает дерево зависимостей и версии конкретного пакета.
Например:npm ls playwright-core
Отобразит, какие пакеты используют playwright-core и
какие версии установлены. Это позволяет выявить дублирующиеся
версии.
npm dedupe
npx npm-check-updates -u
npm install
{
"resolutions": {
"playwright-core": "1.42.0"
}
}
Это гарантирует, что все зависимости используют одну и ту же версию.
playwright и
playwright-core может вызывать сбои при запуске
тестов.@playwright/test.Фиксация версий Использование точных версий в
package.json ("playwright": "1.42.0" вместо
"^1.42.0") снижает риск появления конфликтов после
установки зависимостей.
Очистка node_modules и lock-файлов Иногда
конфликт сохраняется в lock-файле (package-lock.json или
yarn.lock). Полное удаление node_modules и
lock-файла с последующей переустановкой решает большинство
проблем:
rm -rf node_modules package-lock.json
npm install
Использование изолированных окружений Playwright поддерживает использование разных версий браузеров через CLI. Для сложных проектов можно создать отдельный workspace с собственной версией Playwright и зависимостей.
Ручная корректировка зависимостей Если
npm ls выявил дублирующие версии, иногда приходится вручную
изменять package.json зависимых пакетов или использовать
resolutions.
Совместимость с TypeScript Для проектов на
TypeScript важно, чтобы версии @types/* совпадали с
версиями библиотек. Несовпадение типов приводит к ошибкам компиляции,
даже если runtime работает корректно.
Предположим, проект использует playwright@1.42.0 и
@playwright/test@1.44.0. При запуске тестов появляется
ошибка playwright-core version mismatch.
Решение:
npm ls playwright-core
Обнаружение двух версий: 1.42.0 и 1.44.0.
Исправление package.json:
{
"dependencies": {
"playwright": "1.44.0",
"@playwright/test": "1.44.0"
}
}
rm -rf node_modules package-lock.json
npm install
После этого тесты запускаются стабильно.
npm ls или аналогов.dedupe и resolutions для
устранения дубликатов.Эффективное управление зависимостями минимизирует риски неожиданных сбоев тестов, ускоряет отладку и упрощает поддержку Playwright-проектов.