/SDETTII_Technical_Test

Create automated scripts to test ecommerce mobile app place order as a guest feature

Primary LanguageJava

Global overview

Requirements

Different requirements:

  • Appium instance running and reachable. Check this link to get futher info about Appium Server. Or go here link to get information on using Appium Desktop.

  • At least, one device/emulator attached and reachable via adb. Check command adb devices to ensure Appium will get the device reference to interact with it.

  • The environment variable $ANDROID_HOME needs to be correctly set up, pointing to the Android SDK folder

🚀 Quick Start - Appium set up on Windows (Android):

  1. Install Java JDK8 and IntelliJ IDEA
  2. Install NodeJS
  3. Install Android studio
  4. Install Appium Server (v2.x) using npm (CLI) command npm install -g appium@next
   Appium server version 2.0.0-beta.55
Command to check the installed appium version: `appium --version`
  1. Add below Android SDK path in the environment variable
    - ANDROID_HOME = <path to Sdk folder>
    - %ANDROID_HOME%\tools
    - %ANDROID_HOME%\tools\bin
    - %ANDROID_HOME%\platform-tools
  1. Install Maven and configure Maven Home by following the instructions here Link
  2. Install Appium desktop
  3. Install Appium Inspector

🚀 Quick Start - Appium set up on MAC (Android):

  1. Install Homebrew
  2. Install NodeJS
  3. Install Java JDK8 and IntelliJ IDEA
  4. Install Appium server using npm (CLI) or Appium desktop client
  5. Install Android studio
  6. Install Maven and configure Maven Home by following the instructions here Link
  7. Install Appium Inspector
  8. Set JAVA_HOME and ANDROID_HOME environment variables

📌 Appium Doctor to verify the installations

  1. Install appium-doctor using command npm install -g appium-doctor
  2. To view the list of available options appium-doctor --help
To check Android set up `appium-doctor --android`
To check ios set up `appium-doctor --ios`

📌 Creating Android Virtual Device (Emulator) from Android Studio:

  1. Open Android Studio.
  2. Click on Tools -> AVD Manager -> Create Virtual Device -> Select the device and OS version -> Finish.
  3. Once Virtual device is created, click on Launch this AVD in the emulator.
  4. Command to view the list of devices attached adb devices

📌 Repo & Project Setup:

  • Create your own repository to store this project and all of your work.
  • Fork or Clone this repository (SDETII_Technical_Test) to your local machine, and then push your work to your repository.

📌 Pull Requests and Code Review:

  • This is optional, but if you want good feedback on your submitted solutions you can create a Pull Request (in your repository) and notify us when it is ready for review. There's an example Pull Request in this repository for reference: HelloImKevo/GroovyPaymentApp-Senior#2
  • Additional information can be found under the Git Workflow References section.

Expectations:

  • Okay, phew. If you made it this far, you're in good shape 👍 hopefully that stuff didn't take too much time (it gets easier with practice).
  • This project is effectively a coding assessment designed to help us identify your Skills and Areas of Expertise and Attention to Detail, while providing you a little bit of exposure to our Git Workflow. Finally, The task at hand is right below! 😃

Create automated scripts to test ecommerce mobile app place order as a guest feature

write automation scripst to automate the below scenarios

Scenario_01: User sorts the items
   Given: User clicks accept on login prompt 
   And: User is on the Dashboard
   When: User chooses 'outdoor' category
   And: User sorts by lower price  
   Then: User validate the is sorted correctly  

Scenario outline_02: User validates category options
   Given: User clicks on accept on login prompt
   Given: User is on the Dashboard
   When: User picks Category 
   And: User clicks on Home and Grocery   
   Then: User enter en difference "options"
   Then: User is on "options" page

➡️ Examples* Meat&Fish, Fruits&Vegetables, Groceries

Scenario_03 : User submits the form
   Given: User clicks on accept on login prompt
   Given: User is on the Dashboard
   When: User clicks on more
   And: User chooses contact us 
   And: User enter en difference "options"
   Then: User fills out the data
   And: User submit the form

Additional functionalities, that may be covered:

  1. The more, the better. Only if it makes sense. Use your imagination and write some additional tests if you feel you can cover other important functionalities.
  2. Please include any third party test reporting tools(Ex. Extent Report, Allure report) in your automation project.
  3. Please use Excel/csv file as external test data provider and your automation script have the ability to read and write data from excel/csv for above scenario(Ex. Billing/shipping address and all the quoted value in scenario step can be read from excel as test data)

📌 Using automation framework is a must:

You can feel free to choose the framework with page object modal design pattern, that suits you best, along with the Java or other programming language as you preferred.

📌 Record a video of tests execution:

If possible, record a video to show how your tests are interacting with the mobile app(In Emulator). Attach the video as part of your solution. (Totally not necessary) 😏

Submission Review Guidelines:

  • After you push commits to the project, our team will Review your work and provide Constructive Feedback the day of the interview on how to improve your code readability, code organization, your approach to solving the problem, or sometimes we will just banter about random technology trends or the latest data breaches 😬
  • Oftentimes, code style is Subjective, and there's no right or wrong answer, and that's okay! If you disagree with our feedback, let us know why you wrote it that way - we look forward to learning new things and better practices from you 😁
  • Code style and consistency is important to us - we take pride in every line of code we write, and encourage you to do the same.
  • We are more interested in the Quality of your submissions, rather than the quantity of submissions. Quality is assessed using some of these parameters:
    • Is the Code Style consistent? (Do variables follow the same standard conventions? Is the code formatted with the same indentation levels?)
    • Is the Git History clean and well-organized? Can we run a git log --oneline and figure out how the candidate implemented their solution for the task? Recommended reading: https://chris.beams.io/posts/git-commit/
    • Are the methods / functions designed to be small and Focused? (It is, however, recognized that long methods are sometimes appropriate.)
    • Is complex or obscure logic Documented? Are comments used effectively?
    • Does the Code Architecture follow recommended developer patterns?

Questions or Concerns?

  • For any company-related or interview-related questions, reach out to your point-of-contact (likely a Hiring Manager).
  • If you would like to keep your work in a private repository, please notify the Hiring Manager, and they will provide you a list of email addresses for the code reviewers that you'll need to invite as collaborators to your repository.
  • If you have technical questions or need assistance with this project, ask the Hiring Manager, and they will provide you with the email addresses of one of our team members, and you can email us your question directly, and we will do our best to help. Good luck and Happy Coding!! 💻