Mercurial > public > simoleon
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 |
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 } |