Пакет @playwright/test даёт web-first assertions (expect(locator).toBeVisible() и др.), которые автоматически ретраятся до timeout, пока условие не выполнится.
Разбор
Отличие от мгновенного expect(value).toBe: локаторные expect ждут UI.
expect.poll / expect.toPass для кастомных условий.
Можно soft expect через отдельные паттерны, но осторожно.