Browse Source

Add Remote Gem repository workflow to Create a Gem workflow and update existing workflow(#135)

* Add Remote Gem respository workflow.

Signed-off-by: FuzzyCarterAWS <[email protected]>

* Update workflow 4 title to workflow 2

Signed-off-by: FuzzyCarterAWS <[email protected]>

* Updating dangling Things to Watch For entry to be a complete thought.

Signed-off-by: FuzzyCarterAWS <[email protected]>

* Updating first workflow to follow better workflow standards and updating to better MD table formatting and further adjustments based upon PR feedback.

Signed-off-by: FuzzyCarterAWS <[email protected]>

* Add reference to Canonical Gems and a note to a known issue with trailing slashes or trailing white spaces in a url

Signed-off-by: FuzzyCarterAWS <[email protected]>

---------

Signed-off-by: FuzzyCarterAWS <[email protected]>
Fuzzy Carter 2 years ago
parent
commit
5beb7e648e

+ 97 - 12
testing-guidance/workflow-tests/o3de-project-manager/create-a-gem/create-a-gem-workflow-tests.md

@@ -5,18 +5,103 @@ These workflows center around testing the basic functionality of the Project Man
 ## Common Issues
 
 *   Dialogs do not open or progress as expected
-*   Created gems do not immediately refresh in gem catalog list
+*   Created gems do not immediately refresh in **Gem Catalog** list
 
 ## Workflows
 
-| Workflow                                 | Steps                                                                                                                                                                                                          | Expectations                                                                                                                                                                                                                                                                                                            |
-|------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Launch Create a Gem experience           | 1.  Enter the Gem Catalog<br>2.  Select the hamburger menu in the top right corner<br>3.  Select "Create a New Gem"                                                                                            | Dialog changes to Create a New Gem step 1 "Gem Setup"                                                                                                                                                                                                                                                                   |
-| Step 1 - Gem Setup Options               | 1.  Launch the Create a Gem experience<br>2.  Observe the options in Step 1                                                                                                                                    | Dialog displays options for:<br><br>*   Prebuilt Gem<br>*   GemRepo<br>*   Asset Gem<br>*   Default Gem<br>*   C++ Tool Gem<br>*   Python Tool Gem<br>*   Choose existing template                                                                                                                                      |
-| Step 2 - Gem Details                     | 1.  Launch the Create a Gem experience<br>2.  Select a gem type/template<br>3.  Left click Next                                                                                                                | All fields can be edited<br>    *   Gem System Name<br>   *   Gem Display Name<br>    *   Gem Summary<br>    *   Requirements<br>    *   Target Platform(s)<br>   *   License<br>    *   License URL<br>    *   User-defined Gem Tags<br>    *   Gem Location<br>    *   Gem Icon Path<br>    *   Documentation URL<br> |
-| Step 2 - Required Fields not satisfied   | 1.  Launch the Create a Gem experience<br>2.  Select a gem type/template<br>3.  Left click Next<br>4.  On step 2 page, click next without entering information into some of the required fields (marked by \*) | *   User is unable to progress without required fields and a visual indicator suggests what is missing<br>   Required Fields:<br>    *   Gem Display Name<br>    *   Gem System Name<br>    *   License<br>   *   Gem Location<br>                                                                                      |
-| Step 3 - Creator Details                 | 1.  Launch the Create a Gem experience<br>2.  Select a Gem Type/Template<br>3.  Left Click Next<br>4.  Enter Details for Gem<br>5.  Left Click Next                                                            | *   User is unable to progress without required fields and a visual indicator suggests what is missing<br>   Required Fields:<br>    *   Creator Name<br>                                                                                                                                                               |
-| Gem name matches existing gem            | 1.  Create two gems with the same name, but different values for description, etc.                                                                                                                             | *   No issues in using both gems together                                                                                                                                                                                                                                                                               |
-| Created Gem displays in Gem Catalog      | 1.  All steps completed (1-3) for creating a new gem<br>2.  Go to Gem Catalog if not already there after creating                                                                                              | *   Gem can be found in the gem catalog and enabled/disabled                                                                                                                                                                                                                                                            |
-| Platform Support - Platforms Specified   | 1.  Create a Gem, including Platform selections during Step 2<br>2.  Finish Gem Creation                                                                                                                       | * Created Gem shows the selected Platforms in its description within the Gem Catalog                                                                                                                                                                                                                                    |
-| Platform Support - Platforms Unspecified | 1.  Create a Gem, without including Platform selections during Step 2<br>2.  Finish Gem Creation                                                                                                               | * Created Gem Shows no entry related to Platforms in its description within the Gem Catalog                                                                                                                                                                                                                             |
+### Workflow: Create a Gem from O3DE Project Manager
+
+### New Gem Template
+
+* Prebuilt Gem
+* GemRepo
+* Asset Gem
+* Default Gem
+* C++ Tool Gem
+* Python Tool Gem
+* Choose existing template
+
+#### Gem Details Editable Fields
+ 
+* Gem System Name [*Required]
+* Gem Display Name [*Required]
+* Gem Summary
+* Requirements
+* Target Platform(s)
+* License [*Required]
+* License URL
+* User-defined Gem Tags
+* Gem Location [*Required] [o3de/o3de#13736](https://github.com/o3de/o3de/issues/13736) 
+* Gem Icon Path [o3de/o3de#15540](https://github.com/o3de/o3de/issues/15540)
+* Documentation URL
+
+#### Creator Details Editable Fields
+
+* Creator Name [*Required]
+* Origin URL
+* Repository URL
+
+### Target Platforms
+
+* Windows
+* Linux
+* iOS
+* Android
+* All Platforms
+
+**Platforms**
+* Windows
+* Linux
+
+| Workflow                                 | Steps                                                                                                                                                                                                                                                                                                                                                                                    | Expectations                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+|------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Create a Gem Experience                  | <ol><li>Enter the Gem Catalog.</li><li>Select the hamburger menu in the top right corner.</li><li>Select **Create New Gem**.</li><li>Select a gem **type** or **template** that you want to create and click next.</li><li>Populate the gem details fields and click next.</li><li>Populate the Creator Details and click next.</li><li>Return to **Gem Catalog** and refresh.</li></ol> | <ul><li>A new gem can be created using all [New Gem Templates](#new-gem-template).</li><li>All [Gem Details Editable Fields](#gem-details-editable-fields) & [Creator Details Editable Fields](#create-details-editable-fields) can be modified.</li><li>If [Required Gem Details Fields](#gem-details-editable-fields) or [Creator Details Editable Fields](#create-details-editable-fields) are not populated with valid data the user cannot proceed and a visual indicator informs the user of the required fields.</li><li>Gem folder is created in the target destination with the expected type or template.</li><li>Created Gem displays in Gem Catalog.</li></ul> |
+| Gem name matches existing gem            | <ol><li>Create two gems with the same name, but different values for description, etc.</li></ol>                                                                                                                                                                                                                                                                                         | <ul><li>No issues in using both gems together.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+| Platform Support - Platforms Specified   | <ol><li>Create a Gem and include desired [Target Platforms](#target-platforms) selections on the **Gem Details** panel.</li></ol>                                                                                                                                                                                                                                                        | <ul><li>Created Gem shows the selected Platforms in its description within the **Gem Catalog**.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+| Platform Support - Platforms Unspecified | <ol><li>Create a Gem, without including any desired [Target Platforms](#target-platforms)</li></ol>                                                                                                                                                                                                                                                                                      | <ul><li>Created Gem Shows no entry related to Platforms in its description within the **Gem Catalog**.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+
+
+### Workflow: Add a remote gem from O3DE Project Manager
+
+**Workflow Docs**
+[O3DE Gem Repositories](https://www.o3de.org/docs/user-guide/gems/repositories/overview/)
+
+**Repository Configuration**
+
+A git repository must contain a `repo.json` at its root which points to templates. The `repo.json` contains a gems 
+list which points to the remote gems within said repository.
+
+See [sample-code-gems repo.json](https://github.com/o3de/sample-code-gems/blob/main/repo.json) as an example.
+
+```json
+{
+    "gems": [
+        "https://raw.githubusercontent.com/o3de/sample-code-gems/main/atom_gems/AtomTutorials",
+        "https://raw.githubusercontent.com/o3de/sample-code-gems/main/cpp_gems/ShapeExample",
+        "https://raw.githubusercontent.com/o3de/sample-code-gems/main/py_gems/PyShapeExample"
+    ]
+}
+```
+
+**Workflow Requirements**
+* A built project to add a remote gem to (a blank template project is acceptable).
+* Locally installed tools for the remote source being used (git installed with credentials for GitHub, for example)
+* A remote Git repository (GitHub, AWS CodeCommit, BitBucket, self-hosted, ETC) that has a remote project.
+  * Examples: 
+    * sample-code-gems (https://github.com/o3de/sample-code-gems.git)
+    * O3DE Canonical Gems (https://canonical.o3de.org) [o3de/o3de#15557](https://github.com/o3de/o3de/issues/15557)
+    * Another [O3DE](https://github.com/o3de) owned sample with compatible remote gems.
+  * Your own repository URI with a remote gem you've created.
+
+**Platforms**
+* Windows
+* Linux
+
+**Product:** A built project with a remote gem added to it.
+
+**Suggested Timebox:** 30 minutes per platform
+
+| Workflow                                                 | Requests                                                                                                                                                                                                                                                                                                                                                                                                                | Things to Watch For                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+|----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Add **Remote Gem(s)** to **Gem Remote Sources Manager**. | <ol><li>Open O3DE Project Manager.</li><li>Select **Gems** from the O3DE Project Manager Ribbon.</li><li>Open **Gem Remote Sources Manager**. <ul><li>`Gem Catalog Hamburger Menu → Show Gem Repos`</li></ul></li><li>Add your remote gem repository.<ul><li>Click **Add Repository** button.</li><li>Add your remote gem URI and click the **Add** button in the **Add a User Repository** dialog.</li></ul></li></ol> | <ul><li>**Gem Remote Sources Manager** lists the remote repositories.</li><li>Remote gems are displayed in **Gem Catalog** only when Remote Source is added to the **Gem Remote Sources Manager**.</li><li>**Gem Remote Sources Manager** can be refreshed.</li><li>A **Remote Source** can be deleted from the **Gem Remote Sources Manager.**</li><li>Gems that have had their **Remote Source** removed from the **Remote Sources Manager** do not display in the **Gem Catalog**.</ul>                               |
+| Add **Remote Gem** to an **O3DE Project**.               | <ol><li>Add **Remote Gem(s)** to the **Gem Remote Sources Manager.**</li><li>Configure your project to add your **Remote Gem(s)**.</li><li>Build and open your project in the O3DE Editor.</li></ol>                                                                                                                                                                                                                    | <ul><li>**Remote Gem(s)** can be added & removed from an **O3DE Project**.</li><li>Known good **Remote Gem(s)** should build.</li><li>**Remote Gem(s)** content can be interacted with from the O3DE Editor. <ul><li>EG: Assets are processed and available in asset manager if assets are present.</li><li>EG: Editor Entity Components can be added if Editor Entity Components are present.</li><li>EG: Script Canvas nodes can be added to a graph if Script Canvas nodes are present in the gem.</li></ul></li></ul>|