public Object execute(StepPhase stepPhase) {
    try {
      logger.info("execute(" + stepPhase + ") for the test case: " + this.generateTestCaseName());
      if (!stepPhase.equals(StepPhase.LOADREACHED)) {
        init(stepPhase);
      }
      if (!this.isLoadTest) {
        this.reports.get(stepPhase).setStartTimestamp();
      }

      if (multiThread) {
        testInParallel(stepPhase);
      } else {
        testSequentially(stepPhase);
      }

      if (!this.isLoadTest) {
        this.reports.get(stepPhase).setStopTimestamp();
      }
    } catch (Exception e) {
      // this is for the initiation mostly
      reporter.processException(reports.get(stepPhase), e, false);
    } finally {
      logger.info("execute(" + stepPhase + ") completed.");
      if (stepPhase.isLastPhase()) {
        if (!jsTest) {
          keepBrowsersAlive();
        }
        terminate(stepPhase);
      } else {
        if (this.isLoadTest) {
          setStepPhaseToRunner(StepPhase.LOADREACHED);
        }
      }
    }
    if (resultObject == null && !this.isLoadTest) {
      resultObject = reports.get(stepPhase).toJson();
      // todo results for load test
    }
    return resultObject;
  }
Execute json object.

@param stepPhase the phase for this Step.

@return the json object
KITE-Framework/src/main/java/org/webrtc/kite/tests/KiteBaseTest.java