Challenge Overview
CHALLENGE OBJECTIVES
-
Add Appium tests for the security flow in the mobile app.
PROJECT BACKGROUND
-
We believe that our customers have more important things to do than wrestle with complex products or spend valuable time administering their banking arrangements. We recognize that professional and personal lives often overlap and our mission is to help empower our customers to achieve their ambitions by serving all their banking needs.
-
Banking customers are looking for a bank that can help them make their deal happen in an efficient, secure, fast, and flexible way as much as it can.
-
We understand different people want different things from "Relationship management"
-
We expect a counter-trend of “committed” relationships as customers react to digitization in our services.
-
Our goal in this project is to create strong direct relationships with our customers. We want to provide everything - a blended bank, preferential banking for their family, and open to non-banking services via our digital app (Responsive Web App and Mobile Hybrid App)
TECHNOLOGY STACK
-
Appium
-
iOS
-
Android
CHALLENGE REQUIREMENTS
-
The app is available in both iOS and Android, you can choose to test either of them.
-
The purpose of this challenge is to write E2E tests for the security flow in our mobile app using Appium. The flow should cover the following:
-
Login
-
Open app and login into the app with valid credentials
-
You’ll be asked to enter the one-time code, enter and confirm
-
If this is your first-time login, the app will ask you to set up a secure pin, follow through and set it up
-
If your device supports biometrics login (touch id or face id), the app will ask you to set that up, skip this step
-
You should land on the dashboard
-
-
Logout
-
When logged in, click Menu -> Logout
-
You should see a confirmation dialog
-
Click LOGOUT and you should be redirected back to a screen with options to Login using Touch ID / Login using Face ID / Login using Secure PIN / Login using User ID and passcode
-
-
Register
-
Open the app and you’ll see a link that says Register here
-
Click it to see the Account verification screen
-
Enter valid details to this screen and click “Verify my account”
-
You’ll get to the Contact Information screen, enter a valid email and phone number
-
Click Register and you’ll see the Registration complete screen, with a button that redirects back to the login screen
-
-
Reset passcode
-
Open the app and you’ll see a link that says Reset passcode
-
Click it to see the Account verification screen
-
Enter valid user ids and click Next
-
You’ll be asked to enter the one-time code, enter and confirm
-
You’ll be asked to provide new passcode, make sure you provide a valid one
-
You’ll be redirected back to the login screen with a success message
-
-
Forgotten User ID
-
Open the app and navigate to the regular login screen (the one with user id and passcode)
-
Click on Forgotten User ID link and you’ll reach the Account verification screen
-
Enter valid details and click Next
-
You’ll be asked to enter the one-time code, enter and confirm
-
You’ll see a screen that shows your user id, and a button to go back to the login screen
-
-
-
You should create both positive and negative test cases for these flows.
-
The above section has covered the positive cases, the following specifies the negative flows
-
Login
-
Open app and login into the app with invalid credentials, you should get an error
-
You’ll be asked to enter the one-time code, enter an invalid one and you should get an error
-
-
Register
-
Open the app and you’ll see a link that says Register here
-
Click it to see the Account verification screen
-
Enter invalid details to this screen (for example an age that’s not in the range of 11 and 130), you should get an error
-
When you are on the Contact Information screen, enter an invalid email and phone number, you should get an error
-
-
Reset passcode
-
Open the app and you’ll see a link that says Reset passcode
-
Click it to see the Account verification screen
-
Enter invalid user ids and you should get an error
-
You’ll be asked to enter the one-time code, enter an invalid one and confirm, you should receive an error
-
You’ll be asked to provide new passcode, provide invalid ones and you should get an error
-
-
Forgotten User ID
-
Open the app and navigate to the regular login screen (the one with user id and passcode)
-
Click on Forgotten User ID link and you’ll reach the Account verification screen
-
Enter invalid details (for example wrong sort code) and click Next, you should get errors
-
You’ll be asked to enter the one-time code, enter an invalid one and confirm, you should get errors
-
-
-
We need to be able to add the E2E tests as part of our GitLab CI / CD pipeline, so make sure the tests can be executed there.
-
Please add a new command to run the E2E tests.
-
No existing code should be modified and no existing features should be broken.
-
There should be no linting errors or warnings with the unit tests code.
-
The production build of the prototype must not be broken.
Review Criteria
The following will be considered during review:
-
Number of user flows (scenarios completed)
-
Coding standards and documentation following Appium best practices
-
The breadth of test coverage (devices and platforms)
-
Types of testing scenarios (UI, functional, performance, etc…)
-
Stability of tests (how many times can they be run in a row without failure)
-
Quality of reports (how useful would this be in a CI system)
LICENSES & ATTRIBUTION
-
Licenses to be followed in development:
-
Apache License 2.0
-
MIT License
-
Common Development and Distribution License
-
Eclipse Public License version 2.0
-
-
Sufficient information regarding third-party assets must be present in your documentation. This includes the author, license info, and a direct link to the asset online.
BROWSER REQUIREMENTS
-
iOS 10+ (iPhones in portrait mode only)
-
Android 5+ (phones in portrait mode only)
Final Submission Guidelines
-
Full code that covers all the requirements.
-
Updated / new build scripts to run the E2E tests
-
A detailed README file including information on how to set up, run, and verify your application.