How facuestigarribia/swaglabs-mobile-qa works
This repository is cross-platform UI test automation for the Swag Labs mobile app, not the app itself. Its principal workflow exercises login, product discovery and cart operations, then the staged checkout through completion on Android or iOS. Services orchestrate page transitions and assert that expected pages open; shared page abstractions and platform-specific pages implement UI interactions. User leasing, retry handling, and Allure reporting are supporting runtime capabilities. The README documents broader feature suites, but their test classes are not present in the supplied tree, so their links to these runtime components are not shown.
Main entry points: ProductsPage.java Products page · CheckoutService.java Checkout service · CartPage.java Cart page · LoginService.java Login service
Components 25
Test workflow
- Suite setup
src/main/java/com/mobile/swaglabs/qa/SwagLabsBaseTest.java - Login service
src/main/java/com/mobile/swaglabs/qa/service/LoginService.java - Checkout service
src/main/java/com/mobile/swaglabs/qa/service/CheckoutService.java
Mobile UI
- Login page
src/main/java/com/mobile/swaglabs/qa/pages/common/LoginPage.java - Products page
src/main/java/com/mobile/swaglabs/qa/pages/common/ProductsPage.java - Product card
src/main/java/com/mobile/swaglabs/qa/components/common/ProductCard.java - Product details
src/main/java/com/mobile/swaglabs/qa/pages/common/ProductDetailsPage.java - Cart page
src/main/java/com/mobile/swaglabs/qa/pages/common/CartPage.java - Cart item
src/main/java/com/mobile/swaglabs/qa/components/common/CartItem.java - Checkout information
src/main/java/com/mobile/swaglabs/qa/pages/common/CheckoutInformationPage.java - Checkout overview
src/main/java/com/mobile/swaglabs/qa/pages/common/CheckoutOverviewPage.java - Checkout complete
src/main/java/com/mobile/swaglabs/qa/pages/common/CheckoutCompletePage.java - Android UI pages
src/main/java/com/mobile/swaglabs/qa/pages/android - iOS UI pages
src/main/java/com/mobile/swaglabs/qa/pages/ios
Test data
- User pool
src/main/java/com/mobile/swaglabs/qa/service/UsersPool.java - User data
src/main/java/com/mobile/swaglabs/qa/data/UserData.java - User provider
src/main/java/com/mobile/swaglabs/qa/data/UserProvider.java - Sort options
src/main/java/com/mobile/swaglabs/qa/enums/SortOption.java
Run support
- Retry listener
src/main/java/com/mobile/swaglabs/qa/retry/RetryAnalyzerListener.java - Retry analyzer
src/main/java/com/mobile/swaglabs/qa/retry/RetryCountAnalyzer.java - Allure adapter
src/main/java/com/mobile/swaglabs/qa/listener/AllureAdapterListener.java - Failure screenshots
src/main/java/com/mobile/swaglabs/qa/listener/ScreenshotOnFailureListener.java
Other components
- Test runner
- Appium device
- Allure results
Connections 25
- Test runner → Suite setup: starts suite
- Suite setup → Appium device: configures session
- Suite setup → User pool: leases users
- Login service → User provider: gets credentials
- User provider → User data: provides user
- Login service → Login page: opens page
- Login page → Products page: submits login
- Login service → Products page: returns page
- Products page → Product card: reads cards
- Products page → Product details: opens details
- Products page → Cart page: opens cart
- Products page → Sort options: uses ordering
- Cart page → Cart item: reads items
- Checkout service → Cart page: opens cart
- Checkout service → Checkout information: starts checkout
- Checkout service → Checkout overview: submits information
- Checkout service → Checkout complete: finishes checkout
- Cart page → Checkout information: taps checkout
- Checkout information → Checkout overview: submits details
- Checkout overview → Checkout complete: finishes order
- Android UI pages → Appium device: drives Android
- iOS UI pages → Appium device: drives iOS
- Retry listener → Retry analyzer: attaches analyzer
- Allure adapter → Allure results: adds metadata
- Failure screenshots → Allure results: captures failures