@DataProvider
 public String[][] getXlsData() throws Exception {
   String[][] data = null;
   ExcelUtils.setExcelFile(
       Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet);
   data = ExcelUtils.getXlsRowData(Constant.Total_Col_MetLifeGSSP);
   return data;
 }
  @Test(dataProvider = "getXlsData")
  public void testUserRegistration(
      String SrNo,
      String TestCaseName,
      String FirstName,
      String LastName,
      String CitizenId,
      String DOB,
      String ZipCode,
      String Email,
      String ConfirmEmail,
      String MobileNumber,
      String NeedToExecute,
      String Result,
      String Comments)
      throws Exception {

    try {

      flag = false;
      // Fatching Test Data from the Test Data file and store into the array [] object.
      Log.info("Fatching Test Data from the Test Data file and store into the array [] object.");
      rowIndex = Integer.parseInt(SrNo);
      rowData = ExcelUtils.getXlsRowData(rowIndex, Constant.Total_Col_MetLifeGSSP);
      // Checking if test case need to be executed or not
      Log.info(
          "Value of rowData[Constant.Col_MetLifeGSSP_NeedToExecute] -->"
              + rowData[Constant.Col_MetLifeGSSP_NeedToExecute]
              + "--"
              + NeedToExecute);
      System.out.println("No -->" + SrNo);
      if (NeedToExecute.equalsIgnoreCase("Yes")) {
        // Init the Webdriver with  Opening the browser and URL
        Log.info("Webdriver init and Opening the test application");
        driver = Utils.OpenBrowser(Constant.appName);
        Log.info("Webdriver initilazied and test application open");
        // Developing the Test Step into the Modules and based on the result we verify that the step
        // is pass or not.
        // TestBase.Assert() Function is used for assertion and this will stop the execution if
        // assert is fail.
        // TestBase.verifyAssert() Function is used for assertion verification but it will not stop
        // the execution and after capturing the error it continue the execution.

        // If function() return true then the execution will move to next step of the test case step
        // otherwise it fail and stop the execution.

        // Test Step 1
        Log.info("Execution Test Step -->openRegistrationLink");
        flag = testStep.openRegistrationLink(driver, rowIndex, sTestCaseName, rowData);
        Log.info("Test Step openRegistrationLink result -- >" + flag);
        TestBase.verifyTrue(flag);

        // Test Step 2
        if (flag) {
          Log.info("Execution Test Step -->registrationCustomer");
          flag = testStep.registrationCustomer(driver, rowIndex, sTestCaseName, rowData);
          Log.info("Test Step registrationCustomer result -- >" + flag);
          TestBase.verifyTrue(flag);
        }
        // Test Step 3
        if (flag) {
          Log.info("Execution Test Step -->verifyCaptcha");
          flag = testStep.verifyCaptcha(driver, rowIndex, sTestCaseName, rowData);
          Log.info("Test Step verifyCaptcha result -- >" + flag);
          TestBase.verifyTrue(flag);
        }
        // Test Step 3
        if (flag) {
          Log.info("Execution Test Step -->verifyRegistration");
          flag = testStep.verifyRegistration(driver, rowIndex, sTestCaseName, rowData);
          Log.info("Test Step verifyRegistration result -- >" + flag);
          TestBase.verifyTrue(flag);
        }

        Log.info("Final Result of the test case -->" + sTestCaseName + "-->" + flag);
        // Printing the result of the test case in the excel Result Column and TestNG report.

        if (flag) {
          ExcelUtils.setExcelFile(
              Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet);
          ExcelUtils.setCellData(
              "Pass",
              rowIndex,
              Constant.Col_MetLifeGSSP_Result,
              Constant.Path_TestData + Constant.File_TestData,
              Constant.File_TestappNameSheet);
          ExcelUtils.setCellData(
              "Test Case executed successfully.",
              rowIndex,
              Constant.Col_MetLifeGSSP_Comments,
              Constant.Path_TestData + Constant.File_TestData,
              Constant.File_TestappNameSheet);
          Reporter.log(sTestCaseName + " Test Case Pass");
        } else {
          throw new Exception("Test Case Failed because of Verification");
        }
      }
      // If Test Case need not to be executed.
      else {
        Log.info("Test Case need not to be executed");
        // Writing comment on the test data file why this case is skipped from the execution.
        ExcelUtils.setExcelFile(
            Constant.Path_TestData + Constant.File_TestData, Constant.File_TestappNameSheet);
        ExcelUtils.setCellData(
            "Skip",
            rowIndex,
            Constant.Col_MetLifeGSSP_Result,
            Constant.Path_TestData + Constant.File_TestData,
            Constant.File_TestappNameSheet);
        ExcelUtils.setCellData(
            "Need To Execute Request is selected as No",
            rowIndex,
            Constant.Col_MetLifeGSSP_Comments,
            Constant.Path_TestData + Constant.File_TestData,
            Constant.File_TestappNameSheet);
        throw new SkipException("Skiping This Test as 'Need To Execute' Request is selected as No");
      }

    } catch (SkipException e) {
      throw (e);
    }
  }