Все мы знаем, какие XCUITest бывают:
медленные, флакающие, симуляторы жрут всё.
⠀
Автор SwiftLens придумал, как тестировать SwiftUI,
как будто это unit-тест. И это 🔥
Что даёт SwiftLens:
✅ Видит иерархию SwiftUI через PreferenceKey
⚡️ Тесты за 0.06 сек (vs 15 сек в XCUITest)
🧼 Меньше кода — .lensTrack(id:) и поехали
🔁 Работает с async: ждёт views, проверяет текст, нажимает кнопки
Пример — было и стало:
❌ XCUITest:
app.buttons["saveButton"].tap()
XCTAssert(app.staticTexts["successToast"].exists)✅ SwiftLens:
try await interactor.tap("saveButton")
try await observer.waitForVisible("successToast")Где особенно полезно:
🚀 На CI — быстро и стабильно
🛠 В pet-проектах — когда важен фидбек
📱 В любом SwiftUI-приложении — без боли
Минусы :
⚠️ Нужно вставлять .lensTrack, .lensSheet
⚠️ PreferenceKey не работает из .sheet — нужен обход
⚠️ Только SwiftUI
⚠️ Авторский проект, не стандарт Apple — но уже юзабельный
Хочешь попробовать?
1️⃣ Добавь .lensTrack(id: "myView")
2️⃣ Подключи LensObserver и LensInteractor
3️⃣ Запусти — и кайфуй от скорости
🎥 Видео
💾 GitHub
