[
    {
        "uri": "features/runs.feature",
        "id": "pipeline-runs",
        "keyword": "Feature",
        "name": "Pipeline runs",
        "description": "  API for creating and polling pipeline runs.",
        "line": 1,
        "elements": [
            {
                "id": "pipeline-runs;create-a-run-successfully",
                "keyword": "Scenario",
                "name": "Create a run successfully",
                "description": "",
                "line": 4,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 5,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 198979530
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I POST /api/v1/runs with manifest \"doc-quality\" and source \"cli\"",
                        "line": 6,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 7619578
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 201",
                        "line": 7,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 285667
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should contain a field \"run_id\"",
                        "line": 8,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 225359
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should contain a field \"phase\"",
                        "line": 9,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 227279
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;poll-a-run-status",
                "keyword": "Scenario",
                "name": "Poll a run status",
                "description": "",
                "line": 11,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 12,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 158808302
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "a run exists",
                        "line": 13,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 276004
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs/{run_id}",
                        "line": 14,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 6530745
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 15,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 353938
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should contain the run status",
                        "line": 16,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 1462330
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;reject-unauthenticated-request",
                "keyword": "Scenario",
                "name": "Reject unauthenticated request",
                "description": "",
                "line": 18,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "When ",
                        "name": "I POST /api/v1/runs with no API token",
                        "line": 19,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 147224916
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 401",
                        "line": 20,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 258724
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;reject-invalid-manifest",
                "keyword": "Scenario",
                "name": "Reject invalid manifest",
                "description": "",
                "line": 22,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 23,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 154700730
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I POST /api/v1/runs with empty manifest",
                        "line": 24,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 527454
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 422",
                        "line": 25,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 168025
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;return-404-for-unknown-run",
                "keyword": "Scenario",
                "name": "Return 404 for unknown run",
                "description": "",
                "line": 27,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 28,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 158217318
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs/99999999-9999-9999-9999-999999999999",
                        "line": 29,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 5420608
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 404",
                        "line": 30,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 403168
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;list-runs-with-default-pagination",
                "keyword": "Scenario",
                "name": "List runs with default pagination",
                "description": "",
                "line": 32,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 33,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 155079914
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 34,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 386806
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs",
                        "line": 35,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 15367771
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 36,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 460558
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 37,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 398870
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.limit\" equal to 50",
                        "line": 38,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 300938
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.offset\" equal to 0",
                        "line": 39,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 318517
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;list-runs-with-custom-limit-and-offset",
                "keyword": "Scenario",
                "name": "List runs with custom limit and offset",
                "description": "",
                "line": 41,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 42,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 155551778
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 43,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 306223
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?limit=2\u0026offset=1",
                        "line": 44,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 6629387
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 45,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 282300
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 46,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 299453
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.limit\" equal to 2",
                        "line": 47,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 316527
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.offset\" equal to 1",
                        "line": 48,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 300438
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.returned\" field",
                        "line": 49,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 289802
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.has_more\" field",
                        "line": 50,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 270696
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;filter-runs-by-phase",
                "keyword": "Scenario",
                "name": "Filter runs by phase",
                "description": "",
                "line": 52,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 53,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 151310066
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 54,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 425967
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?phase=pending",
                        "line": 55,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 12503941
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 56,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 372694
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 57,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 549814
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have phase \"pending\"",
                        "line": 58,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 242296
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;filter-runs-by-multiple-phases",
                "keyword": "Scenario",
                "name": "Filter runs by multiple phases",
                "description": "",
                "line": 60,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 61,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 149347720
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 62,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 431354
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?phase=pending,running",
                        "line": 63,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 6799265
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 64,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 295100
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 65,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 327947
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have phase \"pending\" or \"running\"",
                        "line": 66,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 197670
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;filter-runs-by-manifest",
                "keyword": "Scenario",
                "name": "Filter runs by manifest",
                "description": "",
                "line": 68,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 69,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 142698790
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 70,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 353315
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?manifest=doc-quality",
                        "line": 71,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 6644818
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 72,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 245951
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 73,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 197634
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have manifest \"doc-quality\"",
                        "line": 74,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 220036
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;filter-runs-by-source",
                "keyword": "Scenario",
                "name": "Filter runs by source",
                "description": "",
                "line": 76,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 77,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 142573338
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 78,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 934293
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?source=cli",
                        "line": 79,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 9871069
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 80,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 470949
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 81,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 196655
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have source \"cli\"",
                        "line": 82,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 329513
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;filter-runs-by-multiple-criteria",
                "keyword": "Scenario",
                "name": "Filter runs by multiple criteria",
                "description": "",
                "line": 84,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 85,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 216667183
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 86,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 283959
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?phase=pending\u0026manifest=doc-quality\u0026source=cli",
                        "line": 87,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 22757817
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 88,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 377759
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 89,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 2614338
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;sort-runs-by-created_at-descending-(default)",
                "keyword": "Scenario",
                "name": "Sort runs by created_at descending (default)",
                "description": "",
                "line": 91,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 92,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 249518234
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 93,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 349957
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?limit=5",
                        "line": 94,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 8860716
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 95,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 364186
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 96,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 359741
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the runs should be sorted by \"created_at\" in descending order",
                        "line": 97,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 374038
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;sort-runs-by-updated_at-ascending",
                "keyword": "Scenario",
                "name": "Sort runs by updated_at ascending",
                "description": "",
                "line": 99,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 100,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 197367384
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 101,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 342707
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?sort=updated_at\u0026order=asc\u0026limit=5",
                        "line": 102,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 8536920
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 103,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 429718
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 104,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 342873
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the runs should be sorted by \"updated_at\" in ascending order",
                        "line": 105,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 397252
                        }
                    }
                ]
            },
            {
                "id": "pipeline-runs;navigate-using-cursor-pagination",
                "keyword": "Scenario",
                "name": "Navigate using cursor pagination",
                "description": "",
                "line": 107,
                "type": "scenario",
                "steps": [
                    {
                        "keyword": "Given ",
                        "name": "a valid API token \"test-token-001\"",
                        "line": 108,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 323346175
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 109,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 383040
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?limit=2",
                        "line": 110,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 7997989
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 111,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 314449
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"links.next\" field",
                        "line": 112,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 367133
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I follow the cursor from \"links.next\"",
                        "line": 113,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 5620346
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 114,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 376969
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 115,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 368537
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the returned runs should not include any from the previous page",
                        "line": 116,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 316091
                        }
                    }
                ]
            }
        ]
    }
]
