{"id":13646243,"url":"https://github.com/microsoft/hydralab","last_synced_at":"2025-04-13T15:53:51.349Z","repository":{"id":64427160,"uuid":"486525050","full_name":"microsoft/HydraLab","owner":"microsoft","description":"Intelligent cloud testing made easy.","archived":false,"fork":false,"pushed_at":"2025-04-01T02:46:34.000Z","size":146145,"stargazers_count":987,"open_issues_count":52,"forks_count":102,"subscribers_count":6098,"default_branch":"main","last_synced_at":"2025-04-08T10:11:53.059Z","etag":null,"topics":["azure","chatgpt","cloud-testing","cross-platform","developer-tools","device-farm","e2e-testing","mobile-development","performance-testing","platform-engineering","spring-boot","test-automation","testgpt","testing","testing-framework","ui-testing"],"latest_commit_sha":null,"homepage":"","language":"Java","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/microsoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-28T09:18:16.000Z","updated_at":"2025-04-04T01:58:04.000Z","dependencies_parsed_at":"2023-12-23T22:20:41.366Z","dependency_job_id":"a0e83f19-5f5d-4d58-a935-1350556f286c","html_url":"https://github.com/microsoft/HydraLab","commit_stats":{"total_commits":647,"total_committers":32,"mean_commits":20.21875,"dds":0.7357032457496135,"last_synced_commit":"33817c5186eb28ae6d1016a28557bf01a840718a"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FHydraLab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FHydraLab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FHydraLab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microsoft%2FHydraLab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microsoft","download_url":"https://codeload.github.com/microsoft/HydraLab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248741148,"owners_count":21154249,"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":["azure","chatgpt","cloud-testing","cross-platform","developer-tools","device-farm","e2e-testing","mobile-development","performance-testing","platform-engineering","spring-boot","test-automation","testgpt","testing","testing-framework","ui-testing"],"created_at":"2024-08-02T01:02:51.285Z","updated_at":"2025-04-13T15:53:51.323Z","avatar_url":"https://github.com/microsoft.png","language":"Java","readme":"\u003ch1 align=\"center\"\u003eHydra Lab\u003c/h1\u003e\n\u003cp align=\"center\"\u003eBuild your own cloud testing infrastructure\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n\n[中文(完善中)](README.zh-CN.md)\n\n[![Build Status](https://dlwteam.visualstudio.com/Next/_apis/build/status/HydraLab-CI-NonPro?branchName=main)](https://dlwteam.visualstudio.com/Next/_build/latest?definitionId=805\u0026branchName=main)\n![Spring Boot](https://img.shields.io/badge/Spring%20Boot-v2.2.5-blue)\n![Appium](https://img.shields.io/badge/Appium-v8.0.0-yellow)\n![License](https://img.shields.io/badge/license-MIT-green)\n\n---\n\nhttps://github.com/microsoft/HydraLab/assets/8344245/cefefe24-4e11-4cc7-a3af-70cb44974735\n\n[What is Hydra Lab?](#what-is) | [Get Started](#get-started) | [Contribute](#contribute) | [Contact Us](#contact) | [Wiki](https://github.com/microsoft/HydraLab/wiki)\n\u003c/div\u003e\n\n\u003cspan id=\"what-is\"\u003e\u003c/span\u003e\n## What is Hydra Lab?\n\nAs mentioned in the above video, Hydra Lab is a framework that can help you easily build a cloud-testing platform utilizing the test devices/machines in hand. \n\nCapabilities of Hydra Lab include:\n- Scalable test device management under the center-agent distributed design; Test task management and test result visualization.\n- Powering [Android Espresso Test](https://developer.android.com/training/testing/espresso), and Appium(Java) test on different platforms: Windows/iOS/Android/Browser/Cross-platform.\n- Case-free test automation: Monkey test, Smart exploratory test.\n\nFor more details, you may refer to:\n- [Introduction: What is Hydra Lab?](https://github.com/microsoft/HydraLab/wiki)\n- [How Hydra Lab Empowers Microsoft Mobile Testing and Test Intelligence](https://medium.com/microsoft-mobile-engineering/how-hydra-lab-empowers-microsoft-mobile-testing-e4bd831ecf41)\n\n\u003cspan id=\"get-started\"\u003e\u003c/span\u003e\n## Get Started\n\nPlease visit our **[GitHub Project Wiki](https://github.com/microsoft/HydraLab/wiki)** to understand the dev environment setup procedure: [Contribution Guideline](CONTRIBUTING.md).\n\n**Supported environments for Hydra Lab agent**: Windows, Mac OSX, and Linux ([Docker](https://github.com/microsoft/HydraLab/blob/main/agent/README.md#run-agent-in-docker)).\n\n**Supported platforms and frameworks matrix**:\n\n|  | Appium(Java) | Espresso | XCTest | Maestro | Python Runner |\n| ---- |--------------|---- | ---- | ---- | --- |\n|Android| \u0026#10004;     | \u0026#10004; | x | \u0026#10004; | \u0026#10004; |\n|iOS| \u0026#10004;     | x | \u0026#10004; | \u0026#10004; | \u0026#10004; |\n|Windows| \u0026#10004;     | x | x | x | \u0026#10004; |\n|Web (Browser)| \u0026#10004;     | x | x | x | \u0026#10004; |\n\n\u003cspan id=\"quick-start\"\u003e\u003c/span\u003e\n### Quick guide on out-of-box Uber docker image\n\nHydra Lab offers an out-of-box experience of the Docker image, and we call it `Uber`. You can follow the below steps and start your docker container with both a center instance and an agent instance:\n\n**Step 1. Download and install [Docker](https://www.docker.com)**\n\n**Step 2. Download latest Uber Docker image**\n```bash\ndocker pull ghcr.io/microsoft/hydra-lab-uber:latest\n```\n**This step is necessary.** Without this step and jump to step 3, you may target at the local cached Docker image with `latest` tag if it exists.\n\n**Step 3. Run on your machine**\n\nBy Default, Hydra Lab will use the local file system as a storage solution, and you may type the following in your terminal to run it:\n\n```bash\ndocker run -p 9886:9886 --name=hydra-lab ghcr.io/microsoft/hydra-lab-uber:latest\n```\n\n\u003e We strongly recommend using [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs/) service as the file storage solution, and Hydra Lab has native, consistent, and validated support for it. \n\n**Step 3. Visit the web page and view your connected devices**\n\n\u003e Url: http://localhost:9886/portal/index.html#/ (or your custom port).\n\nEnjoy starting your journey of exploration!\n\n**Step 4. Perform the test procedure with a minimal setup**\n\nNote: For Android, Uber image only supports **Espresso/Instrumentation** test. See the \"User Manual\" section on this page for more features: [Hydra Lab Wikis](https://github.com/microsoft/HydraLab/wiki).\n\n**To run a test with Uber image and local storage:**\n- On the front-end page, go to the `Runner` tab and select `HydraLab Client`.\n- Click `Run` and change \"Espresso test scope\" to `Test app`, click `Next`.\n- Pick an available device, click `Next` again, and click `Run` to start the test.\n- When the test is finished, you can view the test result in the `Task` tab on the left navigator of the front-end page.\n\n![Test trigger steps](docs/images/test-trigger-steps.png)\n\n\n### Build and run Hydra Lab from the source\n\nYou can also run the center java Spring Boot service (a runnable Jar) separately with the following commands:\n\n\u003e The build and run process will require JDK11 | NPM | Android SDK platform-tools in position.\n\n**Step 1. Run Hydra Lab center service**\n\n```bash\n# In the project root, switch to the react folder to build the Web front.\ncd react\nnpm ci\nnpm run pub\n# Get back to the project root, and build the center runnable Jar. \ncd ..\n# For the gradlew command, if you are on Windows please replace it with `./gradlew` or `./gradlew.bat`\ngradlew :center:bootJar\n# Run it, and then visit http://localhost:9886/portal/index.html#/\njava -jar center/build/libs/center.jar\n# Then visit http://localhost:9886/portal/index.html#/auth to generate a new agent ID and agent secret.\n```\n\n\u003e If you encounter the error: `Error: error:0308010C:digital envelope routines::unsupported`, set the System Variable `NODE_OPTIONS` as `--openssl-legacy-provider` and then restart the terminal.\n\n**Step 2. Run Hydra Lab agent service**\n\n```bash\n# In the project root\ncd android_client\n# Build the Android client APK\n./gradlew assembleDebug\ncp app/build/outputs/apk/debug/app-debug.apk ../common/src/main/resources/record_release.apk\n# If you don't have the SDK for Android ,you can download the prebuilt APK in https://github.com/microsoft/HydraLab/releases\n# Back to the project root\ncd .. \n# In the project root, copy the sample config file and update the:\n# YOUR_AGENT_NAME, YOUR_REGISTERED_AGENT_ID and YOUR_REGISTERED_AGENT_SECRET.\ncp agent/application-sample.yml application.yml\n# Then build an agent jar and run it\ngradlew :agent:bootJar\njava -jar agent/build/libs/agent.jar\n```\n\n**Step 3. visit http://localhost:9886/portal/index.html#/ and view your connected devices**\n\n### More integration guidelines:\n\n- [Test agent setup](https://github.com/microsoft/HydraLab/wiki/Test-agent-setup)\n- [Trigger a test task run in the Hydra Lab test service](https://github.com/microsoft/HydraLab/wiki/Trigger-a-test-task-run-in-the-Hydra-Lab-test-service)\n- [Deploy Center Docker Container](https://github.com/microsoft/HydraLab/wiki/Deploy-Center-Docker-Container)\n\n\u003cspan id=\"contribute\"\u003e\u003c/span\u003e\n## Contribute\n\nYour contribution to Hydra Lab will make a difference for the entire test automation ecosystem. Please refer to **[CONTRIBUTING.md](CONTRIBUTING.md)** for instructions.\n\n### Contributor Hero Wall:\n\n\u003ca href=\"https://github.com/Microsoft/hydralab/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=Microsoft/hydralab\" /\u003e\n\u003c/a\u003e\n\n\u003cspan id=\"contact\"\u003e\u003c/span\u003e\n## Contact Us\n\nYou can reach us by [opening an issue](https://github.com/microsoft/HydraLab/issues/new) or [sending us mails](mailto:hydra_lab_support@microsoft.com).\n\n\n\u003cspan id=\"ms-give\"\u003e\u003c/span\u003e\n## Microsoft Give Sponsors\n\nThank you for your contribution to [Microsoft employee giving program](https://aka.ms/msgive) in the name of Hydra Lab:\n\n[@Germey(崔庆才)](https://github.com/Germey), [@SpongeOnline(王创)](https://github.com/SpongeOnline), [@ellie-mac(陈佳佩)](https://github.com/ellie-mac), [@Yawn(刘俊钦)](https://github.com/Aqinqin48), [@White(刘子凡)](https://github.com/jkfhklh), [@597(姜志鹏)](https://github.com/JZP1996), [@HCG(尹照宇)](https://github.com/mahoshojoHCG)\n\n\u003cspan id=\"license-trademarks\"\u003e\u003c/span\u003e\n## License \u0026 Trademarks\n\nThe entire codebase is under [MIT license](https://github.com/microsoft/HydraLab/blob/main/LICENSE).\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft’s Trademark \u0026 Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.\n\nWe use the Microsoft Clarity Analysis Platform for front end client data dashboard, please refer to [Clarity Overview](https://learn.microsoft.com/en-us/clarity/setup-and-installation/about-clarity) and https://clarity.microsoft.com/ to learn more.\n\nInstructions to turn off the Clarity:\n\nOpen [MainActivity](https://github.com/microsoft/HydraLab/blob/main/android_client/app/src/main/java/com/microsoft/hydralab/android/client/MainActivity.java), comment the line which call the initClarity(), and rebuild the Hydra Lab Client apk, repalce the one in the agent resources folder.\n\n[Telemetry/data collection notice](https://docs.opensource.microsoft.com/releasing/general-guidance/telemetry)\n\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2Fhydralab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrosoft%2Fhydralab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrosoft%2Fhydralab/lists"}