Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FlakySafely не работает в скриншот тестах после смены локали #561

Closed
sumin93 opened this issue Aug 24, 2023 · 0 comments · Fixed by #569
Labels
bug Something isn't working

Comments

@sumin93
Copy link
Collaborator

sumin93 commented Aug 24, 2023

Describe the bug
Создал скриншот тест, в котором необходимо сделать снимок экрана после того, как определенный элемент станет видимым. Для проверки на видимость используется kView.isVisible(). Под капотом вызов этого метода оборачивается во flakySafely с определенным таймаутом (вроде 10 секунд), т.е. если первая проверка вернет false, то в течение 10 секунд она повторится еще несколько раз

class LoadUserScreenshots : DocLocScreenshotTestCase(locales = "en, fr") {

@get:Rule
val activityRule = activityScenarioRule<LoadUserActivity>()

@Test
fun takeScreenshots() = run {
    LoadUserScreen {
        step("Capture initial state") {
            loadingButton.isVisible()
            captureScreenshot("Initial state")
        }
        step("Capture progress state") {
            loadingButton.click()
            progressBarLoading.isVisible()
            captureScreenshot("Progress state")
        }
        step("Capture content state") {
            username.isVisible() // Обратить внимание на этот шаг, тест падает здесь
            captureScreenshot("Content state")
        }
    }
}

}

Если в конструктор DocLocScreenshotTestCase передать список локалей, то тест запустится для каждой из них, при этом для первого языка все пройдет успешно и вызов метода isVisible будет обернут в flakySafely и спустя определенное время тест будет зеленым. Но при втором прогоне тест упадет с ошибкой, что isVisible вернул false, дополнительных вызовов в течение 10 секунд не будет, flakySafely не отрабатывает.

Важно - если убрать метод run и step-ы и вызывать метод isVisible напрямую в тестовом методе, то все пройдет успешно, в обоих случаях flakySafely применится

To Reproduce
Создать скриншот-тест с несколькими локалями
В скриншот тесте создать тестовый метод, который будет использовать run и step-ы
На одном из шагов должна быть проверка на kView.isVisible, которая вернет true не мгновенно, а спустя несколько секунд
Для первой локали все пройдет успешно, для следующей - тест упадет

Expected behavior
FlakySafely используется всегда независимо от переданного количества локалей

Smartphone (please complete the following information):
Воспроизводилось на устройствах с API 28, 30, 33

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant