Screenshot Bot
Automated iOS Screenshot Service
Jamie Douglas, Alexander Baumhoer, Alexander Murphy
Problem
- Slow and cumbersome process for CSA's to send screenshots to clients
- Takes 17.5 minutes to multiple days for a single edit
- If one CSA makes one edit on one offer every business day in a year, they are waiting at least 76.1 hours
- Disrupts CSA workflow and the ability to develop more important skills
- Impedes business revenue expansion goals
- This problem is 6 years old…
Goals
-
Minimize a tedious part of CSA work day so they can focus on more important, impactful work, including program expansion, skill development, and growing client relationships.
-
Reduce the amount of time it takes to generate updated screenshots so that it's under 17.5 minutes by:
-
Automating the image-taking process
-
Making the updates show up in the app more frequently and reliably
-
Our Workflow
-
"Mini Sprints" 3 hour blocks of work time before meeting
-
Setting goals and evaluating progress
-
Display work
-
Report roadblocks
-
-
Alex^2 were working on programming problems while Jamie was meeting with stakeholders and maintaining alignment
-
Jamie generated documentation
Implementation
-
Fastlane CI (Ruby wrapper for Xcode build tools)
-
Node.js server app to provide webhooks into Fastlane
-
Server side rendered administration page
-
Dynamically generated UI tests based on offer ids
-
AWS S3 storage for completed screenshots
-
Active Admin integration for offers
-
AWS Lamda for emailing final screenshots
UI Test Example
func testSnapshotForOfferId178786() {
let app = XCUIApplication()
setupSnapshot(app)
let textField = app.children(matching: .window)
.element(boundBy: 0).children(matching: .other)
.element.children(matching: .other)
.element.children(matching: .other)
.element.children(matching: .other)
.element.children(matching: .other)
.element.children(matching: .other)
.element.children(matching: .textField)
textField.element.tap()
textField.element.typeText("offer/178786")
app.buttons[" Route "].tap()
snapshot("178786")
XCUIApplication().scrollViews.children(matching: .other)
.element.children(matching: .other)
.element(boundBy: 0).children(matching: .other)
.element(boundBy: 0).children(matching: .image)
.element.swipeUp()
snapshot("178786_section_two")
}
UI Test In Action
Administration Console
Batch Details
View Batch Build Output
Active Admin Integration
Straight to your inbox 📬
Results
- Proof of concept implemented
- Proved that this system can screenshot offers quicker than the mean time required by CSAs
- Cut down time by 3 minutes
- Reliable expectations and removed the need for CSA's to use their personal phonesÂ
- Screenshots directly emailed to CSA who requested
Recommendations
- Further testing required for this to become production ready
- Fragility concerns: in app messages, alerts
- Android?
- Formatted deck/PPTÂ
- Automatically upload to Box
- MVT QA automation & improvements?
- Does not support offer engagements
Â
Final Recommendation: Considering the complexity of this system, we recommend further vetting.
Just one more thing...
Not just offers.....
Any universal link
Every Retailer Category
Every Bonus
Every Retailer Gallery
public var questions: [Question]?
deck
By thexande
deck
- 183