Screenshot tests (#130)

* #9 Add snapshot testing library

* #9 Create script to boot test simulators

* #9 Create the UI test plan

* #9 Create shared schemes for test targets

* #9 Disable split view for UI tests

* #9 Fix fastlane dependencies

* #9 Add snapshot testing to the application

* #9 assert screenshots

* #9 fix swipe gestures on iPad

* #9 Fix accessing items in session verification screen

* #9 Workaround for flaky unit test

* #9 Specify scheme for alpha build

* #9 Add reference screenshots

* Update python script path and check assets for png check

* Update script path

* Use static timezone for simulator time

* Fix build after SwiftFormat

* Add changelog

* Upload failed screenshots artifact

* Always upload artifacts

* Update boot simulator script

* Update simulator overridden time

* Install pytz before tests

* Get time from Ruby script

* Disable SwiftUI animation when running UI tests

* Update screenshots after animation setting

* Include reference images in the artifact

* Update matching precision

* Update image matching precision & revert artifact content

* Include Xcode result in the artifact

* Update test output directory

* Disable gradient on splash screen for tests

* Tap next button explicitly

* Wait a bit before checking alert

* Wait 1 second

* Run SwiftFormat on project

* Ignore temporary screenshots

* Fix most of the PR remarks

* Fix conflicts

* Bump Python version to 3

* Update reference screenshots for authentication screens

* Update SwiftFormat

* Fix flakey session verification test.

* Update scheme.

Co-authored-by: Doug <douglase@element.io>
This commit is contained in:
ismailgulek
2022-08-11 15:02:47 +03:00
committed by GitHub
parent 207cbdebfd
commit 2cb6dc1cd9
127 changed files with 944 additions and 83 deletions
@@ -0,0 +1,61 @@
{
"configurations" : [
{
"id" : "183696C6-4CBB-4BCE-8F4C-D2B848395699",
"name" : "English",
"options" : {
"language" : "en",
"region" : "GB"
}
},
{
"id" : "9657189C-CDB9-4D85-86EB-8A611144C11E",
"name" : "French",
"options" : {
"language" : "fr",
"region" : "FR"
}
},
{
"id" : "04E7AF54-391D-42D4-8193-7AD50C685639",
"name" : "German",
"options" : {
"language" : "de",
"region" : "DE"
}
}
],
"defaultOptions" : {
"addressSanitizer" : {
"enabled" : true
},
"environmentVariableEntries" : [
{
"key" : "SNAPSHOT_ARTIFACTS",
"value" : "\/tmp\/__FailedScreenshots__"
}
],
"locationScenario" : {
"identifier" : "London, England",
"referenceType" : "built-in"
},
"targetForVariableExpansion" : {
"containerPath" : "container:ElementX.xcodeproj",
"identifier" : "C0FAEB81CFD9776CD78CE489",
"name" : "ElementX"
},
"uiTestingScreenshotsLifetime" : "keepNever",
"undefinedBehaviorSanitizerEnabled" : true,
"userAttachmentLifetime" : "keepNever"
},
"testTargets" : [
{
"target" : {
"containerPath" : "container:ElementX.xcodeproj",
"identifier" : "0E28CD62691FDBC63147D5E3",
"name" : "UITests"
}
}
],
"version" : 1
}
+32
View File
@@ -1,5 +1,25 @@
name: UITests
schemes:
UITests:
analyze:
config: Debug
archive:
config: Release
build:
targets:
UITests: all
profile:
config: Release
run:
config: Debug
disableMainThreadChecker: false
test:
config: Debug
testPlans:
- path: UITests.xctestplan
defaultPlan: true
targets:
UITests:
type: bundle.ui-testing
@@ -27,6 +47,8 @@ targets:
linkType: static
- package: Sentry
linkType: static
- package: SnapshotTesting
linkType: static
info:
path: ../SupportingFiles/Info.plist
@@ -38,8 +60,18 @@ targets:
debug:
release:
preBuildScripts:
- name: Override Simulator Status Bars
runOnlyWhenInstalling: false
shell: /bin/sh
script: |
python3 $PROJECT_DIR/Tools/Scripts/bootTestSimulator.py --name 'iPhone 13 Pro Max' --version 'iOS.15.5'
python3 $PROJECT_DIR/Tools/Scripts/bootTestSimulator.py --name 'iPad (9th generation)' --version 'iOS.15.5'
sources:
- path: ../Sources
excludes:
- "**/__Snapshots__/**"
- path: ../SupportingFiles
- path: ../../Tools/Scripts/Templates/SimpleScreenExample/Tests/UI
- path: ../../ElementX/Sources/BuildSettings.swift