{"id":13589191,"url":"https://github.com/MarketSquare/robotframework-camunda","last_synced_at":"2025-04-08T09:32:13.989Z","repository":{"id":42412621,"uuid":"349388026","full_name":"MarketSquare/robotframework-camunda","owner":"MarketSquare","description":"Library for testing Camunda 7 instances and workflows","archived":false,"fork":false,"pushed_at":"2024-09-02T09:28:51.000Z","size":345,"stargazers_count":19,"open_issues_count":10,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-29T22:09:14.318Z","etag":null,"topics":["camunda","camunda-bpm-platform","camunda-external-task","camunda7","opensource","python","robotframework"],"latest_commit_sha":null,"homepage":"https://robotframework-camunda-demos.gitlab.io/robotframework-camunda-mirror/latest/keywords/camundalibrary/","language":"Python","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/MarketSquare.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-03-19T10:42:51.000Z","updated_at":"2024-09-02T09:28:57.000Z","dependencies_parsed_at":"2024-06-08T03:46:43.349Z","dependency_job_id":"2b80f469-4fb8-4b82-ac18-4e9e8f34a7d8","html_url":"https://github.com/MarketSquare/robotframework-camunda","commit_stats":{"total_commits":272,"total_committers":6,"mean_commits":"45.333333333333336","dds":0.6323529411764706,"last_synced_commit":"eee84b143c55ad206b580aafe7a8912ef36c601e"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-camunda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-camunda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-camunda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarketSquare%2Frobotframework-camunda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarketSquare","download_url":"https://codeload.github.com/MarketSquare/robotframework-camunda/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223313950,"owners_count":17124965,"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":["camunda","camunda-bpm-platform","camunda-external-task","camunda7","opensource","python","robotframework"],"created_at":"2024-08-01T16:00:24.998Z","updated_at":"2025-04-08T09:32:13.982Z","avatar_url":"https://github.com/MarketSquare.png","language":"Python","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"[![PyPI status](https://img.shields.io/pypi/status/robotframework-camunda.svg)](https://pypi.python.org/pypi/robotframework-camunda/) [![pipeline status](https://gitlab.com/robotframework-camunda-demos/robotframework-camunda-mirror/badges/master/pipeline.svg)](https://gitlab.com/robotframework-camunda-demos/robotframework-camunda-mirror/-/commits/master) [![PyPi license](https://badgen.net/pypi/license/robotframework-camunda/)](https://pypi.com/project/robotframework-camunda/) [![PyPi version](https://badgen.net/pypi/v/robotframework-camunda/)](https://pypi.org/project/robotframework-camunda) [![PyPI pyversions](https://img.shields.io/pypi/pyversions/robotframework-camunda.svg)](https://pypi.python.org/pypi/robotframework-camunda/) [![PyPI download month](https://img.shields.io/pypi/dm/robotframework-camunda.svg)](https://pypi.python.org/pypi/robotframework-camunda/) \n\n# Camunda 7 vs Camunda 8\nSince it requested from time o time: No, this library won't support Camunda 8. C8 and it's API are completely different and C8 API has had backwards incompatible changes due to its relatively low maturity. This library supports to when:\n- You migrate to Camunda 7 based workflow engine and you want to validate your processes are still working.\n\nIf you need to test C8, it is recommended to build a separate library.\n\n# Robot Framework Camunda\n\nThis library provides keywords for accessing camunda workflow engine. Complete REST API reference of camunda \ncan be found [here](https://docs.camunda.org/manual/7.14/reference/rest/).\n\n**Please review [issue board](https://github.com/MarketSquare/robotframework-camunda/issues) for \nknown issues or report one yourself. You are invited to contribute pull requests.**\n\n| Supported | Tested |\n| :----- | :----- |\n| Python \u003e= 3.9 | 3.9, 3.10, 3.11, 3.12 |\n| Camunda 7 \u003e= 7.20 | 7.20 |\n\n## Documentation\n\nKeyword documentation is provided [here](https://robotframework-camunda-demos.gitlab.io/robotframework-camunda-mirror/latest/keywords/camundalibrary)\n\n## Installation\n\nThe library is published on [pypi.org](https://pypi.org/project/robotframework-camunda/) and can be installed with pip:\n\n```shell\npip install robotframework-camunda\n```\n\n## Running robotframework-camunda\nThe `tests` folder has example robot tests for keywords already implemented. Those tests assume you already have an \ninstance of camunda running.\n\nEasiest way of running camunda is to launch with with docker:\n```shell\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:run-latest\n```\n\n### Deploy process definition\n\n```robot\n*** Settings ***\nLibrary    CamundaLibrary    ${CAMUNDA_HOST}\n\n*** Variables ***\n${CAMUNDA_HOST}    http://localhost:8080\n${MODEL_FOLDER}    ${CURDIR}/../models\n\n*** Test Cases ***\nTest deployment of a single model in 1 deployment\n    ${response}    deploy    ${MODEL_FOLDER}/demo_for_robot.bpmn\n\nTest deployment of several models in 1 deployment\n    ${response}    deploy    ${MODEL_FOLDER}/demo_for_robot.bpmn    ${MODEL_FOLDER}/demo_embedded_form.html\n```\n\n### Starting a process instance\n\n```robot\n*** Settings ***\nLibrary    CamundaLibrary    ${CAMUNDA_HOST}\n\n*** Variables ***\n${CAMUNDA_HOST}    http://localhost:8080\n\n*** Test Cases ***\nTest starting process\n    #GIVEN\n    ${process_definition_key}    Set Variable    demo_for_robot\n\n    # WHEN\n    ${process_instance}    start process    ${process_definition_key}\n```\n\n### Execute Task\n\"Executing task\" bascialy means, you execute a robot task that *fetches* a workload from camunda, processes it and \nreturns its workload back to camunda during *completion*. Main keywords involved are:\n1. `CamundaLibrary.Fetch workload`\n1. `CamundaLibrary.Complete Task`\n\n```robot\n*** Settings ***\nLibrary    CamundaLibrary    ${CAMUNDA_HOST}\nLibrary    Collections\n\n*** Variables ***\n${CAMUNDA_HOST}    http://localhost:8000\n${existing_topic}    process_demo_element\n\n*** Test Cases ***\nProcess workload\n    ${variables}    fetch workload   topic=${existing_topic}\n    ${recent_task}    Get fetch response\n    log    Recent task:\\t${recent_task}\n\n    Pass Execution If    not ${recent_task}    No workload fetched from Camunda\n \n    # do some processing\n    \n    # create result and return workload to Camunda\n    ${my_result}    Create Dictionary    lastname=Stahl\n    complete task   ${my_result}\n```\n\n### Authentication\n\n**Prerequisite: CamundaLibrary \u003e= 2.0**\n\nIf your Camunda Platform REST API requires authentication (it should at least in production!) then you do not need to pass the host url to CamundaLibrary during intialization. You require the `Set Camunda Configuration` keyword. The keyword expects a dictionary with host url and (optional) either username with password or api key with optional api key prefix. See the following example.\n\n```robot\n*** Settings ***\nLibrary    CamundaLibrary\n\n\n*** Test Cases ***\nDemonstrate basic auth\n    ${camunda_config}    Create Dictionary    host=http://localhost:8080    username=markus    password=%{ENV_PASSWORD}\n    Set Camunda Configuration    ${camunda_config}\n    ${deployments}    Get deployments    #uses basic auth now implictly\n\nDemonstrate Api Key\n    ${camunda_config}    Create Dictionary    host=http://localhost:8080    api_key=%{ENV_API_KEY}   api_key_prefix=Bearer\n    Set Camunda Configuration    ${camunda_config}\n    ${deployments}    Get deployments    #uses api key implicitly\n```\nIf you would pass in username+password *and* and API key, the API key will always be chosen over the username+password. So better leave it out for not confusing everybody.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarketSquare%2Frobotframework-camunda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMarketSquare%2Frobotframework-camunda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarketSquare%2Frobotframework-camunda/lists"}