Existence assertion

You can check existence of element using these functions.

Functions

group function description return value
exist exist Assert that the element exists in current screen
Scrolling occurs within withScroll function
TestElement(if exists)
TestNGException(if doesn’t exist)
exist existWithoutScroll Assert that the element exists without scrolling (same as above)
exist existWithScrollDown Assert that the element exists with scrolling down (same as above)
exist existWithScrollUp Assert that the element exists with scrolling up (same as above)
exist existInScanResults Assert that the element exists in scan results (same as above)
dontExist dontExist Assert that the element doesn’t exist in current screen
Scrolling occurs within withScroll function
empty element(if doesn’t exist)
TestNGException(if exists)
dontExist dontExistWithoutScroll Assert that the element doesn’t exist without scrolling (same as above)
dontExist dontExistWithScrollDown Assert that the element doesn’t exist with scrolling down (same as above)
dontExist dontExistWithScrollUp Assert that the element doesn’t exist with scrolling up (same as above)
dontExist dontExistInScanResults Assert that the element doesn’t exist in scan results (same as above)

Example

ExistDontExist1.kt

(kotlin/tutorial/basic/ExistDontExist1.kt)

package tutorial.basic

import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import shirates.core.configuration.Testrun
import shirates.core.driver.commandextension.*
import shirates.core.testcode.UITest

@Testrun("testConfig/android/androidSettings/testrun.properties")
class ExistDontExist1 : UITest() {

    @Test
    @Order(10)
    fun exist_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.exist("Network & internet")
                }
            }
        }
    }

    @Test
    @Order(20)
    fun exist_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.exist("System")
                }
            }
        }
    }

    @Test
    @Order(30)
    fun existWithScrollDown_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.existWithScrollDown("System")
                }
            }
        }
    }

    @Test
    @Order(40)
    fun existWithScrollDown_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.existWithScrollDown("Network business")
                }
            }
        }
    }

    @Test
    @Order(50)
    fun existWithScrollUp_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                        .flickBottomToTop()
                }.expectation {
                    it.existWithScrollUp("Network & internet")
                }
            }
        }
    }

    @Test
    @Order(60)
    fun existWithScrollUp_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                        .flickBottomToTop()
                }.expectation {
                    it.existWithScrollUp("Network business")
                }
            }
        }
    }

    @Test
    @Order(70)
    fun existInScanResult_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.action {
                    describe("Scans elements with scrolling down.")
                        .scanElements()
                }.expectation {
                    describe("Asserts that expected elements exist in scan results.")
                        .existInScanResults("Network & internet")
                        .existInScanResults("Storage")
                        .existInScanResults("System")
                }
            }
        }
    }

    @Test
    @Order(80)
    fun existInScanResult_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.condition {
                    describe("Scans elements with scrolling down.")
                        .scanElements()
                }.expectation {
                    it.existInScanResults("Network & internet")
                        .existInScanResults("Storage")
                        .existInScanResults("System")
                        .existInScanResults("Network business")
                }
            }
        }
    }

    @Test
    @Order(90)
    fun dontExist_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.dontExist("System")
                }
            }
        }
    }

    @Test
    @Order(100)
    fun dontExist_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.dontExist("Network & internet")
                }
            }
        }
    }

    @Test
    @Order(110)
    fun dontExistWithScrollDown_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.dontExistWithScrollDown("Network business")
                }
            }
        }
    }

    @Test
    @Order(120)
    fun dontExistWithScrollDown_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.expectation {
                    it.dontExistWithScrollDown("System")
                }
            }
        }
    }

    @Test
    @Order(130)
    fun dontExistWithScrollUp_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.condition {
                    it.flickBottomToTop()
                }.expectation {
                    it.dontExistWithScrollUp("Network business")
                }
            }
        }
    }

    @Test
    @Order(140)
    fun dontExistWithScrollUp_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.condition {
                    it.flickBottomToTop()
                }.expectation {
                    it.dontExistWithScrollUp("System")
                }
            }
        }
    }

    @Test
    @Order(150)
    fun dontExistInScanResults_OK() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.condition {
                    it.scanElements()
                }.expectation {
                    it.dontExistInScanResults("Switch")
                        .dontExistInScanResults("PS5")
                        .dontExistInScanResults("XBOX")
                }
            }
        }
    }

    @Test
    @Order(160)
    fun dontExistInScanResults_NG() {

        scenario {
            case(1) {
                condition {
                    it.macro("[Android Settings Top Screen]")
                }.condition {
                    it.scanElements()
                }.expectation {
                    it.dontExistInScanResults("Switch")
                        .dontExistInScanResults("PS5")
                        .dontExistInScanResults("XBOX")
                        .dontExistInScanResults("Network & internet")
                }
            }
        }
    }

}

Link