Git Product home page Git Product logo

a11yuitests's Introduction

Hi. I'm Rob.

I'm a native Mac/iOS accessibility specialist and senior iOS Engineer. Previously at Cuvva and Capital One. (He/Him)

TLDR

None of this is currently updated.

Tech Interests

  • Accessibility
  • Cyber security
  • User experience
  • Testing

Non-tech Interests

  • Hiking
  • Nature
  • Quiz
  • Lego

My Career

  • Senior iOS Engineer
  • Self-taught career changer
  • Mobile accessibility consultant

What's Next?

Please get in touch if you have an opening to work on iOS at The Lego Group.

Writing

Here's a selection of my favorite/most popular blogs

Speaking & Workshops

Upcoming

I'm not currently taking bookings for further speaking/training engagements.

Past

  • Mobile Accessibility Testing: Making it effective and efficient for everyone
    Remote talk for A11yCamp
    Video
    November 2022

  • Identifying & Fixing iOS Accessibility Issues
    Workshop for iOSDevUK
    Aberystwyth, Wales
    September 2022

  • Identifying & Fixing iOS Accessibility Issues
    Workshop for 360iDev
    Denver, Colorado
    September 2022

  • Mobile Accessibility Testing
    Remote talk/workshop for Spotify
    May 2022

  • Next Level iOS Accessibility
    Remote workshop for Try! Swift World
    May 2022

  • Next Level iOS Accessibility
    Remote talk for Sydney CocoaHeads
    Video
    slides
    May 2022

  • Identifying & Fixing iOS Accessibility Issues
    Remote workshop
    June 2021

  • Mobile Accessibility Testing Tools
    Remote talk held for Funka
    May 2021

  • Accessibility in Mobile
    Remote workshop held for Ecosia
    July 2020

  • Accessibility in SwiftUI
    CSUN Assistive Technology Conference, Anaheim, CA
    Video
    March 2020

  • The Route to an RNIB Certified iOS App
    CSUN Assistive Technology Conference, Anaheim, CA
    March 2020

  • Accessibility Without the ‘V’ Word
    NSManchester, Manchester, England
    October 2019

  • Accessibility Without the ‘V’ Word
    SWMobile, Bristol, England
    Video
    September 2019

  • Accessibility in SwiftUI
    iOSDevUK, Aberystwyth, Wales
    September 2019

  • Panel member, iOS development Q&A
    iOSCon, McLean, VA
    August 2019

  • Accessibility Without the ‘V’ Word
    CodeMobile, Chester, England
    Video
    Slides
    April 2019

  • A Swift Testing Journey
    CodeMobile, Chester, England
    April 2019

  • A Swift Testing Journey
    iOSDevUK, Aberystwyth, Wales
    September 2018

Podcasts

I love talking about mobile accessibility get in touch if you think your listeners would like to know more.

Projects

Some old projects I've worked on, none of these are currently maintained.

  • A11yUITests
    An extension for XCTestCase to add common accessibility checks to XCUITests.

  • A11y Box Android
    An app highlighting the Android accessibility APIs.

  • A11y Box iOS
    An app highlighting the iOS accessibility APIs.

Contact

a11yuitests's People

Contributors

bwhtmn avatar rwapp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

a11yuitests's Issues

Suggestion: prefer `responds(to: Selector)` to swizzling?

Hi Rob,

Just a quick suggestion that will let you avoid swizzling by checking if the object responds to the key you are interrogating.

This extension will also perform the cast in a separate guard to give you a more helpful error to log.

extension NSObject {
    func optionalValue<T>(for key: String) -> T? {
        guard
            self.responds(to: Selector(key)),
            let value = self.value(forKey: key)
        else {
            print("Unable to get property \"\(type(of: self)).\(key)\". This is likely due to a change in Apple's private API. Please raise an issue https://github.com/rwapp/A11yUITests/issues")
            return nil
        }
        guard let castValue = value as? T else {
            print("Unable to cast property \"\(type(of: self)).\(key)\" from `\(type(of: value))` to `\(T.self)`. This is likely due to a change in Apple's private API. Please raise an issue https://github.com/rwapp/A11yUITests/issues")
            return nil
        }
        return castValue
    }
}

final class Subclass: NSObject {
    @objc let notATrait = "Hello, is it me you're looking for?"
}

let traits: UIAccessibilityTraits = Subclass().optionalValue(for: "notATrait") ?? []

Image name check is not localised

The image name check asserts button elements don't feature the words "image", "picture", "graphic", or "icon". This means the test will only fail when the test is run in languages where the these words are valid. This test should be changed to fail regardless of language.

Button name check is not localised

The button name check asserts button elements don't feature the word 'button' so will only fail when the test is run in languages where the word button is valid. This test should be changed to fail regardless of language.

CGFloat not being recognized

Having a bit of importing this to my project. The compiler is complaining that CGFloat is not being imported from Foundation. I'm running iOS 11-14 on Xcode 12.4 When I changed the foundation reference to the top to CoreGraphics, it was recognized. As far as I can tell, you're mostly using foundation to reference CGFloat (no idea why it does not exist anymore) but it builds fine with replacing that one reference. Would you be opposed to a PR to change it to CoreGraphics?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.