Skip to content

[Bug][Testmo] Runs, milestones and automation runs: only the first 100 are collected #9332

Open

Description

@ShivamSharma43

Search before asking

  • I had searched in the issues and found no similar issues.

What happened

The Testmo collectRuns, collectMilestones and collectAutomationRuns subtasks only collect the first page (100 items) of a project.

They all use GetTotalPagesFromResponse in backend/plugins/testmo/tasks/shared.go, which reads the page count from meta.total_pages:

body := &models.TestmoResponse{} // data, links, meta, errors
...
if meta, ok := body.Meta.(map[string]interface{}); ok {
    if totalPages, exists := meta["total_pages"]; exists { ... }
}
return 1, nil

Testmo list responses have no meta object. The pagination fields are at the top level of the body: the Testmo REST API spec (RunPage, MilestonePage, AutomationRunPage) lists page, prev_page, next_page, last_page, per_page, total and result. The plugin's own remote scope API already reads this format (ProjectPage in backend/plugins/testmo/api/remote_api.go follows next_page). So meta is always nil, the function always returns 1, and the ApiCollector never requests page 2.

What do you expect to happen

All runs, milestones and automation runs of the project are collected, i.e. the collectors fetch pages 2..last_page.

How to reproduce

  1. Add a Testmo project with more than 100 runs (or milestones / automation runs) as a data scope.
  2. Run the blueprint.
  3. _raw_testmo_runs (and _tool_testmo_runs) hold only 100 rows for the project, while the project's run_count is higher.

A unit test that passes {"page": 1, "next_page": 2, "last_page": 3, "per_page": 100, "total": 250, "result": [...]} to GetTotalPagesFromResponse gets 1 instead of 3.

Anything else

Proposed fix (I have a PR ready): read the top-level last_page in GetTotalPagesFromResponse (1 when it is null), plus a unit test.

Version

main

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions