Test fixture
You can set up/clean up test environment using test fixture of UITest
.
Test fixture event functions
function | called on | AppiumServer |
---|---|---|
beforeAll | Before AppiumServer setup is done, before the first function of the test class is called | NOT available |
beforeAllAfterSetup | After AppiumServer setup is done, before the first function of the test class is called | available |
beforeEach | Before each function is called | available |
afterEach | After each function is called | available |
afterAll | After all functions are called | available |
finally | After AppiumServer is shutdown | NOT available |
Sample code
TestFixtureEvent1.kt
(kotlin/tutorial/basic/TestFixtureEvent1.kt)
package tutorial.basic
import org.junit.jupiter.api.Order
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtensionContext
import shirates.core.driver.TestDriverEventContext
import shirates.core.driver.driver
import shirates.core.vision.driver.commandextension.exist
import shirates.core.vision.testcode.VisionTest
class TestFixtureEvent1 : VisionTest() {
private fun printEvent(eventName: String) {
println("[$eventName] --------------------------------------------------")
try {
driver.appiumDriver
println("AppiumDriver: available")
} catch (t: Throwable) {
println("AppiumDriver: NOT available")
}
}
override fun beforeAll(context: ExtensionContext?) {
printEvent("beforeAll")
}
override fun beforeAllAfterSetup(context: ExtensionContext?) {
printEvent("beforeAllAfterSetup")
}
override fun beforeEach(context: ExtensionContext?) {
printEvent("beforeEach")
}
override fun afterEach(context: ExtensionContext?) {
printEvent("afterEach")
}
override fun afterAll(context: ExtensionContext?) {
printEvent("afterAll")
}
override fun finally() {
printEvent("finally")
}
override fun setEventHandlers(context: TestDriverEventContext) {
printEvent("setEventHandlers")
}
@Test
@Order(10)
fun test1() {
scenario {
case(1) {
expectation {
it.exist("Network & internet")
}
}
}
}
@Test
@Order(20)
fun test2() {
scenario {
case(1) {
expectation {
it.exist("Connected devices")
}
}
}
}
}
Console output
...
[beforeAll] --------------------------------------------------
AppiumDriver: NOT available
...
[setEventHandlers] --------------------------------------------------
AppiumDriver: available
...
[beforeAllAfterSetup] --------------------------------------------------
AppiumDriver: available
...
[beforeEach] --------------------------------------------------
AppiumDriver: available
...
[afterEach] --------------------------------------------------
AppiumDriver: available
...
[setEventHandlers] --------------------------------------------------
AppiumDriver: available
...
[beforeEach] --------------------------------------------------
AppiumDriver: available
...
[afterEach] --------------------------------------------------
AppiumDriver: available
...
[afterAll] --------------------------------------------------
AppiumDriver: available
262 [00:01:25] 2025/04/24 03:57:54.611 {} 0 - [info] +1030 C () Logging to file:////Users/wave1008/Downloads/TestResults/testConfig@a/2025-04-24_035628/TestFixtureEvent1/
Copying jar content _ReportScript.js to /Users/wave1008/Downloads/TestResults/testConfig@a/2025-04-24_035628/TestFixtureEvent1
Copying jar content _ReportStyle.css to /Users/wave1008/Downloads/TestResults/testConfig@a/2025-04-24_035628/TestFixtureEvent1
Loading: /Users/wave1008/Downloads/TestResults/testConfig@a/2025-04-24_035628/TestFixtureEvent1/TestLog(commandList)_20250424035628.log
Saved: /Users/wave1008/Downloads/TestResults/testConfig@a/2025-04-24_035628/TestFixtureEvent1/TestFixtureEvent1@a.xlsx
263 [00:01:27] 2025/04/24 03:57:55.762 {} 0 - [info] +1151 C () Quitting TestDriver.
264 [00:01:27] 2025/04/24 03:57:56.369 {} 0 - [info] +607 C () Test class executed. (duration: 87.8 sec)
[finally] --------------------------------------------------
AppiumDriver: NOT available
Disconnected from the target VM, address: '127.0.0.1:57962', transport: 'socket'
Process finished with exit code 0