XCTestplan рдФрд░ Xcode 11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд iOS рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

Raiffeisenbank рдореЗрдВ рдХрдИ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рдЧрд╛, рдФрд░ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред foto source: unsplash.com рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрднрд╛рд╖реА, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪрд╛рд░ рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ, iPad рдФрд░ iPhone рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ 4 рд╕реНрдХреНрд░реАрди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпреЗ 32 рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рдордп рд╣рд░ рдмрд╛рд░ рдмрд░реНрдмрд╛рдж рди рд╣реЛ рддрд╛рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдкрдбреЗрдЯ рд╣реЛред






XCTestPlan рдЯреВрд▓, рдЬреЛ Xcode 11 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЬрдХрд▓, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреА рдкрд╕рдВрдж рд╕рд╣рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдЪрд▓реЗрдВрдЧреЗред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП XCTestPlan рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

XCTestplan рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


рдЪрд▓реЛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдпреВрдЖрдИрдЯреА рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдЖрдк рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдореБрдЦреНрдп рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рдирдпрд╛ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ -> рдирдпрд╛ -> рд▓рдХреНрд╖реНрдп рдЪреБрдиреЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ UI рдкрд░реАрдХреНрд╖рдг рдмрдВрдбрд▓ рдмрдирд╛рдПрдВ ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕ рд▓рдХреНрд╖реНрдп рдореЗрдВ рдПрдХ рдирдпрд╛ XCTestplan рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛ рддреЛ рдореЗрдиреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрддреНрдкрд╛рдж -> рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ -> рдирдИ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЬрдирд╛ , рдпрд╛ рдпреЛрдЬрдирд╛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯ рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдпрджрд┐ рдЖрдк рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рд▓рдХреНрд╖реНрдп `рдЯреЗрд╕реНрдЯ` рдЯреИрдм рдкрд░ рд╣реИред

рдЪреВрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рд╕рд╛рдЭрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╣рдо рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдВрдЧреНрд░реЗрдЬреА, рдЬрд░реНрдорди рдФрд░ рдлреНрд░реЗрдВрдЪ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ рдЬреИрд╕реЗ:

рдЫрд╡рд┐

рдпрд╣ XCTestplan рдХрд╛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрдЕрдк рдФрд░ рд▓реЙрдиреНрдЪ рд╣реИред

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реНрд╡рдЪрд╛рд▓рди


рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдкрдХреЗ UI рдкрд░реАрдХреНрд╖рдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╡реЗ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдмрдирд╛рдПрдВрдЧреЗред рдЖрдк XCTAssert рдЪреЗрдХ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВред

рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдпрджрд┐ рдЖрдкрдХрд╛ рдпреВрдЖрдИ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ ( рдХреАрдмреЛрд░реНрдб рдХреЛ рджрд┐рдЦрд╛рдиреЗ / рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрдд рдПрдиреАрдореЗрд╢рди) рдХреЗ рд╕рдордп рддрдХ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ ред

рдиреАрдЪреЗ рд╕рднреА рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

func testScreenshots() {
    let app = XCUIApplication()
    let searchButton = app.buttons["search"]
    searchButton.tap()
    
    let keyboard = app.keyboards.firstMatch
    waitForExistence(of: keyboard)
    app.typeText("Cupertino")
    add(takePromoShot(name: "Search"))
    
    let firstResult = app.cells.firstMatch
    firstResult.tap()
    waitForDisappearance(of: keyboard)
    add(takePromoShot(name: "Result"))
}

func waitForExistence(of element: XCUIElement) {
    let predicate = NSPredicate(format: "exists == TRUE")
    expectation(for: predicate, evaluatedWith: element, handler: nil)
    waitForExpectations(timeout: 5.0, handler: nil)
}

func waitForDisappearance(of element: XCUIElement) {
    let predicate = NSPredicate(format: "exists == FALSE")
    expectation(for: predicate, evaluatedWith: element, handler: nil)
    waitForExpectations(timeout: 5.0, handler: nil)
}

func takePromoShot(name: String) -> XCTAttachment {
    let lang = Locale.preferredLanguages[0]
    let screenshot = XCUIScreen.main.screenshot()
    let attachment = XCTAttachment(screenshot: screenshot)
    attachment.lifetime = .keepAlways
    attachment.name = "\(lang)-\(name)"
    return attachment
}

рдирд╡реАрдирддрдо рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ, рднрд╛рд╖рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрддрд╛ рд╣реИ рдФрд░ .Acways рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ XCTAttachment рджреЗрддрд╛ рд╣реИ ред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд▓рд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред Lifiteme рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдПред рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓рдЧрд╛рддрд╛рд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреНрдпреЛрдВ рдФрд░ рдХрдм рдЧрд┐рд░ рдЧрдпрд╛; рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рдереЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдЯреЗрд╕реНрдЯрд╕реНрдХреНрд░реАрд╢реЙрдЯреНрд╕ () рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реЛрдВрдЧреЗред

рдЖрджрддрди рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА


рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рд╕рд╣реА рд╕рдордп, рдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдЧреНрдирд▓ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред Xcode 11 рдореЗрдВ, рдЗрд╕реЗ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ xcrun simctl status_bar рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдлреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ :

xcrun simctl status_bar booted override --time 9:41 --operatorName ' ' --cellularMode active --cellularBar 4 --wifiBars 3 --batteryState charged

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж, рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ Apple рдХреА рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯреАрдо рдХреЗрд╡рд▓ рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдПрдХ рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдЬрд┐рд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд░рд┐рдгрд╛рдореА рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдПрдХрддреНрд░ рдХрд░рдирд╛


рдЕрдм рд╣рдо рдЕрдкрдиреЗ UI рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рд╡реЗ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рддреЛ рд╣рдо Xcode рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗ ред рднрд╛рд╖рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХреГрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рднреА рд╣реЛрдВрдЧреЗред рдЬрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрдирдХ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреЗрдкрд░ рдХреНрд▓рд┐рдк рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЫрд╡рд┐рдпрд╛рдВ рдЦреБрдж QuickLook рдореЗрдВ рдЦреЛрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ ред

рдЫрд╡рд┐

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рднреА рдкрд░рд┐рдгрд╛рдореА рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпреЗ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо (Xcode 11 рдореЗрдВ рдПрдХ рдФрд░ рдмрджрд▓рд╛рд╡) рдХреЗ рдмреАрдЪ png рдпрд╛ jpg рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ JSON рдХреЛ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ xcparse рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редред рдпрд╣ Homebrew рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

xcparse screenshots /path/to/Test.xcresult /path/to/outputDirectory

рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЗ рдбрд┐рд╡рд╛рдЗрд╕, рдУрдПрд╕ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдореЗрдВ рдПрдХ рднрд╛рд╖рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдирд╛рдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдирдП рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рдлреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред WWDC20 рдореЗрдВ, рдореИрдВ XCTestplan рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╕рдВрдж рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдореБрдЭреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ AppStore рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред

All Articles