{"id":13753048,"url":"https://github.com/thoughtworks/Arium","last_synced_at":"2025-05-09T20:34:43.946Z","repository":{"id":49122186,"uuid":"290967338","full_name":"thoughtworks/Arium","owner":"thoughtworks","description":"Automation Testing Framework for XR(Unity) Applications.","archived":false,"fork":false,"pushed_at":"2023-09-25T10:05:31.000Z","size":252,"stargazers_count":51,"open_issues_count":0,"forks_count":10,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-07T19:26:51.882Z","etag":null,"topics":["arvr","automation","testing","unity3d"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoughtworks.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-28T06:19:50.000Z","updated_at":"2025-04-04T03:16:58.000Z","dependencies_parsed_at":"2022-09-05T13:22:03.886Z","dependency_job_id":"dfd58543-1b78-4f22-bba9-44f9268cafef","html_url":"https://github.com/thoughtworks/Arium","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2FArium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2FArium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2FArium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoughtworks%2FArium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoughtworks","download_url":"https://codeload.github.com/thoughtworks/Arium/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253321818,"owners_count":21890471,"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":["arvr","automation","testing","unity3d"],"created_at":"2024-08-03T09:01:15.317Z","updated_at":"2025-05-09T20:34:42.096Z","avatar_url":"https://github.com/thoughtworks.png","language":"C#","readme":"![Logo](Logo.png)\n# Arium\nAutomation Testing Framework for AR(Unity) Applications.\n\n## About Arium:\nArium is an automation testing framework for 3D applications built on top of Unity. It helps the Developers/QA to run functional tests on 3D apps on any platforms.\nie., Unity Editor,Android,UWP etc..\n\nArium comes with the basic Unity interactions:\n- Animator\n- DragHandler\n- PointerClickHandler\n- PointerEnterHandler\n- PointerExitHandler\n- RigidBody\n\n## License\n\u003cb\u003e© 2020 ThoughtWorks, Inc.\u003c/b\u003e \u003cbr\u003e\n[AGPL-3.0 License](LICENSE)\n\n## Contributors\n![ThoughtWorks](ThoughtworksLogo.png)\nMaintained by \u003cb\u003e[ThoughtWorks](http://thoughtworks.com/)\u003c/b\u003e\u003cbr\u003e\n\n## Project Charter \n- [Neelarghya Mandal](https://github.com/Neelarghya/) (Contributors)\n- [Jayachandran S](https://github.com/Jayachandranaug29/) (Contributors)\n- [Raju Kandaswamy](https://github.com/rkandas) (Reviewer)\n- [Kuldeep Singh](https://github.com/thinkuldeep) (Reviewer)\n\n## Releated Articles:\n[Arium - An Automation framework for Unity/XR](https://medium.com/xrpractices/arium-an-automation-framework-for-unity-xr-d51ed608e8b0)\n\n## Setup:\n1. Download Arium Unity Package https://github.com/thoughtworks/Arium/releases\n2. Open your Unity project which needs to be automated.\n3. Double click on the downloaded Unity package.\n4. Select all and click on Import Button.\n\n## Running Sample Test cases:\n1. Open UnitySampleScene in the project hierarchy - Samples \u003e\u003e AriumSample \u003e\u003e Scenes \u003e\u003e UnitySampleScene.\n2. Open Unity Build settings - File \u003e\u003e Build Settings\n3. Click on Add Open Scenes.\n    Note: Make sure the UnitySampleScene is selected \n4. Close Unity build settings window\n5. Open TestRunner window in Unity - Window \u003e\u003e General \u003e\u003e TestRunner.\n6. Expand the Arium hierarchy in the Test Runner - Arium \u003e\u003e AriumSampleTests.dll \u003e\u003e Samples \u003e\u003e AriumSample \u003e\u003e UnityTestRunner\n7. Select PlayMode Tests and Right click on UnityTestRunner and Click on RUN.\n8. Test Cases will start executing and results will be displayed on the TestRunner.\n\n## Arium Usage:\n\n### Instantiate Arium:\n\nTo use Arium framework, Arium should be instantiated inside the test class as mentioned below\n\n#### syntax:\n\n    Arium _arium = new Arium();\n   \n### Find GameObjects:\n\nTo find a Gameobject from the Unity Scene hierarchy using its name.\n\n#### Syntax:\n    _arium.FindGameObject(\"Display\"); //To find \"Display\" gameobject but doesn't include inactive/deactive gameobjects in search. \n    _arium.FindGameObject(\"Display\", true); //To find \"Display\" gameObject and include inactive/deactive gameobjects in search.\n    \n##### Paremeters:\n    String - Name of the Gameobject.\n    bool - flag to include inactive/deactive GameObject in search (by default false).\n    \n##### Return type:\n    UnityEngine.GameObject\n\n### GetComponents:\n\nTo retrieve the components attached to a GameObject\n\n#### Syntax:\n    _arium.GetComponent\u003cName of the component here\u003e(Name of the GameObject here)\n    \n##### Paremeters:\n    String - Name of the Gameobject.\n    UnityComponent - UnityComponent type\n    \n##### Return type:\n    UnityEngine.Component\n\n### PerformActions:\n\nTo interact with the UnityGameobjects on runtime.\n\n#### Syntax:\nTo click on a particular gameobject.\n \n    _arium.PerformAction(new UnityPointerClick(), \"Name of the gameobject here\");\n    \n##### Parameters:\n    Interaction - Type of the interaction need to be performed on a gameobject, in this case it is UnityPointerClick()\n    String - Name of the Gameobject.\n    \n## Calling input methods on components based on EventSystem handled interfaces:\nUnityEventSystemInteraction class is a static generic class which invoke functions on components based out of EventSystem Handled interfaces eg IPointerClickHandler in case of Unity UI Button Component. It containes 2 methods which can be called as follows:\n\n### Method 1\n     \n     UnityEventSystemInteraction\u003cT\u003e.PerformAction(\"GameObject Name\");\n     UnityEventSystemInteraction\u003cT\u003e.PerformAction(\"GameObject Name\", new PointerEventData(EventSystem.current));\n     \n     T : Interface based on IEventSystemHandler eg IPointerClickHandler, IDragHandler, IPointerDownHandler\n     GameObject Name - Name of the GameObject on which action needs to be performed.\n     AbstractEventData - Abstract base class for input event data by Unity\n     \n### Method 2    \n     \n     UnityEventSystemInteraction\u003cT\u003e.PerformAction(GameObjectRef);\n     UnityEventSystemInteraction\u003cT\u003e.PerformAction(GameObjectRef, new PointerEventData(EventSystem.current));\n     \n     T : Interface based on IEventSystemHandler eg IPointerClickHandler, IDragHandler, IPointerDownHandler\n     GameObject Name - Name of the GameObject on which action needs to be performed.\n     AbstractEventData - Abstract base class for input event data by Unity\n    \n\n### Example:\n\n     //Call IPointerClick methods on components attached on GameObject\n     UnityEventSystemInteraction\u003cIPointerClickHandler\u003e.PerformAction(\"GameObject Name\");\n     \n     //Call IPointerClick methods on components attached on gameObjectRef\n     UnityEventSystemInteraction\u003cIPointerClickHandler\u003e.PerformAction(gameObjectRef);\n     \n     //Call IDragHandler methods on the specified GameObject Reference passing Pointer Position in PointerEventData()\n     UnityEventSystemInteraction\u003cIDragHandler\u003e.PerformAction(gameObjectRef, new PointerEventData(EventSystem.current)\n            { \n                position = new Vector2(positionXOfDrag,positionYOfDrag),\n            }); \n   \n# Class Diagram\n![Class Diagram](ClassDiagram.jpg)\n\n# Contribution to Arium:\nTo contribute to Arium, follow the steps [contributor](contributing.md)\n","funding_links":[],"categories":["Don't forget to give a :star: to make the project popular"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtworks%2FArium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoughtworks%2FArium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtworks%2FArium/lists"}