Skip to content

About

This project contains end-to-end automated tests for the Urban Routes application, a taxi booking service. The tests verify the complete user flow from route selection to taxi reservation confirmation.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Urban Routes — Selenium Automated Testing

End-to-end automated tests for a taxi booking service, built on the Page Object Model.


Project Description

This project contains end-to-end automated tests for the Urban Routes application, a taxi booking service. The tests verify the complete user flow from route selection to taxi reservation confirmation, including preference configuration, payment methods, and special trip requirements.

The project implements the Page Object Model (POM) design pattern to keep test code organized, maintainable, and reusable.


Technologies and Techniques Used

Technologies

  • Python 3.14.0 - Primary programming language
  • Selenium WebDriver 4.40.0 - Web browser automation framework
  • Pytest 9.0.0 - Python testing framework
  • ChromeDriver - Driver for Google Chrome automation

Techniques and Patterns

  • Page Object Model (POM) - Design pattern to separate test logic from UI interaction
  • Explicit Waits - Explicit waits to handle dynamic elements
  • XPath and CSS Selectors - Element location strategies
  • Expected Conditions - Wait conditions for element synchronization
  • Class-based Test Organization - Test organization in classes for better structure

Project Structure

urban_routes_project/
│
├── pages/
│   └── urban_routes_pages.py    # Page Object with locators and methods
│
├── tests/
│   └── urban_routes_tests.py    # Automated test suite
│
├── utilities/
│   └── retrieve_code.py         # Utility to retrieve SMS verification code
│
├── data.py                       # Test data (URLs, credentials, inputs)
├── requirements.txt              # Project dependencies
├── .gitignore                    # Files ignored by Git
└── README.md                     # Project documentation

Setup and Installation

Prerequisites

  • Python 3.14 or higher
  • Google Chrome installed
  • ChromeDriver compatible with your Chrome version

Installation

  1. Clone the repository
   git clone <repository-url>
   cd Qa-Selenium-Project-Urban-Routes
  1. Create virtual environment
   python -m venv venv
   source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies
   pip install -r requirements.txt

Running Tests

Run all tests

pytest tests/urban_routes_tests.py

Run a specific test

pytest tests/urban_routes_tests.py::TestUrbanRoutes::test_set_route

Run with detailed output

pytest tests/urban_routes_tests.py -v

Test Cases

The project includes 9 automated tests covering the complete booking flow:

# Test Case Description
1 test_set_route Set pickup and drop-off addresses
2 test_comfort_fare Select Comfort fare option
3 test_add_phone_number Add and verify phone number
4 test_add_credit_card Add credit card as payment method
5 test_comment_for_driver Add comment for the driver
6 test_add_blanket_and_handkerchiefs Enable blanket and handkerchiefs option
7 test_add_ice_cream Add ice cream to the order
8 test_car_search_modal Verify taxi search modal appears
9 test_driver_info_appears Verify driver information appears

Sample Test Results

========================= test session starts =========================
collected 9 items

tests/urban_routes_tests.py::TestUrbanRoutes::test_set_route PASSED      [ 11%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_comfort_fare PASSED   [ 22%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_add_phone_number PASSED [ 33%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_add_credit_card PASSED [ 44%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_comment_for_driver PASSED [ 55%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_add_blanket_and_handkerchiefs PASSED [ 66%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_add_ice_cream PASSED [ 77%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_car_search_modal PASSED [ 88%]
tests/urban_routes_tests.py::TestUrbanRoutes::test_driver_info_appears PASSED [100%]

========================= 9 passed in 45.23s =========================

Configuration

Test data is configured in data.py:

urban_routes_url = 'https://...'
address_from = 'East 2nd Street, 601'
address_to = '1300 1st St'
phone_number = '+1 123 123 12 12'
card_number = '1234 5678 9100'
card_code = '111'
message_for_driver = 'I am wearing red'

Important Notes

  • Tests run sequentially following the user flow
  • A single browser session is used for the entire test suite (session scope)
  • Explicit waits ensure synchronization with dynamic elements
  • The POM pattern facilitates test maintenance and updates

Author

Camilo Morales — built during the QA Engineering bootcamp at TripleTen, showing hands-on work with Selenium WebDriver and automated UI testing.

I'm now studying a Master of Cyber Security at Edith Cowan University in Perth. Software testing is the background I came from, and it still shapes how I work: read the specification carefully, break things deliberately, document exactly what happens.

GitHub · LinkedIn

About

This project contains end-to-end automated tests for the Urban Routes application, a taxi booking service. The tests verify the complete user flow from route selection to taxi reservation confirmation.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages