[
  {
    "description": "  As a developer\n  I want to see build and deployment statuses on commits\n  So that I know the state of each commit at a glance",
    "elements": [
      {
        "description": "",
        "id": "commit-status-visibility;build-step-reports-pending-status-to-commit",
        "keyword": "Scenario",
        "line": 15,
        "name": "Build step reports pending status to commit",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1645028577
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1947087472
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 648169
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 292104
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 16,
            "name": "a build step starts executing",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:41"
            },
            "result": {
              "status": "passed",
              "duration": 39084240
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 17,
            "name": "the commit shows a pending status with a description of the step",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:46"
            },
            "result": {
              "status": "passed",
              "duration": 21685343
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 573846837
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 53680922
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0001",
            "line": 14
          },
          {
            "name": "@mock",
            "line": 14
          },
          {
            "name": "@real",
            "line": 14
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "commit-status-visibility;build-step-reports-successful-completion-with-a-result-link",
        "keyword": "Scenario",
        "line": 20,
        "name": "Build step reports successful completion with a result link",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1359860614
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1631670510
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 338577
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 234940
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 21,
            "name": "a build step completes successfully and reports its results",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:52"
            },
            "result": {
              "status": "passed",
              "duration": 48459382
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 22,
            "name": "the commit shows a success status with a clickable link to the results",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:57"
            },
            "result": {
              "status": "passed",
              "duration": 29053364
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 561215506
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 53912650
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0001",
            "line": 19
          },
          {
            "name": "@mock",
            "line": 19
          },
          {
            "name": "@real",
            "line": 19
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "commit-status-visibility;build-step-reports-failure-when-tests-do-not-pass",
        "keyword": "Scenario",
        "line": 25,
        "name": "Build step reports failure when tests do not pass",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1363946598
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 2826261617
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 866863
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 359006
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 26,
            "name": "a build step fails",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:63"
            },
            "result": {
              "status": "passed",
              "duration": 171184984
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 27,
            "name": "the commit shows a failure status with a description of what went wrong",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:68"
            },
            "result": {
              "status": "passed",
              "duration": 24215933
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 570851134
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 41720422
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0001",
            "line": 24
          },
          {
            "name": "@mock",
            "line": 24
          },
          {
            "name": "@real",
            "line": 24
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "commit-status-visibility;multiple-build-steps-report-distinct-statuses-on-the-same-commit",
        "keyword": "Scenario",
        "line": 30,
        "name": "Multiple build steps report distinct statuses on the same commit",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1348842760
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1415503096
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 252062
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 148853
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 31,
            "name": "several build steps each report their own status to the same commit",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:74"
            },
            "result": {
              "status": "passed",
              "duration": 768421095
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 32,
            "name": "each status appears under a unique label on the commit",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:82"
            },
            "result": {
              "status": "passed",
              "duration": 475962184
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 574278260
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 46017945
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0001",
            "line": 29
          },
          {
            "name": "@mock",
            "line": 29
          },
          {
            "name": "@real",
            "line": 29
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "commit-status-visibility;deployment-step-reports-status-back-to-the-source-commit",
        "keyword": "Scenario",
        "line": 35,
        "name": "Deployment step reports status back to the source commit",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1336415651
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1390635942
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 229604
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 209167
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 36,
            "name": "a deployment finishes for a commit that originated from another repository",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:95"
            },
            "result": {
              "status": "passed",
              "duration": 39137714
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 37,
            "name": "the source commit shows the deployment status alongside the build status",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:100"
            },
            "result": {
              "status": "passed",
              "duration": 45647176
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 557661748
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 48137262
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0001",
            "line": 34
          },
          {
            "name": "@mock",
            "line": 34
          },
          {
            "name": "@real",
            "line": 34
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "commit-status-visibility;status-reporting-is-interrupted-when-the-build-system-cannot-be-reached",
        "keyword": "Scenario",
        "line": 40,
        "name": "Status reporting is interrupted when the build system cannot be reached",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1341035857
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1419650486
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 256849
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 140268
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 41,
            "name": "a build step tries to report status but the build system is unavailable",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:110"
            },
            "result": {
              "status": "passed",
              "duration": 1220025340
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 42,
            "name": "the pipeline fails with a clear error message",
            "match": {
              "location": "tests/features/step_definitions/commit-status.steps.js:118"
            },
            "result": {
              "status": "passed",
              "duration": 491992
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 574388856
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 46909756
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0001",
            "line": 39
          },
          {
            "name": "@mock",
            "line": 39
          }
        ],
        "type": "scenario"
      }
    ],
    "id": "commit-status-visibility",
    "line": 1,
    "keyword": "Feature",
    "name": "Commit status visibility",
    "tags": [],
    "uri": "tests/features/commit-status.feature"
  },
  {
    "description": "  As a GitOps repository\n  I want to update version references and report results to the caller\n  So that the deployment chain is traceable from source to GitOps commit",
    "elements": [
      {
        "description": "",
        "id": "gitops-update;not-enough-env-vars-—-script-fails,-no-status-set",
        "keyword": "Scenario",
        "line": 11,
        "name": "Not enough env vars — script fails, no status set",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1321376276
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1387676885
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 268586
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 281204
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 12,
            "name": "insufficient environment variables are provided for the GitOps update",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:96"
            },
            "result": {
              "status": "passed",
              "duration": 632777
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 13,
            "name": "the GitOps update script runs",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:119"
            },
            "result": {
              "status": "passed",
              "duration": 26644971
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 14,
            "name": "the script exits with error",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:123"
            },
            "result": {
              "status": "passed",
              "duration": 542191
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 569273561
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 52643070
            }
          }
        ],
        "tags": [
          {
            "name": "@mock",
            "line": 10
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "gitops-update;gitops-job-fails-—-no-status-set-(sha-not-yet-known)",
        "keyword": "Scenario",
        "line": 17,
        "name": "GitOps job fails — no status set (SHA not yet known)",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1337380952
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1389269815
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 255145
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 213827
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 18,
            "name": "the GitOps repository clone will fail",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:100"
            },
            "result": {
              "status": "passed",
              "duration": 549302
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 19,
            "name": "the GitOps update script runs",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:119"
            },
            "result": {
              "status": "passed",
              "duration": 54570672
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 20,
            "name": "the script exits with error",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:123"
            },
            "result": {
              "status": "passed",
              "duration": 285590
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 580181040
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 58910707
            }
          }
        ],
        "tags": [
          {
            "name": "@mock",
            "line": 16
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "gitops-update;everything-succeeds-—-gitops-repo-gets-success-status-with-link-to-caller",
        "keyword": "Scenario",
        "line": 23,
        "name": "Everything succeeds — GitOps repo gets success status with link to caller",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1331770603
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1389442274
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 300026
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 222307
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 24,
            "name": "a valid GitOps update dispatch",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:104"
            },
            "result": {
              "status": "passed",
              "duration": 384842
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 25,
            "name": "the GitOps update script runs",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:119"
            },
            "result": {
              "status": "passed",
              "duration": 1485108561
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 26,
            "name": "the script exits successfully",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:127"
            },
            "result": {
              "status": "passed",
              "duration": 462223
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 27,
            "name": "the GitOps repo commit shows a success status with a link to the caller commit",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:131"
            },
            "result": {
              "status": "passed",
              "duration": 38151184
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 579466530
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 57866416
            }
          }
        ],
        "tags": [
          {
            "name": "@mock",
            "line": 22
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "gitops-update;gitops-push-fails-—-gitops-repo-gets-failure-status",
        "keyword": "Scenario",
        "line": 30,
        "name": "GitOps push fails — GitOps repo gets failure status",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1323064671
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1410355518
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 229396
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 161053
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 31,
            "name": "the GitOps repo push will fail after the version is committed",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:108"
            },
            "result": {
              "status": "passed",
              "duration": 514451
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 32,
            "name": "the GitOps update script runs",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:119"
            },
            "result": {
              "status": "passed",
              "duration": 173402454
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 33,
            "name": "the script exits with error",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:123"
            },
            "result": {
              "status": "passed",
              "duration": 258421
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 34,
            "name": "the GitOps repo commit shows a failure status linking to the caller commit",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:143"
            },
            "result": {
              "status": "passed",
              "duration": 50809381
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 584750790
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 62253960
            }
          }
        ],
        "tags": [
          {
            "name": "@mock",
            "line": 29
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "gitops-update;no-changes-—-gitops-repo-gets-\"no-change\"-status",
        "keyword": "Scenario",
        "line": 37,
        "name": "No changes — GitOps repo gets \"no change\" status",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1344480345
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1406668201
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a project repository exists in Gitea",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:29"
            },
            "result": {
              "status": "passed",
              "duration": 308036
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "a commit has been pushed to the repository",
            "match": {
              "location": "tests/features/step_definitions/common.steps.js:32"
            },
            "result": {
              "status": "passed",
              "duration": 253477
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 38,
            "name": "the version file already has the target version",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:112"
            },
            "result": {
              "status": "passed",
              "duration": 528614
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 39,
            "name": "the GitOps update script runs",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:119"
            },
            "result": {
              "status": "passed",
              "duration": 1410747418
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 40,
            "name": "the script exits successfully",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:127"
            },
            "result": {
              "status": "passed",
              "duration": 314218
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 41,
            "name": "the GitOps repo commit shows a \"no change\" status",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:155"
            },
            "result": {
              "status": "passed",
              "duration": 37092326
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 42,
            "name": "no Git commit or push was performed",
            "match": {
              "location": "tests/features/step_definitions/gitops-update.steps.js:167"
            },
            "result": {
              "status": "passed",
              "duration": 10122971
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 588800903
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 76528961
            }
          }
        ],
        "tags": [
          {
            "name": "@mock",
            "line": 36
          }
        ],
        "type": "scenario"
      }
    ],
    "id": "gitops-update",
    "line": 1,
    "keyword": "Feature",
    "name": "GitOps update",
    "tags": [],
    "uri": "tests/features/gitops-update.feature"
  },
  {
    "description": "  As a test engineer\n  I want integration and end-to-end tests to run automatically after deployment\n  So that I can verify the deployed version works correctly",
    "elements": [
      {
        "description": "",
        "id": "test-execution;dispatch-a-test-workflow-and-wait-for-its-completion",
        "keyword": "Scenario",
        "line": 15,
        "name": "Dispatch a test workflow and wait for its completion",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1339583661
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1355492656
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a deployment has completed in the target environment",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:60"
            },
            "result": {
              "status": "passed",
              "duration": 503799
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "the test project repository exists with test definitions",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:63"
            },
            "result": {
              "status": "passed",
              "duration": 243821
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 16,
            "name": "a test workflow is dispatched to a test project",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:66"
            },
            "result": {
              "status": "passed",
              "duration": 1147769804
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 17,
            "name": "the pipeline waits until the test workflow finishes",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:76"
            },
            "result": {
              "status": "passed",
              "duration": 575210
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 18,
            "name": "the pipeline continues only after receiving a success result",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:80"
            },
            "result": {
              "status": "passed",
              "duration": 365882
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 581879662
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 60448352
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0002",
            "line": 14
          },
          {
            "name": "@mock",
            "line": 14
          },
          {
            "name": "@real",
            "line": 14
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "test-execution;dispatch-fails-when-the-dispatched-test-workflow-fails",
        "keyword": "Scenario",
        "line": 21,
        "name": "Dispatch fails when the dispatched test workflow fails",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1346696600
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1681806342
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a deployment has completed in the target environment",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:60"
            },
            "result": {
              "status": "passed",
              "duration": 319609
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "the test project repository exists with test definitions",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:63"
            },
            "result": {
              "status": "passed",
              "duration": 156820
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 22,
            "name": "a test workflow is dispatched and the tests fail",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:84"
            },
            "result": {
              "status": "passed",
              "duration": 1048889222
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 23,
            "name": "the calling pipeline reports failure",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:94"
            },
            "result": {
              "status": "passed",
              "duration": 757711
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 569066205
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 52768409
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0002",
            "line": 20
          },
          {
            "name": "@mock",
            "line": 20
          },
          {
            "name": "@real",
            "line": 20
          }
        ],
        "type": "scenario"
      },
      {
        "description": "",
        "id": "test-execution;dispatch-times-out-when-the-test-workflow-takes-too-long",
        "keyword": "Scenario",
        "line": 26,
        "name": "Dispatch times out when the test workflow takes too long",
        "steps": [
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1325351198
            }
          },
          {
            "keyword": "Before",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 1428865481
            }
          },
          {
            "arguments": [],
            "keyword": "Given ",
            "line": 7,
            "name": "a deployment has completed in the target environment",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:60"
            },
            "result": {
              "status": "passed",
              "duration": 184593
            }
          },
          {
            "arguments": [],
            "keyword": "And ",
            "line": 8,
            "name": "the test project repository exists with test definitions",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:63"
            },
            "result": {
              "status": "passed",
              "duration": 92360
            }
          },
          {
            "arguments": [],
            "keyword": "When ",
            "line": 27,
            "name": "a test workflow is dispatched but does not finish within the allowed time",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:98"
            },
            "result": {
              "status": "passed",
              "duration": 3187735055
            }
          },
          {
            "arguments": [],
            "keyword": "Then ",
            "line": 28,
            "name": "the calling pipeline reports a timeout error",
            "match": {
              "location": "tests/features/step_definitions/test-execution.steps.js:112"
            },
            "result": {
              "status": "passed",
              "duration": 687463
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 578948601
            }
          },
          {
            "keyword": "After",
            "hidden": true,
            "result": {
              "status": "passed",
              "duration": 53413623
            }
          }
        ],
        "tags": [
          {
            "name": "@ticket-0002",
            "line": 25
          },
          {
            "name": "@mock",
            "line": 25
          }
        ],
        "type": "scenario"
      }
    ],
    "id": "test-execution",
    "line": 1,
    "keyword": "Feature",
    "name": "Test execution",
    "tags": [],
    "uri": "tests/features/test-execution.feature"
  }
]