BUT...
YOUR COMPONENTS ARE
USED BY VIEWCONTROLLERS
Slide 11
Slide 11 text
AND THESE ONES
HAVE A LIFECYCLE
!
Slide 12
Slide 12 text
CONTROLLED BY YOUR
APPLICATION USERS
!
Slide 13
Slide 13 text
!
ARE PART OF THE SYSTEM
Slide 14
Slide 14 text
! ↔ # ↔ !
Slide 15
Slide 15 text
AND WE SHOULD TEST IT...
DON'T WE?
!
Slide 16
Slide 16 text
HOW MANY OF YOU IMPLEMENT
ACCEPTANCE TESTS
IN YOUR PROJECTS?
!
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
THEY RELY ON ACCESSIBILITY
THUS, THE UI LAYER
Slide 19
Slide 19 text
let app = XCUIApplication()
app.launch()
app.buttons["Stream"].tap()
app.tables.staticTexts["Enrique Iglesias"].tap()
Slide 20
Slide 20 text
WE TEST FROM THE
USER'S VIEWPOINT
Slide 21
Slide 21 text
BUT...
Slide 22
Slide 22 text
NON-UI STUFF
(THAT DEPENDS ON THE VIEWS LIFECYCLE)
IS ALSO TAKING PLACE
Slide 23
Slide 23 text
!
NETWORKING
Slide 24
Slide 24 text
!THAT REFLECTS ON UI
API INTERACTION
!THAT DOESN'T REFLECT ON UI
ANALYTICS
Slide 25
Slide 25 text
API INTERACTION
CAN BE TESTED WITH
ACCEPTANCE TESTS
Slide 26
Slide 26 text
let app = XCUIApplication()
app.launch()
app.buttons["Stream"].tap() //-----> REQUEST SENT
waitForContent(timeout: 5)
let enriqueCell = app.tables.staticTexts["Enrique Iglesias"]
enriqueCell.tap() // -----> REQUEST :+1:
Slide 27
Slide 27 text
BUT ANALYTICS...
Slide 28
Slide 28 text
let app = XCUIApplication()
app.launch()
app.buttons["Stream"].tap() //-----> SCREEN EVENT SENT
let enriqueCell = app.tables.staticTexts["Enrique Iglesias"]
enriqueCell.tap() // -----> WAS IT REALLY SENT?
Slide 29
Slide 29 text
THIS IS EVENT IS NOT SENT
Slide 30
Slide 30 text
THIS IS EVENT IS NOT SENT
THIS EVENT IS SENT WITH WRONG
PARAMETERS
Slide 31
Slide 31 text
WHAT CAN I DO THEN? !
(ANALYTICS MIGHT BE CRITICAL FOR YOUR BUSINESS !)
Slide 32
Slide 32 text
SZIMPLA
NETWORK TESTING IN SWIFT
GITHUB.COM/PEPIBUMUR/SZIMPLA
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
ONLY ! STEPS
Slide 35
Slide 35 text
1. RECORD THE SNAPSHOT
Slide 36
Slide 36 text
class AppUITests: XCTestCase {
func testDefault() {
try! Szimpla.Client.instance.start()
let app = XCUIApplication()
app.buttons["Navigate"].tap()
try! Szimpla.Client.instance.record(path: "CMDUConf.json")
}
}