Fix UI Tests for OnboardingScreen, BugReportScreen, ServerSelectionScreen, and UserSessionFlows. (#549)

* Fix OnboardingScreen UI Tests

Disable the swipe tests for now as there is only a single page.

* Fix BugReportScreen UI Tests.

Use snapshots more and remove manual validation method.

* Fix ServerSelectionScreen UI Tests.

* Fix SessionVerificationScreen UI Tests.

* Fix UserSessionFlows UI Tests
This commit is contained in:
Doug
2023-02-08 14:11:09 +00:00
committed by GitHub
parent 588975d53f
commit 22a99482a0
100 changed files with 286 additions and 226 deletions
@@ -34,31 +34,10 @@ enum OnboardingViewModelAction {
}
struct OnboardingViewState: BindableState {
/// The colours of the background gradient shown behind the 4 pages.
private let gradientColors = [
Color(red: 0.95, green: 0.98, blue: 0.96),
Color(red: 0.89, green: 0.96, blue: 0.97),
Color(red: 0.95, green: 0.89, blue: 0.97),
Color(red: 0.81, green: 0.95, blue: 0.91),
Color(red: 0.95, green: 0.98, blue: 0.96)
]
/// An array containing all content of the carousel pages
let content: [OnboardingPageContent]
var bindings: OnboardingBindings
/// The background gradient for all 4 pages and the hidden page at the start of the carousel.
var backgroundGradient: Gradient {
if Tests.isRunningUITests {
return Gradient(colors: [.white])
}
// Include the extra stop for the hidden page at the start of the carousel.
// (The last color is the right-hand stop, but we need the left-hand stop,
// so take the last but one color from the array).
let hiddenPageColor = gradientColors[gradientColors.count - 2]
return Gradient(colors: [hiddenPageColor] + gradientColors)
}
init() {
content = [
OnboardingPageContent(title: ElementL10n.ftueAuthCarouselWelcomeTitle.tinting(".", color: .element.accent),
@@ -21,6 +21,8 @@ import SwiftUI
struct OnboardingBackgroundView: View {
@Environment(\.colorScheme) private var colorScheme
var isAnimated = true
@State private var factor = 0.0
@State private var isReversed = false
@@ -39,6 +41,8 @@ struct OnboardingBackgroundView: View {
}
.frame(width: geometry.size.width, height: geometry.size.height)
.onReceive(timer) { _ in
guard isAnimated else { return }
if isReversed {
guard factor > 0 else {
isReversed = false
@@ -19,7 +19,6 @@ import SwiftUI
/// The screen shown at the beginning of the onboarding flow.
struct OnboardingScreen: View {
@Environment(\.colorScheme) private var colorScheme
@Environment(\.layoutDirection) private var layoutDirection
@Environment(\.verticalSizeClass) private var verticalSizeClass
@@ -35,7 +34,8 @@ struct OnboardingScreen: View {
var body: some View {
ZStack {
OnboardingBackgroundView()
OnboardingBackgroundView(isAnimated: !Tests.isRunningUITests)
GeometryReader { geometry in
ZStack {
VStack(alignment: .leading) {
@@ -99,19 +99,6 @@ struct OnboardingScreen: View {
.readableFrame()
}
@ViewBuilder
/// The view's background, showing a gradient in light mode and a solid colour in dark mode.
var background: some View {
if colorScheme == .light {
LinearGradient(gradient: context.viewState.backgroundGradient,
startPoint: .leading,
endPoint: .trailing)
.flipsForRightToLeftLayoutDirection(true)
} else {
Color.element.background
}
}
// MARK: - Animation
/// Starts the animation timer for an automatic carousel effect.
+10 -33
View File
@@ -21,13 +21,9 @@ class BugReportUITests: XCTestCase {
func testInitialStateComponents() {
let app = Application.launch()
app.goToScreenWithIdentifier(.bugReport)
verifyInitialStateComponents(in: app)
XCTAssertFalse(app.images["screenshotImage"].exists)
XCTAssertFalse(app.buttons["removeScreenshotButton"].exists)
app.assertScreenshot(.bugReport)
// Initial state without a screenshot attached.
app.assertScreenshot(.bugReport, step: 0)
}
func testToggleSendingLogs() {
@@ -39,53 +35,34 @@ class BugReportUITests: XCTestCase {
let sendingLogsToggle = app.switches["sendLogsToggle"]
XCTAssert(sendingLogsToggle.exists)
XCTAssertFalse(sendingLogsToggle.isOn)
app.assertScreenshot(.bugReport, step: 1)
}
func testReportText() {
let app = Application.launch()
app.goToScreenWithIdentifier(.bugReport)
// type 4 chars
// Type 4 characters and the send button should be disabled.
app.textViews["reportTextView"].clearAndTypeText("Text")
XCTAssertFalse(app.buttons["sendButton"].isEnabled)
app.assertScreenshot(.bugReport, step: 2)
// type one more char and see the button enabled
// Type more than 4 characters and send the button should become enabled.
app.textViews["reportTextView"].clearAndTypeText("Longer text")
XCTAssert(app.buttons["sendButton"].isEnabled)
app.assertScreenshot(.bugReport, step: 3)
}
func testInitialStateComponentsWithScreenshot() {
let app = Application.launch()
app.goToScreenWithIdentifier(.bugReportWithScreenshot)
verifyInitialStateComponents(in: app)
// Initial state with a screenshot attached.
XCTAssert(app.images["screenshotImage"].exists)
XCTAssert(app.buttons["removeScreenshotButton"].exists)
app.assertScreenshot(.bugReportWithScreenshot)
}
func verifyInitialStateComponents(in app: XCUIApplication) {
XCTAssert(app.navigationBars[ElementL10n.titleActivityBugReport].exists)
let descLabel = app.staticTexts["reportBugDescription"]
XCTAssert(descLabel.exists)
XCTAssertEqual(descLabel.label, ElementL10n.sendBugReportDescription)
let sendLogsDescLabel = app.staticTexts["sendLogsDescription"]
XCTAssert(sendLogsDescLabel.exists)
XCTAssertEqual(sendLogsDescLabel.label, ElementL10n.sendBugReportLogsDescription)
XCTAssert(app.textViews["reportTextView"].exists)
let sendLogsToggle = app.switches["sendLogsToggle"]
XCTAssert(sendLogsToggle.exists)
XCTAssert(sendLogsToggle.isOn)
let sendLogsLabel = app.staticTexts["sendLogsText"]
XCTAssert(sendLogsLabel.exists)
XCTAssertEqual(sendLogsLabel.label, ElementL10n.sendBugReportIncludeLogs)
let sendButton = app.buttons["sendButton"]
XCTAssert(sendButton.exists)
XCTAssertEqual(sendButton.label, ElementL10n.actionSend)
XCTAssertFalse(sendButton.isEnabled)
}
}
extension XCUIElement {
+2 -6
View File
@@ -21,15 +21,11 @@ class OnboardingUITests: XCTestCase {
func testInitialStateComponents() {
let app = Application.launch()
app.goToScreenWithIdentifier(.onboarding)
let getStartedButton = app.buttons["getStartedButton"]
XCTAssertTrue(getStartedButton.exists, "The primary action button should be shown.")
XCTAssertEqual(getStartedButton.label, ElementL10n.loginSplashSubmit)
app.assertScreenshot(.onboarding)
}
func testSwipingBetweenPages() {
// This test has been disabled for now as there is only a single page.
func disabled_testSwipingBetweenPages() {
let app = Application.launch()
app.goToScreenWithIdentifier(.onboarding)
+10 -31
View File
@@ -26,21 +26,10 @@ class ServerSelectionUITests: XCTestCase {
let app = Application.launch()
app.goToScreenWithIdentifier(.serverSelection)
// Then it should be configured for matrix.org and with a cancel button
let serverTextField = app.textFields[textFieldIdentifier]
XCTAssertEqual(serverTextField.value as? String, "matrix.org", "The server shown should be matrix.org with the https scheme hidden.")
let confirmButton = app.buttons["confirmButton"]
XCTAssertEqual(confirmButton.label, ElementL10n.actionConfirm, "The confirm button should say Confirm when in modal presentation.")
XCTAssertTrue(confirmButton.exists, "The confirm button should always be shown.")
XCTAssertTrue(confirmButton.isEnabled, "The confirm button should be enabled when there is an address.")
XCTAssertTrue(app.staticTexts[ElementL10n.serverSelectionServerFooter].exists)
let dismissButton = app.buttons["dismissButton"]
XCTAssertTrue(dismissButton.exists, "The dismiss button should be shown during modal presentation.")
app.assertScreenshot(.serverSelection)
// Then it should be configured for matrix.org
app.assertScreenshot(.serverSelection, step: 0)
XCTAssertEqual(app.textFields[textFieldIdentifier].value as? String, "matrix.org", "The server shown should be matrix.org with the https scheme hidden.")
XCTAssertEqual(app.buttons["confirmButton"].label, ElementL10n.continue, "The confirm button should say Confirm when in modal presentation.")
}
func testEmptyAddress() async {
@@ -53,11 +42,9 @@ class ServerSelectionUITests: XCTestCase {
app.textFields[textFieldIdentifier].buttons.element.tap()
// Then the screen should not allow the user to continue.
app.assertScreenshot(.serverSelection, step: 1)
XCTAssertEqual(app.textFields[textFieldIdentifier].value as? String, ElementL10n.ftueAuthChooseServerEntryHint, "The text field should show placeholder text in this state.")
let confirmButton = app.buttons["confirmButton"]
XCTAssertTrue(confirmButton.exists, "The confirm button should always be shown.")
XCTAssertFalse(confirmButton.isEnabled, "The confirm button should be disabled when the address is empty.")
XCTAssertFalse(app.buttons["confirmButton"].isEnabled, "The confirm button should be disabled when the address is empty.")
}
func testInvalidAddress() {
@@ -69,13 +56,9 @@ class ServerSelectionUITests: XCTestCase {
app.textFields[textFieldIdentifier].clearAndTypeText("thisisbad\n") // The tests only accept an address from LoginHomeserver.mockXYZ
// Then an error should be shown and the confirmation button disabled.
XCTAssertEqual(app.textFields[textFieldIdentifier].value as? String, "thisisbad", "The text field should show the entered server.")
let confirmButton = app.buttons["confirmButton"]
XCTAssertTrue(confirmButton.exists, "The confirm button should always be shown.")
XCTAssertFalse(confirmButton.isEnabled, "The confirm button should be disabled when there is an error.")
app.assertScreenshot(.serverSelection, step: 2)
XCTAssertTrue(app.staticTexts[ElementL10n.loginErrorHomeserverNotFound].exists)
XCTAssertFalse(app.buttons["confirmButton"].isEnabled, "The confirm button should be disabled when there is an error.")
}
func testNonModalPresentation() {
@@ -84,12 +67,8 @@ class ServerSelectionUITests: XCTestCase {
app.goToScreenWithIdentifier(.serverSelectionNonModal)
// Then the screen should be tweaked slightly to reflect the change of navigation.
let dismissButton = app.buttons["dismissButton"]
XCTAssertFalse(dismissButton.exists, "The dismiss button should be hidden when not in modal presentation.")
let confirmButton = app.buttons["confirmButton"]
XCTAssertEqual(confirmButton.label, ElementL10n.actionNext, "The confirm button should say Next when not in modal presentation.")
app.assertScreenshot(.serverSelectionNonModal)
XCTAssertFalse(app.buttons["dismissButton"].exists, "The dismiss button should be hidden when not in modal presentation.")
XCTAssertEqual(app.buttons["confirmButton"].label, ElementL10n.actionNext, "The confirm button should say Next when not in modal presentation.")
}
}
@@ -18,94 +18,87 @@ import ElementX
import XCTest
class SessionVerificationUITests: XCTestCase {
enum Step {
static let initialState = 0
static let waitingForOtherDevice = 1
static let useEmojiComparisonPrompt = 2
static let waitingForEmojis = 3
static let compareEmojis = 4
static let acceptingEmojis = 5
static let verificationComplete = 6
static let verificationCancelled = 7
}
func testChallengeMatches() {
let app = Application.launch()
app.goToScreenWithIdentifier(.sessionVerification)
XCTAssert(app.buttons["requestVerificationButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
XCTAssert(app.staticTexts["titleLabel"].exists)
app.assertScreenshot(.sessionVerification)
app.assertScreenshot(.sessionVerification, step: Step.initialState)
app.buttons["requestVerificationButton"].tap()
XCTAssert(app.activityIndicators["requestingVerificationProgressView"].exists)
app.assertScreenshot(.sessionVerification, step: Step.waitingForOtherDevice)
XCTAssert(app.buttons["sasVerificationStartButton"].waitForExistence(timeout: 5.0))
app.buttons["sasVerificationStartButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.useEmojiComparisonPrompt)
XCTAssert(app.activityIndicators["startingSasVerification"].waitForExistence(timeout: 5.0))
XCTAssert(app.activityIndicators["startedSasVerification"].waitForExistence(timeout: 5.0))
app.buttons["sasVerificationStartButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.waitingForEmojis)
XCTAssert(app.buttons["challengeAcceptButton"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["challengeDeclineButton"].waitForExistence(timeout: 5.0))
app.assertScreenshot(.sessionVerification, step: Step.compareEmojis)
app.buttons["challengeAcceptButton"].tap()
XCTAssert(app.activityIndicators["acceptingChallengeProgressView"].exists)
app.assertScreenshot(.sessionVerification, step: Step.acceptingEmojis)
XCTAssert(app.images["sessionVerificationSucceededIcon"].waitForExistence(timeout: 5.0))
XCTAssert(app.staticTexts[ElementL10n.verificationConclusionOkSelfNoticeTitle].waitForExistence(timeout: 5.0))
app.assertScreenshot(.sessionVerification, step: Step.verificationComplete)
XCTAssert(app.buttons["finishButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
app.buttons["closeButton"].tap()
}
func testChallengeDoesNotMatch() {
let app = Application.launch()
app.goToScreenWithIdentifier(.sessionVerification)
XCTAssert(app.buttons["requestVerificationButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
XCTAssert(app.staticTexts["titleLabel"].exists)
app.assertScreenshot(.sessionVerification, step: Step.initialState)
app.buttons["requestVerificationButton"].tap()
XCTAssert(app.activityIndicators["requestingVerificationProgressView"].exists)
app.assertScreenshot(.sessionVerification, step: Step.waitingForOtherDevice)
XCTAssert(app.buttons["sasVerificationStartButton"].waitForExistence(timeout: 5.0))
app.buttons["sasVerificationStartButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.useEmojiComparisonPrompt)
XCTAssert(app.activityIndicators["startingSasVerification"].waitForExistence(timeout: 5.0))
XCTAssert(app.activityIndicators["startedSasVerification"].waitForExistence(timeout: 5.0))
app.buttons["sasVerificationStartButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.waitingForEmojis)
XCTAssert(app.buttons["challengeAcceptButton"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["challengeDeclineButton"].waitForExistence(timeout: 5.0))
app.assertScreenshot(.sessionVerification, step: Step.compareEmojis)
app.buttons["challengeDeclineButton"].tap()
XCTAssert(app.images["sessionVerificationFailedIcon"].exists)
XCTAssert(app.buttons["restartButton"].exists)
app.assertScreenshot(.sessionVerification, step: Step.verificationCancelled)
XCTAssert(app.buttons["closeButton"].exists)
app.buttons["closeButton"].tap()
}
func testSessionVerificationCancelation() {
let app = Application.launch()
app.goToScreenWithIdentifier(.sessionVerification)
XCTAssert(app.buttons["requestVerificationButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
XCTAssert(app.staticTexts["titleLabel"].exists)
app.assertScreenshot(.sessionVerification, step: Step.initialState)
app.buttons["requestVerificationButton"].tap()
XCTAssert(app.activityIndicators["requestingVerificationProgressView"].waitForExistence(timeout: 1))
app.assertScreenshot(.sessionVerification, step: Step.waitingForOtherDevice)
XCTAssert(app.buttons["sasVerificationStartButton"].waitForExistence(timeout: 5.0))
app.buttons["sasVerificationStartButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.useEmojiComparisonPrompt)
XCTAssert(app.activityIndicators["startingSasVerification"].waitForExistence(timeout: 5.0))
XCTAssert(app.activityIndicators["startedSasVerification"].waitForExistence(timeout: 5.0))
app.buttons["sasVerificationStartButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.waitingForEmojis)
XCTAssert(app.buttons["challengeAcceptButton"].waitForExistence(timeout: 5.0))
app.assertScreenshot(.sessionVerification, step: Step.compareEmojis)
app.buttons["closeButton"].tap()
app.assertScreenshot(.sessionVerification, step: Step.verificationCancelled)
XCTAssert(app.images["sessionVerificationFailedIcon"].waitForExistence(timeout: 1))
XCTAssert(app.buttons["restartButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
app.buttons["closeButton"].tap()
}
}
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd7fe8c3cbd9a73717651dc206734d7c68fa60f0c854a8a6cd53e11b2446c1e9
size 108261
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5b426320713d78e29a3bfe11868255b6bae66be179bf5d9ff6b3b9e0dd754fb4
size 109278
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f41c6d7d09b22e773ce5d1fe37ba4a2cda25e239881de405dc47ab161591961f
size 163911
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a53b68cb08ebc041b8b1aa8a29af94c4c19f3bb48df672b078aa586e858728a1
size 166072
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ff37bd482c03c38978fccca4d2811469b4d8db9ff911ec8c5a3f46ae6fcf67a
size 129975
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d793b87e60ad95afa3e584237e34ba54ba5b9bd401d10058cfc10278d2b820f8
size 138809
oid sha256:25f7467d86397206aa24ed89c570cd3449356a915f773f8753cc99a65080ceac
size 115806
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:829bf2dfcbc5ea3f9e7d52745a71f743f84bf8f624bb8ffa4fb5b259c73f6020
size 172204
oid sha256:5cc87b3038204a03ceffb0367150ae715672ece31c28aded1867e29154d23348
size 853026
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:830a542a2e546e84f00acd5e24ec1aca7e73aa602aac36868805e5c9b117620d
size 96188
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:922e97a85ab47e69f02024729c38ca8588da72543039bc8090b9f9a3325032bb
size 120255
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ad0710aa2ee9f311209fdeec522226fbf37012ef56a379a868c1228ffb67a70d
size 97680
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9d7ae4bba47eb08236cf28cc79ee12873a9fa1f9d9994315046298f3fe5aa12e
size 116458
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:71943bd9a2087bfdfa6cee4d250664f9ca8bc791c671dde9787dfe6895f44643
size 113783
oid sha256:ba556cb20bc7c7426c5096f1c9698faa25c9cfc90c3911904ec679256fb23258
size 92481
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:83c05698a6bbe4ecee5f05188b522695b496ff3c76606b31ccce0837f8c048e1
size 80089
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6c875932207a233850e2e14aae1d427e4c06e8adfc324dcee8362c14eda11fff
size 81910
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea86739057e302f4c60805a0d986ac3fc04971de631abc8e640f7341844d1da0
size 82459
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5d249b34cbc9ad5de008c88d2fff88da9cf3cb9d84f4ad364c1bd70122f9b4d6
size 61347
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9a2b81bed6c747c999852d5d52a665d915116bb23603a74415ce0c983528ce90
size 145143
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:502897556cd1f0ff24a4469845248e7a558d71312a8aea3ff0e24753b4470289
size 142119
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c00992310c100a4fc0c3793434ff35ebbb35ef954914c99e949bf744643e9aad
size 85707
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1a8b3a881647e8f310c55236aee57460e6520fae9fa5f4c382baba46b49668a4
size 82599
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8a14dd96e7402a860daf289e66f47e3576775a27af5a2423e1d6fecfe99caa9e
size 86648
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d90a2dd77853c9707a2805b480983dc46d92d1606e22a61ff18ad12a0cb70228
size 123022
oid sha256:c1c5a7753f93c24408a9c9b79252c3b920fcbcb657f4e300a47e5ed695c727d7
size 155231
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:89c5cd9ca5283ec107581a2e45b3f904fad92119848eb9bd7d8c3c7295802a75
size 334531
oid sha256:d6ccdd35be673a52fcbf796a9ab6dcc9542e20dd657e28119012e71adc46b44e
size 320431
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e0efbca15ea0e8f2d69e421aa71623837919895b0e206e02b45944de504200b2
size 140892
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c7ac9ea3a814e5b27796bf7cc698a1359c340fad45fe7b2e256d81280b94878b
size 141013
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b13c2948b5f5bde43db78e8cc12fb7e63f29fa9d000bc38c107f1c1b8a5f331
size 164364
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dbd72a146b02e7f9eee32b6109e05bc373c21918807be479f8d1fb4e9e7f69d4
size 163050
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2464432716ef48240002d5cdedd10e81d5a966d7dc593713ced422bb09bb4c83
size 171718
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2464432716ef48240002d5cdedd10e81d5a966d7dc593713ced422bb09bb4c83
size 171718
oid sha256:41ae0873744b10876925f55a4201bfc3ec40498ed5f1d7ecdfec66b44f9ca458
size 146025
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2093b68ad7b33841be7d634c13eb9cdae6df3cfa7ccbd93c1f787ed47b69a667
size 245859
oid sha256:9a7dcbb090ddb93fd31e8960d06cadc501e44a5eb095637408f107a27bda2520
size 1374145
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:799775d327dfc0e7648afc460f49b5685533552e07c7410f81302be92219df3b
size 112137
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8fedebc2f8236e9824e067c48a3177c198ae5399f3b79a63d0f42876c4dc9212
size 109549
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dfbae5d3750202fa07e0c5c3a0a0e6841c77b90fed31c7d82aee4bd22e540703
size 113499
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1ee002ac22903da282c9005828ba167dd03296acd4b5edca0da97e452465d724
size 136734
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:95826295eca8f7c8984183a1662784f64389f914c2ec432673e67a4825dd46c8
size 132860
oid sha256:24fd364e71c2642fe88599642f906a07ba2101883993e8ca6b1cb114190e885e
size 106464
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aeb1181cc7660a73321cd70853eb4f7a1d656a1ecd6d1782611d60c936ba1708
size 90315
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ebbaad951950fdcc127e79cb23d5149d475b9ef31354db467adab86a552f721c
size 90795
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e530f21dc849e95ce38f475c1ae9ebde0a20fc3b62da17b7f32ee3592d4511ca
size 93196
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aa62c36a25016194059d1b08845ef498db059d4e1dd1c2e48e7cc02f79b13d95
size 60025
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:efd982ac2d47a2bdc8fa2b25849e566130cfb35c95331340150ba4f9e9380ac2
size 206687
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ae440c97229af9d65d2b8147d22960fdaa0f8580e7193d44117362ba6df00d68
size 203303
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ebb9a93600c84cff88344a894577319bc0447b13b290f6ade3219686b5c131b8
size 94029
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:eb500af458e236f912e2cf39a68126d91b91eb2ab6f4ac5f0317ac5bad1f116e
size 93999
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:63878149e636bf6df109dd3689e8be0c35b83d8bbf39208e362c6938e0c8311f
size 105717
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3de2e5153d1b685c253df7f20d91a5355015fae183f4882315c56fe4eede0889
size 112151
oid sha256:2b4c590ae196e4712101b4b073770301a903360b0682215f9a76dc0a599d6bfe
size 125669
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6aaa8bf274c693ca1fd3dffd4fbeab41df2698e401bb1c16f9bd6190d694a0df
size 334188
oid sha256:a41dd1f7b4c34ffefa5a60154729192c7ae8b28ef91d7c3453333e11b1b27e90
size 301235
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e7e6ee6f769c67df4b6e2505f6aab85241bfa38ec5a8d3704d8de83be54d169f
size 107687
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:785af4eb68e1a2c4456594408f9daca73e0d2c32dabab859236728ecd5d4f3a8
size 108706
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bec1027681bfaae00b6923156409328de885b9c2a0cc9321a156d8a8b6db1bf2
size 163881
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1c83c78541c802938288bae1630cbf0ab65e46e0efc97a33af3c6d5e869b298d
size 165517
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c10aec0ca3e1d656407f8b564fc9ea178828169e6d4d68b147130833c5f93b3
size 121876
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:660c8e7d4b308cff8e5bcf8ccd8a8027ce39aa44d73fe64ab09496c90f2f12bf
size 130690
oid sha256:f99a41d423d6cdf87c690e5278390903bb554aa08d8d3e823279273ac50dda25
size 115672
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bba4baac9310c201fa317dcb54682b9359b218d12059f78d722c29bcc342c2f8
size 167276
oid sha256:31186ca7d65077176650d7bda7c5c1fe40631dbbae630ec9dfb1c5721ff2f336
size 852811
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5d9bdc17ccb874390a09167e2f895471282ffb9c46124a5fa765dfa0392b21f3
size 91773
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:afd87ea8987b841873e0fac1868d1ddb08ddaca12296dc7b2715b5e73792fa31
size 114965
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:02faff41eddb9ff07d305e8d84782509ce5e20fa0d557b0ff873ffd004e9e698
size 92119
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f8abedcc2cf0409e7ff57b43accf74f32225bb1fdd2e06c3697ad516086345cd
size 111480
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7e57977f3994ae60219ea36b2a042e78125ee1ccec2d5e8ab9500d10e630eebb
size 109036
oid sha256:6c44709d238c582d2ed796b454816668257eb000548a0d3705a8eec7a5d75b49
size 88250
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6e25078efecdd49161704a0b4d4d79a2c29be2e03ece5f506fd8905a433a52fe
size 79746
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ec3e7f457260f129e92f4b808c26b4f84c986708d3e7ee90b2fb7030ed21b446
size 81570
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ca5bc87197f0f0e3b67afea980efcc1e0b897281b3ee239e643cf7b3bbe581d7
size 78767
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1f92b2fd91e7e053f5f4d81369249a557bc7b3d2ea67784d5fabfde55e3eb9c1
size 60368
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0cd5f59758d322f69cc9ef4765f3e6d0176789c5796974daada81701e93801d0
size 143094
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:07070a48bf9ca9f91aa05eb166ddba6be038994573eb56d3572e3b0273199b0e
size 140279
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d6a95a58f6929124ec0924bdf9403eb7359cc91e52782a9e0d0d9e2f3b40118b
size 78759
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9f8687aacb6c014bcaf7b89805f8ec59aba5b639f6cea43145ca3f77fc0ae76b
size 79872
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:338f590aa8ec5d2db4e9cc9fcd1974e39b4f71c55cc5ac471e72d78ecc1ddb83
size 80562
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:25ba24b61f830ca4a975957059dd912f587a06436e9bc1899a01bec845e4125c
size 123049
oid sha256:105620cf6345209e4e66bb0b1fe89b6f912f6191dd2ca61e333d49c4e8a1168e
size 155266
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df9c30fd83057e62b3ac28d820bae1ad17e520270e21ef1a4c1429a181877ee4
size 334367
oid sha256:477266c49105fff6a944e6161459cb3ac4bdd3daa2de6609d018adbf1d8b03d6
size 320994
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4451410930f771a8943773939648db0c13a98fceeabfbe4e85803f5d4fa3e90f
size 139842
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3a51803b76a98915d71c30cb469faf558de10416d160b8858c0e06a2e217d4ec
size 140246
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:80bb4ffc095a41ab7352b038166fc387251b7b80b1bd052aed3a37ce55b737a8
size 163388
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:db9ae2c48fd20f4906710e71d84660a3216cb94cb370049f5b9cd4d823e3e33c
size 162077
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:853a61f1c30715abe2570b269726d650313ee19801dd06b6cc7084e89eaad983
size 165777
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:853a61f1c30715abe2570b269726d650313ee19801dd06b6cc7084e89eaad983
size 165777
oid sha256:6a45deead94f995386a1bf034bee68f5741f9fe2d06ab8e7abbfe97254a7ca65
size 148195
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c9cc4d5f0056e46c5620b03194b643e27c3d56fa207355242808ef03d0647ebc
size 235328
oid sha256:b9e7c5cb747d440893fbd71666b44a76bec1c7e649e0d3c20fd3355a0bf46158
size 1373784
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0e2de5b8b7f7620c6a0e1ccf8212b6f1442753de61682798ed17b9eca5f7ab14
size 108065
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ad603a5f0a68b72ed531f5330917f21c630ab645ec6ad3f116e12787b55b4d7f
size 104710
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:54181361dd0131adfd6033b4e0f11e81ce55314e97b375444f21fc14afb7c282
size 107181
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c9b4a07acac5bde9206d2d9afc137b129e5e13a09349c805739f719a5d8d215
size 132275
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4296152af97a7bfae9cf4d16caa388612d316ce094b97aa8ae2e8c77327e15c6
size 128455
oid sha256:20d4244743238cc8947708f046427d04bb3ec82560f732b50022e918c1c68172
size 102884
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:52581620b58fe494c04f86d8d33a327d72ba3f9cdaef09143b1ad81f0360a7c7
size 89717
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8060a5d47f7dec25e8267cae3c4febc49ec52d4d610fd50de85ef01889346838
size 90401
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aa16813fb58bc7689047e70eb1e880744216ca1c1c5efaf742644873dbd194fe
size 86320
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2fdb235de9c09e524cd640041a0ab9538b1e7375a3db965efd7f46469853fb5e
size 59942
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bce60d053368e96d679c164b55752aa867974402a2a7cefb08cb167e21018b61
size 203458
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:556536f8c80e0f2daf0c48974c3d721255459c25e67e3ef5e71e40ea481979ed
size 200273
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:08712a31c8f7a48cfdf694c06a5a5b3298d07568fb7c4090e95f4c94fd014c3f
size 88332
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:71c061ad002ddae2090688f85de989f933cf5d1df14a27d6f4968f1fb6a7c84d
size 89870
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1574e7cecdc0e408fccf01a21eee41a9f5870826417da153aec8353f3d47af15
size 95696
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b31c6c701af4e18f3bee3e28ce2d43044934f9a16dfb8726dadc233a616a27e
size 112187
oid sha256:7b8c4f7352b82b65a6968847008dc5bbf0f0f9552e89348ed1d41c51fd2ef9b8
size 125700
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d340ed581bb489d166f6d358cde52fd1a5c735faba60fb921bc71fc68489ef3d
size 334229
oid sha256:725a12488c60235408c96f8faf45ab1fcae12364fd5f50d0a193b4214e62be62
size 301953
+1
View File
@@ -0,0 +1 @@
Fix UI Tests for OnboardingScreen, BugReportScreen, ServerSelectionScreen, and UserSessionFlows.