function runTestSuites(testSuites, createTestCaseCallback) {
  testSuites.forEach((testSuite) => {
    let suiteCall = testSuite.skip ? suite.skip : suite;
    suiteCall = testSuite.only ? suite.only : suiteCall;
    suiteCall(testSuite.title, function () {
      if (testSuite.testSuites && testSuite.testSuites.length) {
        runTestSuites(testSuite.testSuites, createTestCaseCallback);
      }
      if (testSuite.testCases && testSuite.testCases.length) {
        runTestCases(testSuite.testCases, createTestCaseCallback(testSuite));
      }
    });
  });
}
Runs provided test suite.
@template {TestCase} T
@template {TestSuite<T, U>} U
@param {Array<!U>} testSuites The test suites to run.
@param {function(!U):(function(T):!Function)
   } createTestCaseCallback Creates test case callback using given test
   suite.