Subscribe Join 180,000+ subscribers and receive articles from our blog about software quality, testing, QA and security. Subscribe

How to featch the run id from a milestone name through api

Hi I am new to this testrail and setting up jenkins job to post the test results to testrail run,

We are creating two runs( P0 & P1, P2) with milestone creation. Now i am giving the run id manually every time when I execute the job. I would like to automate this process. So when the release version apks successfully build, the jenkins job generates the version for each release.

Release version number yy.mm.nn

So I will create the same version as Milestone name as yy.mm.nn and create runs in this milestone The test results will be uploaded to these runs. Here i would like to get the id through api instead of entering manually.

How to fetch the run IDs from milestone by giving the name.

Thank you.

Hi @harasai,

following your description I’m not sure how you identify the test run id, if you have multiple runs assigned to a milestone.
But to identify the run(s) of a milestone by the milestone name, I would try it this way:

get_milestones to retrieve all milestones for a project. You need to provide the project id and optionally use a filter for open milestones to reduce the list. Iterate trough the list of milestones and check for the name to retrieve the id - don’t forget, the name isn’t unique.

get_runs to retrive a list of runs by providing the project id and the optional filter for the determined milestone id from above.

Now you have a list of runs and you need to identify the one you want to use - see my first point.

Does this sounds reasonable for you?

Regards
Karsten

1 Like

Thank you Karsten for your response and the suggestion. we have unique name for milestones no issues raised while fetch the id by name.

Here i Have question.

We have a master suite which consists of all the test cases within sections and subsections. For automation purpose, I need to create the test run with all P0 and P1 priority test cases through the api instead of choosing include: all. If any test cases added to suit with these priorities will be added to newly created testrun.

Hi @harasai,
you’re welcome.

That sounds quite easy I think.
Unfortunately you cant create a run with a filter (your P0 and P1) for cases on a suite. Would be a nice and useful extension for the endpoint. So, unfortunately you have to provide the list of case id’s.

You can use get_cases to retrieve all the cases for a suite. If your P0 and P1 is stored in the system field “priority_id” you can provide this as a filter directly, otherwise you have to iterate through all the cases and remove the irrelevant.

This list/array of id’s can be passed to add_run. That’s it.

At least, how I would do so…

Karsten

@harasai did you find a solution?

Think I am sitting here with the same issue. We also create parent milestones for components then
inside those we create new milestone with the version. Problem arises when you start new job for the same version but in a different test environment (dev/test/staging), it creates a new milestone with the same version, but I would rather prefer to get the latest created milestone and add new test run to it.

Structure could be seen as follows:

  • Milestones
    ** Milestone for a component name
    *** Milestone for a release version
    **** Test run in TEST environment linked to those above
    **** Test run in STAGING environment linked to those above

One way it could be achieved - get an array of all milestones using get_milestones then come up with some filter criteria to find the one you’re looking for, but this seems unnecessarily complex

Another way - add a new param field to jenkins job to pass the milestone id… however you’d still have to know it :frowning:

Please share your solution if you found one. Thanks!