[
    {
        "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": 196176262
                        }
                    },
                    {
                        "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": 8480063
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 201",
                        "line": 7,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 258730
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should contain a field \"run_id\"",
                        "line": 8,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 169529
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should contain a field \"phase\"",
                        "line": 9,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 234303
                        }
                    }
                ]
            },
            {
                "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": 171056995
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "a run exists",
                        "line": 13,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 874741
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs/{run_id}",
                        "line": 14,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 6725048
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 15,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 283226
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should contain the run status",
                        "line": 16,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 178070
                        }
                    }
                ]
            },
            {
                "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": 149315531
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 401",
                        "line": 20,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 302728
                        }
                    }
                ]
            },
            {
                "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": 155462149
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I POST /api/v1/runs with empty manifest",
                        "line": 24,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 517601
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 422",
                        "line": 25,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 212208
                        }
                    }
                ]
            },
            {
                "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": 201242511
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs/99999999-9999-9999-9999-999999999999",
                        "line": 29,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 7637957
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 404",
                        "line": 30,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 261005
                        }
                    }
                ]
            },
            {
                "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": 221420414
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 34,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 279911
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs",
                        "line": 35,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 15073374
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 36,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 303563
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 37,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 600098
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.limit\" equal to 50",
                        "line": 38,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 362287
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.offset\" equal to 0",
                        "line": 39,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 284829
                        }
                    }
                ]
            },
            {
                "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": 191366935
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 43,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 396090
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?limit=2\u0026offset=1",
                        "line": 44,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 12373662
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 45,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 345155
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 46,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 947314
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.limit\" equal to 2",
                        "line": 47,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 3694117
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.offset\" equal to 1",
                        "line": 48,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 378871
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.returned\" field",
                        "line": 49,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 288306
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"meta.has_more\" field",
                        "line": 50,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 380468
                        }
                    }
                ]
            },
            {
                "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": 489164281
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 54,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 254859
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?phase=pending",
                        "line": 55,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 15785697
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 56,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 237333
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 57,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 113403
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have phase \"pending\"",
                        "line": 58,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 298000
                        }
                    }
                ]
            },
            {
                "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": 3379617774
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 62,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 321753
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?phase=pending,running",
                        "line": 63,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 6853256
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 64,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 230558
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 65,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 333007
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have phase \"pending\" or \"running\"",
                        "line": 66,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 256983
                        }
                    }
                ]
            },
            {
                "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": 271853075
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 70,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 305231
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?manifest=doc-quality",
                        "line": 71,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 7705127
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 72,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 337266
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 73,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 397730
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have manifest \"doc-quality\"",
                        "line": 74,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 253288
                        }
                    }
                ]
            },
            {
                "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": 188180688
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 78,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 309198
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?source=cli",
                        "line": 79,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 5879020
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 80,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 218697
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 81,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 249171
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "all returned runs should have source \"cli\"",
                        "line": 82,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 291553
                        }
                    }
                ]
            },
            {
                "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": 143812501
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 86,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 283229
                        }
                    },
                    {
                        "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": 6978059
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 88,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 349831
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 89,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 346394
                        }
                    }
                ]
            },
            {
                "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": 150453046
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 93,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 295735
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?limit=5",
                        "line": 94,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 15165472
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 95,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 439432
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 96,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 300362
                        }
                    },
                    {
                        "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": 491819
                        }
                    }
                ]
            },
            {
                "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": 195640991
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 101,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 203171
                        }
                    },
                    {
                        "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": 9924395
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 103,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 248117
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 104,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 229847
                        }
                    },
                    {
                        "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": 464708
                        }
                    }
                ]
            },
            {
                "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": 180605934
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "there are 3 seed runs in the database",
                        "line": 109,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 315638
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I GET /api/v1/runs?limit=2",
                        "line": 110,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 4952148
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 111,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 145735
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have \"links.next\" field",
                        "line": 112,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 240867
                        }
                    },
                    {
                        "keyword": "When ",
                        "name": "I follow the cursor from \"links.next\"",
                        "line": 113,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 4162482
                        }
                    },
                    {
                        "keyword": "Then ",
                        "name": "the response status should be 200",
                        "line": 114,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 231612
                        }
                    },
                    {
                        "keyword": "And ",
                        "name": "the response should have a \"data\" array",
                        "line": 115,
                        "match": {
                            "location": "\u003cautogenerated\u003e:1"
                        },
                        "result": {
                            "status": "passed",
                            "duration": 331015
                        }
                    },
                    {
                        "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": 278727
                        }
                    }
                ]
            }
        ]
    }
]
