annotate SimoleonUITests/SimoleonUITests.swift @ 99:1d661f15adab

Fixes UI Testing bugs on iPad
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Tue, 03 Aug 2021 18:48:32 +0100
parents fa994172c050
children e3e6dfd7fdbf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 //
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
2 // SimoleonUITests.swift
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
3 // SimoleonUITests
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4 //
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 08/07/2021.
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 //
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 import XCTest
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10 class SimoleonUITests: XCTestCase {
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12 override func setUpWithError() throws {
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13 // Put setup code here. This method is called before the invocation of each test method in the class.
99
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
14 // if UIDevice.current.userInterfaceIdiom == .pad {
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
15 // XCUIDevice.shared.orientation = .landscapeRight
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
16 // sleep(2)
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
17 // }
0
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 // In UI tests it is usually best to stop immediately when a failure occurs.
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20 continueAfterFailure = false
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22 // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
23 }
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
24
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
25 override func tearDownWithError() throws {
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26 // Put teardown code here. This method is called after the invocation of each test method in the class.
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
27 }
44
415d51d6923f Adding tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
28
93
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
29 // MARK: - Automate screenshots
96
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
30 func testLaunchScreenshots() {
0
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
31 let app = XCUIApplication()
90
879e20d2a837 Modified schemes
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 56
diff changeset
32 setupSnapshot(app)
0
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
33 app.launch()
93
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
34 snapshot("0-Launch")
96
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
35
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
36 // Remove 100 from conversion textfield and type custom amount
93
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
37 let conversionTextfield = app.textFields["ConversionTextfield"]
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
38 conversionTextfield.tap()
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
39 for _ in (0..<4) {
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
40 conversionTextfield.typeText(XCUIKeyboardKey.delete.rawValue)
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
41 }
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
42 conversionTextfield.typeText("1470.10")
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
43 snapshot("1-Convert")
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
44
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
45 // Remove custom amount and type again 1000
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
46 for _ in (0..<7) {
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
47 conversionTextfield.typeText(XCUIKeyboardKey.delete.rawValue)
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
48 }
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
49 conversionTextfield.typeText("1000\n")
96
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
50 }
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
51
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
52 func testCurrencySelectorScreenshots() throws {
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
53 let app = XCUIApplication()
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
54 setupSnapshot(app)
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
55 app.launch()
93
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
56
96
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
57 // Open currency selector, search BTC, and select first row
93
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
58 app.buttons["CurrencySelector"].tap()
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
59 snapshot("2-CurrencySelector")
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
60
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
61 let searchBar = app.textFields["SearchBar"]
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
62 searchBar.tap()
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
63 searchBar.typeText("BTC")
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
64 app.buttons["CurrencyRow"].firstMatch.tap()
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
65 snapshot("3-Bitcoin")
96
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
66 }
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
67
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
68 func testFavorites() throws {
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
69 let app = XCUIApplication()
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
70 setupSnapshot(app)
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
71 app.launch()
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
72
fa994172c050 Breaked in parts UI Tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 93
diff changeset
73 // Go to favorites
99
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
74 if UIDevice.current.userInterfaceIdiom == .pad {
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
75 app.navigationBars.buttons.element(boundBy: 0).tap()
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
76 app.buttons["Favorites"].tap()
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
77 } else {
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
78 app.tabBars.buttons.element(boundBy: 1).tap()
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
79 }
1d661f15adab Fixes UI Testing bugs on iPad
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 96
diff changeset
80
93
529feb1fc8d5 Added UI Tests for capture screenshots
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 90
diff changeset
81 snapshot("4-Favorites")
44
415d51d6923f Adding tests
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 0
diff changeset
82 }
0
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
83
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
84 func testLaunchPerformance() throws {
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
85 if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
86 // This measures how long it takes to launch your application.
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
87 measure(metrics: [XCTApplicationLaunchMetric()]) {
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
88 XCUIApplication().launch()
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
89 }
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
90 }
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
91 }
e0c2bda6c51f first commit
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
92 }