{"id":19423105,"url":"https://github.com/quantori/gherkinsynctool","last_synced_at":"2025-04-24T16:30:43.104Z","repository":{"id":38239078,"uuid":"399789862","full_name":"quantori/GherkinSyncTool","owner":"quantori","description":"Gherkin tests scenario synchronizer","archived":false,"fork":false,"pushed_at":"2024-05-10T10:03:30.000Z","size":636,"stargazers_count":22,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-08-30T00:07:34.614Z","etag":null,"topics":["allure","azure-devops","bdd","cucumber","gherkin","specflow","test-automation","test-documentation","testrail"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quantori.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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":"2021-08-25T11:13:16.000Z","updated_at":"2024-08-12T18:19:25.000Z","dependencies_parsed_at":"2024-05-10T11:24:32.815Z","dependency_job_id":"eec15a17-9346-45de-ab58-913dfa774a48","html_url":"https://github.com/quantori/GherkinSyncTool","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2FGherkinSyncTool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2FGherkinSyncTool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2FGherkinSyncTool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2FGherkinSyncTool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quantori","download_url":"https://codeload.github.com/quantori/GherkinSyncTool/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223958969,"owners_count":17231883,"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":["allure","azure-devops","bdd","cucumber","gherkin","specflow","test-automation","test-documentation","testrail"],"created_at":"2024-11-10T13:36:41.955Z","updated_at":"2024-11-10T13:36:42.622Z","avatar_url":"https://github.com/quantori.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quantori GherkinSyncTool\n\nCopyright (c) 2023 Quantori.\n\nQuantori GherkinSyncTool is an open-source console application that synchronizes tests scenarios\nin [Gherkin syntax](https://cucumber.io/docs/gherkin/) (also known as feature files) with a test management system.\n\nThe GherkinSyncTool helps in building the development process using the BDD or “Specification by examples”. Both\nof them implement the basic principles of Agile and focus on team collaboration to improve communication between\nanalysts, developers, testers, and the customer.\n\n![Diagram](Docs/Diagram.png)\n\n## How it works\n\nThe GherkinSyncTool scans the files in the specified folder for the * .feature files. It sends API calls to a test\nmanagement system to create or update test cases. Received test ID will be populated into the feature files as tags for\nthe following synchronization. The test case id tag looks like this: `@tc:1234`. Important: the test case id tag should\nnot be deleted from the file!\n\n## Supported test management systems\n\n- TestRail\n- Azure DevOps\n- Allure TestOps\n- ... To add a new system implement the ISynchronizer interface.\n\n## Installation\n\nGherkinSyncTool has the next ways how to run:\n\n- Binary executable files for Linux, Windows, macOS are attached to the GitHub releases.\n\n- Nuget .NET tool https://www.nuget.org/packages/GherkinSyncTool/\n\n    ```\n    dotnet tool install --global GherkinSyncTool\n    ```\n\n- Installation from the source code\n\n    - Install [.NET](https://dotnet.microsoft.com/download).\n    - Clone the repository and open the terminal there.\n    - Build solution\n\n      ```\n      dotnet build\n      ```\n\n    - Run app\n\n      ```\n      dotnet .\\.\\GherkinSyncTool\\bin\\Debug\\net5.0\\GherkinSyncTool.dll\n      ```\n\n### TestRail\n\n1. TestRail's API should be enabled;\n2. In order for the tool to work correctly, the TestRail test template should have the\ncustom fields that are presented in the table below. The template should not contain any required fields. An existing\ntemplate can be used or a new one created.\n\n| System Name          | Type     |\n|----------------------|----------|\n| `preconds`           | Text     |\n| `steps_separated`    | Step     |\n| `tags`               | String   |\n| `gherkinsynctool_id` | String   |\n| `automation_type`    | Dropdown |\n\n## Configuration\n\nGherkinSyncTool can be configured in three ways. The priority corresponds to the list order.\n\n1. appsettings.json. [Example](GherkinSyncTool/appsettings.json).\n2. Environment variables.\n3. Command-line arguments.\n\n### Common settings\n\n| Parameter     | Description                                                                                          | Required |\n| ------------- | ---------------------------------------------------------------------------------------------------- | :------: |\n| BaseDirectory | Absolute or relative to application folder path that contains *.feature files                        | Yes      |\n| TagIdPrefix   | A tag prefix that will be used for mark test scenarios as synchronized with a test management system | No       |\n\nAllure TestOps note: `TagIdPrefix` should be configured to fill the 'as_id' Allure label correctly. For example, for\nSpecflow TagIdPrefix should be equals `@label:as_id:` It is required to not duplicate manual and automated test cases.\nThe test run result will be attached to the correct Allure test ID.\n\n### Formatting settings\n\n| Parameter      | Description            | Required |\n| -------------- | ---------------------- | :------: |\n| TagIndentation | Left indent for tag ID | No       |\n\n### TestRail settings\n\n| Parameter                  | Description                                                                                      | Required |\n| -------------------------- | ------------------------------------------------------------------------------------------------ | :------: |\n| ProjectId                  | ID of a project that will be used for synchronization                                            | Yes      |\n| SuiteId                    | ID of a suite that will be used as a parent for creating sections                                | Yes      |\n| TemplateId                 | ID of a template that will be used for creating or updating test cases                           | Yes      |\n| RetriesCount               | Count of retries in case a TestRail server returns an unsuccessful status code                   | No       |\n| PauseBetweenRetriesSeconds | Pause between retries (in seconds) in case a TestRail server returns an unsuccessful status code | No       |\n| BaseUrl                    | TestRail URL address                                                                             | Yes      |\n| UserName                   | TestRail user name                                                                               | Yes      |\n| Password                   | TestRail password                                                                                | Yes      |\n| ArchiveSection             | Deleted folders will be moved to this section                                                    | No       |\n| GherkinSyncToolId          | ID for isolating usage of multiple GherkinSyncTools in one test management system                | Yes      |\n\n#### TestRail Tags\n\n- `@Reference:JIRA-123` tag from a feature file will be parsed and filled as 'JIRA-123' to the reference testrail test\n  case field.\n- `@Priority:High` tag from a feature file will be parsed and filled as 'High' to the priority testrail test case field.\n- `@Automated:UI` tag from a feature file will be parsed and filled as 'UI' to the automation type testrail test case\n  field.\n\n### Azure DevOps settings\n\n| Parameter               | Description                                                                       | Required |\n|-------------------------|-----------------------------------------------------------------------------------| :------: |\n| BaseUrl                 | Azure DevOps URL address                                                          | Yes      |\n| PersonalAccessToken     | Personal access token (PAT)                                                       | Yes      |\n| Project                 | Name of a project                                                                 | Yes      |\n| Area                    | Work item area path                                                               | No       |\n| GherkinSyncToolId       | ID for isolating usage of multiple GherkinSyncTools in one test management system | Yes      |\n| SetThenStepsAsExpected  | Set \"Then step\" as Azure DevOps expected result                                   | No       |\n\n### Allure TestOps settings\n\n| Parameter                | Description                                                                       | Required  |\n|--------------------------|-----------------------------------------------------------------------------------|:---------:|\n| BaseUrl                  | Azure DevOps URL address                                                          |    Yes    |\n| AccessToken              | API access token                                                                  |    Yes    |\n| ProjectId                | ID of a project that will be used for synchronization                             |    Yes    |\n| GherkinSyncToolId        | ID for isolating usage of multiple GherkinSyncTools in one test management system |    Yes    |\n| CustomFields             | Set custom fields                                                                 |    No     |\n| TestLayer                | Set a scenario test layer                                                         |    No     |\n| BackgroundToPrecondition | Put background steps to precondition                                             |    No     |\n\n#### Allure Tags\n\n- `@Status:Draft` a test case status will be changed to \"Draft\".\n- `@Automated` a test case will be marked as automated.\n- `@Component:Frontend` the \"Component\" field will be set as \"Frontend\".\n- `@Layer:UI` set a scenario test layer.\n- `@GST:Web` is a unique identifier that will be populated automatically. Don't remove it.\n\n- Example:\n\n```\n@Automated\n@Status:Draft\n@Component:Auth\n@tc:235\nScenario: Test case example\n  Given prepare sustem\n```\n\n## Architecture\n\n![Architecture](Docs/Architecture.png)\n\n## History\n\nThe project selected a test strategy with a single place for storing autotests and manual tests. The test strategy\nshould reduce the gap between manual and automation tests and make support easier. To achieve this, Gherkin syntax was\nchosen. The process of describing test scenarios in such a way is a behavior-driven development (BDD). The project uses\nthe TestRail test management system. The GherkinSyncTool allows having both manual and automated test scenarios in\nTestRail so that it is possible to create test runs and have an understanding of what is automated and what should be\nexecuted manually.\n\n## Contribution\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\nPlease make sure to update tests as appropriate.\n\n## License\n\nQuantori GherkinSyncTool is released under [Apache License, Version 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantori%2Fgherkinsynctool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquantori%2Fgherkinsynctool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantori%2Fgherkinsynctool/lists"}