{"id":20298227,"url":"https://github.com/gadiim/mobile_native_application_testing","last_synced_at":"2026-05-10T01:01:54.844Z","repository":{"id":261086725,"uuid":"882837670","full_name":"gadiim/mobile_native_application_testing","owner":"gadiim","description":"Automated testing project for an Android Calculator app using WebdriverIO, Appium, and BrowserStack integrated with GitHub Actions for CI/CD.","archived":false,"fork":false,"pushed_at":"2024-12-09T16:04:21.000Z","size":568,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T10:19:29.060Z","etag":null,"topics":["android-app","appium","browserstack","mobile-testing","test-automation","typescript","webdriverio"],"latest_commit_sha":null,"homepage":"https://gadiim.github.io/mobile_native_application_testing/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gadiim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-03T22:04:01.000Z","updated_at":"2024-12-09T16:05:06.000Z","dependencies_parsed_at":"2024-11-04T16:40:31.119Z","dependency_job_id":"91a00277-6100-4470-ab8f-cbff0abd5bf1","html_url":"https://github.com/gadiim/mobile_native_application_testing","commit_stats":null,"previous_names":["gadiim/mobile_native_application_testing"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gadiim%2Fmobile_native_application_testing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gadiim%2Fmobile_native_application_testing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gadiim%2Fmobile_native_application_testing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gadiim%2Fmobile_native_application_testing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gadiim","download_url":"https://codeload.github.com/gadiim/mobile_native_application_testing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241794138,"owners_count":20021192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-app","appium","browserstack","mobile-testing","test-automation","typescript","webdriverio"],"created_at":"2024-11-14T16:07:34.198Z","updated_at":"2026-05-10T01:01:54.673Z","avatar_url":"https://github.com/gadiim.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![CI](https://github.com/gadiim/mobile_native_application_testing/actions/workflows/ci.yml/badge.svg)\n\n## Table of Contents\n- [Overview](#overview)\n- [Test Cases](#test-cases)\n- [Test Results](#test-results)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Project Structure](#project-structure)\n- [License](#license)\n\n## Overview\n\nThis project is a test automation suite for an Android Calculator app using WebdriverIO and Appium. It is designed to validate the core functionalities of the Calculator app by performing end-to-end tests on various arithmetic operations. The tests are executed on BrowserStack to ensure compatibility across different devices and configurations. Additionally, tests were also conducted locally using Appium, with a Samsung S8 smartphone. Detailed test results are available through Allure reports for comprehensive analysis.\n\n#### Requirements:\n\n- Android Version: 9.0 (Pie).\n- Calculator Version: 12.0.05.5.\n\n#### Key Features:\n\n- Automated tests for addition, subtraction, multiplication, division, percentage calculation, and sign change.\n- Integration with BrowserStack for cross-device testing.\n- Continuous Integration/Continuous Deployment (CI/CD) using GitHub Actions.\n- Allure reports for detailed test result analysis.\n\n## Test Cases\n\nThe following test cases are designed to validate the core functionalities of the Android Calculator app:\n\n**Preconditions** \n- The Calculator app must be installed and running on the device\n\n| **Test Case**                   | **Description**                                | **Steps**                                                                                                            |\n|---------------------------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|\n| **Addition Test**               | Adds 1 and 2 and verifies the result is 3      | 1. Clear the calculator.\u003cbr\u003e2. Press 1.\u003cbr\u003e3. Press the addition (+) button.\u003cbr\u003e4. Press 2.\u003cbr\u003e5. Press the equals (=) button.\u003cbr\u003e6. Verify the result is 3. |\n| **Subtraction Test**            | Subtracts 3 from 4 and verifies the result is 1| 1. Clear the calculator.\u003cbr\u003e2. Press 4.\u003cbr\u003e3. Press the subtraction (-) button.\u003cbr\u003e4. Press 3.\u003cbr\u003e5. Press the equals (=) button.\u003cbr\u003e6. Verify the result is 1. |\n| **Multiplication Test**         | Multiplies 5 by 6 and verifies the result is 30| 1. Clear the calculator.\u003cbr\u003e2. Press 5.\u003cbr\u003e3. Press the multiplication (*) button.\u003cbr\u003e4. Press 6.\u003cbr\u003e5. Press the equals (=) button.\u003cbr\u003e6. Verify the result is 30. |\n| **Division Test**               | Divides 8 by 2 and verifies the result is 4    | 1. Clear the calculator.\u003cbr\u003e2. Press 8.\u003cbr\u003e3. Press the division (/) button.\u003cbr\u003e4. Press 2.\u003cbr\u003e5. Press the equals (=) button.\u003cbr\u003e6. Verify the result is 4. |\n| **Percentage Calculation Test** | Calculates 10% of 90 and verifies the result is 9 | 1. Clear the calculator.\u003cbr\u003e2. Press 1.\u003cbr\u003e3. Press 0.\u003cbr\u003e4. Press the percentage (%) button.\u003cbr\u003e5. Press 9.\u003cbr\u003e6. Press 0.\u003cbr\u003e7. Press the equals (=) button.\u003cbr\u003e8. Verify the result is 9. |\n| **Change Sign Test**            | Changes the sign of the number and verifies the result | 1. Clear the calculator.\u003cbr\u003e2. Press 5.\u003cbr\u003e3. Press the plus/minus (±) button.\u003cbr\u003e4. Verify the result is -5. |\n\n## Test Results\n\nThe test automation suite was executed both locally using Appium and on BrowserStack for cross-device compatibility.\n\n#### Allure Reports\nDetailed test results, including screenshots and logs, are available through Allure reports. Below is a sample screenshot of the Allure report:\n\n\u003cimg src=\".image/allure_report_overview.jpg\" width=\"400\"/\u003e\n\u003cimg src=\".image/allure_report_suites.jpg\" width=\"400\"/\u003e \n\n#### BrowserStack Public Link\nTests were also run on BrowserStack, and you can view the detailed results and logs through the following public link:\n[BrowserStack Test Results](https://app-automate.browserstack.com/builds/b9f145c6e68df0bdc026ae505c03b75915846822/sessions/fe2dadcdb4569c97c8c4a247549a5d5303c972c2?auth_token=aaa32975e5253c47ab904f412f29d5c78a13285c7658b990e9e5b14e003510da)\n\n## Installation\n\nTo get started with the project, follow these steps to set up your environment and install all necessary dependencies:\n\n#### Clone the Repository:\n   ```bash\n   git clone https://github.com/gadiim/mobile_native_application_testing.git\n   ```\n\n#### Navigate to the project directory:\n   ```bash\n   cd mobile_native_application_testing\n   ```\n   \n#### Install Dependencies:\n   ```bash\n   npm install\n   ```\n\n#### Download and Install the APK File:\n   - Ensure you have the Calculator app APK file available.\n   - You can either download your own APK file or use the provided APK file from [APKMirror](https://www.apkmirror.com/apk/samsung-electronics-co-ltd/calculator-samsung/calculator-samsung-12-0-05-5-release/).\n   - \u003e **Note:** The provided APK file works with the current project configuration. If you download a different APK file, you will need to update the project configuration to match the APK file's requirements.\n   - If you're testing locally, install the APK on your Android device/emulator using the following command:\n     ```bash\n     adb install path/to/your/calculator.apk\n     ```\n   - Replace `path/to/your/calculator.apk` with the actual path to your APK file.\n\n#### Set Up Environment Variables:\n   - Create a `.env` file in the root of the project.\n   - Add the following environment variables:\n     ```plaintext\n     BROWSERSTACK_USERNAME=your_browserstack_username\n     ```\n     ```plaintext\n     BROWSERSTACK_ACCESS_KEY=your_browserstack_access_key\n     ```\n     ```plaintext\n     BROWSERSTACK_ANDROID_APP_ID=your_browserstack_android_app_id\n     ```\n\n   - You can obtain these credentials from your BrowserStack account:\n     - **BROWSERSTACK_USERNAME**: Log in to your [BrowserStack account](https://www.browserstack.com/), go to the **Profile** section, and copy your username.\n     - **BROWSERSTACK_ACCESS_KEY**: In the same **Profile** section, copy your access key.\n     - **BROWSERSTACK_ANDROID_APP_ID**: Upload your APK file to BrowserStack App Automate and copy the app ID from the upload page.\n\n\u003e #### Ensure Device Requirements:\n\u003e   - Verify the device meets the necessary requirements for testing.\n\n\n## Usage\nFollow these instructions to run the tests both locally and on BrowserStack.\n\n   #### Running Tests Locally\n   Ensure you have your device or emulator ready.\n   ```bash\n   npm run test\n   ```\n\n   #### Running Tests on BrowserStack\n   Set up environment variables as described in the Installation section.\n   ```bash\n   npm run test:bs\n   ```\n   #### Generate Allure Reports\n- Generate the Allure report after running the tests:\n   ```bash\n   npm run allure:generate\n   ```\n\n- Open the Allure report in your default web browser:\n   ```bash\n   npm run allure\n   ```\n\n## Project Structure\n```sql\nmobile_native_application_testing/\n├── .github/\n│   └── workflows/\n│       └── ci.yml                    -- GitHub Actions CI workflow\n├── config/\n│   ├── wdio.conf.android.bs.ts       -- Configuration for BrowserStack\n│   └── wdio.conf.android.ts          -- Local configuration\n│   └── wdio.conf.ts                  -- Common WebdriverIO configuration\n├── test/\n│   ├── specs/\n│   │   └── test.e2e.ts               -- End-to-end test cases for the calculator\n│   └── pageobjects/\n│       └── calculator.ts             -- Page object methods for the calculator\n├── reporters/                        -- Directory for Allure and other reports\n│   ├── allure-results/               -- Allure results\n├── .gitignore                        -- Git ignore file\n├── package.json                      -- Project dependencies and scripts\n├── tsconfig.json                     -- TypeScript configuration\n└── README.md                         -- Project documentation\n```\n\n### License\n\nThis project is licensed under the MIT License. You are free to use, modify, and distribute this project. See the [LICENSE](./LICENSE) file for more details.\n\n```plaintext\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgadiim%2Fmobile_native_application_testing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgadiim%2Fmobile_native_application_testing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgadiim%2Fmobile_native_application_testing/lists"}