Skip to content

Instantly share code, notes, and snippets.

View sukhrobkhakimov's full-sized avatar

Sukhrob Khakimov sukhrobkhakimov

View GitHub Profile
public protocol KeyValueObservable {
var keyPaths: [String: PartialKeyPath<Self>] { get }
}
extension KeyValueObservable {
private subscript(descendant key: String) -> Any {
Mirror(reflecting: self).descendant(key)!
}
public var keyPaths: [String: PartialKeyPath<Self>] {

FWIW: I'm not the author of the content presented here (which is an outline from Edmond Lau's book). I've just copy-pasted it from somewhere over the Internet, but I cannot remember what exactly the original source is. I was also not able to find the author's name, so I cannot give him/her the proper credits.


Effective Engineer - Notes

What's an Effective Engineer?

import XCTest
class SignUpUITests: XCTestCase {
func testSignUp() {
// Arrange
let emailTextField = Accessibility.SignUp.emailTextField.element
let passwordTextField = Accessibility.SignUp.passwordTextField.element
let confirmPasswordTextField = Accessibility.SignUp.confirmPasswordTextField.element
let signUpButton = Accessibility.SignUp.signUpButton.element
import XCTest
class SignInUITests: XCTestCase {
func testSignIn() {
// Arrange
let emailTextField = Accessibility.SignIn.emailTextField.element
let passwordTextField = Accessibility.SignIn.passwordTextField.element
let signInButton = Accessibility.SignIn.signInButton.element
// Act
import XCTest
// MARK: - Sign In
extension Accessibility.SignIn {
var element: XCUIElement {
let application = XCUIApplication() // This doesn't create a new instance every time but the existing instance is reused by XCTest framework automatically if there is one already.
let identifier = self.identifier
switch self {
import UIKit
class SignUpViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
emailTextField.accessibilityIdentifier = Accessibility.SignUp.emailTextField.identifier
passwordTextField.accessibilityIdentifier = Accessibility.SignUp.passwordTextField.identifier
confirmPasswordTextField.accessibilityIdentifier = Accessibility.SignUp.confirmPasswordTextField.identifier
signUpButton.accessibilityIdentifier = Accessibility.SignUp.signUpButton.identifier
import UIKit
class SignInViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
emailTextField.accessibilityIdentifier = Accessibility.SignIn.emailTextField.identifier
passwordTextField.accessibilityIdentifier = Accessibility.SignIn.passwordTextField.identifier
signInButton.accessibilityIdentifier = Accessibility.SignIn.signInButton.identifier
}
import Foundation
struct Accessibility {}
// MARK: - Sign In
extension Accessibility {
enum SignIn: String {
case emailTextField
case passwordTextField