// Registration without providing Company Name field
    @Test
    public void emptyCompanyNameTest()
    {
    	 WebElement companyName = driver.findElement(By.name("organization_name"));
         companyName.sendKeys("");
              
         WebElement fullName = driver.findElement(By.name("name"));
         fullName.sendKeys("TestName");
              
         WebElement email = driver.findElement(By.name("email"));
         email.sendKeys("test7.lambdatest@gmail.com");
          
         WebElement password = driver.findElement(By.name("password"));
         password.sendKeys("Test@12345");
  
         WebElement phone = driver.findElement(By.name("phone"));
         phone.sendKeys("9876543210");
             
         WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
         termsOfServices.click();
               
         WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
         signUp.click();         
         
		/*
		 * Set <String> allWindows = driver.getWindowHandles();
		 * 
		 * for(String handle : allWindows) { driver.switchTo().window(handle); }
		 */ 
         
         String expectedURL = "https://accounts.lambdatest.com/email/verify";
         String actualURL = driver.getCurrentUrl();
         Assert.assertEquals(actualURL, expectedURL);
         
         String expectedTitle = "Verify Your Email Address - LambdaTest";
         String actualTitle = driver.getTitle();
         Assert.assertEquals(actualTitle, expectedTitle);
    }
    
    // Registration without providing Name field
    @Test
    public void emptyNameTest()
    {
        WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("Test@123");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("9876543210");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "Please enter your Name";
        
        WebElement exp = driver.findElement(By.xpath("//p[contains(text(),'Please enter your Name')]"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
        
    }
    
    // Registration without providing user email field
    @Test
    public void emptyEmailTest()
    {
    	WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("test");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("Test@123");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("9876543210");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "Please enter your Email Address";
        
        WebElement exp = driver.findElement(By.xpath("//p[contains(text(),'Please enter your Email Address')]"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
    }
    
    // Registration with email id which already have account
    @Test
    public void invalidEmailTest()
    {
        
        WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("TestName");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("Test@123");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("9876543210");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "This email is already registered";
        
        WebElement exp = driver.findElement(By.xpath("//p[@class='error-mass']"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
    }
    
    // Registration without providing password field
    @Test
    public void emptyPasswordTest()
    {
    	WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("TestName");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("9876543210");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "Please enter a desired password";
        
        WebElement exp = driver.findElement(By.xpath("//p[contains(text(),'Please enter a desired password')]"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
    }
    
    // Registration with invalid password
    @Test
    public void inValidPasswordTest()
    {
        WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("TestName");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("T");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("9876543210");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "Password should be at least 8 characters long";
        
        WebElement exp = driver.findElement(By.xpath("//p[contains(text(),'Password should be at least 8 characters long')]"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
    	//Password should be at least 8 characters long
    }
  
    // Registration without providing user phone number field
    @Test
    public void emptyPhoneTest()
    {
    	WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("TestName");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("Test@123");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "The phone field is required.";
        
        WebElement exp = driver.findElement(By.xpath("//p[contains(text(),'The phone field is required.')]"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
    }
    
    // Registration with providing invalid user phone number field
    @Test
    public void inValidPhoneTest()
    {
        WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("TestName");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("Test@123");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("98");
            
        WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedErrorMsg = "Please enter a valid Phone number";
        
        WebElement exp = driver.findElement(By.xpath("//p[contains(text(),'Please enter a valid Phone number')]"));
        String actualErrorMsg = exp.getText();
        		
        Assert.assertEquals(actualErrorMsg, expectedErrorMsg);
        
    	//Please enter a valid Phone number
    }
    
    // Registration without accepting terms and condition tickbox
    @Test
    public void uncheckedTerms()
    {
        WebElement companyName = driver.findElement(By.name("organization_name"));
        companyName.sendKeys("TestCompany");
          
        WebElement fullName = driver.findElement(By.name("name"));
        fullName.sendKeys("TestName");
         
        WebElement email = driver.findElement(By.name("email"));
        email.sendKeys("test@test.com");
                 
        WebElement password = driver.findElement(By.name("password"));
        password.sendKeys("Test@123");
          
        WebElement phone = driver.findElement(By.name("phone"));
        phone.sendKeys("9876543210");
            
        //WebElement termsOfServices = driver.findElement(By.id("terms_of_service"));
        //termsOfServices.click();
         
        WebElement signUp = driver.findElement(By.xpath("//button[contains(@class,'btn sign-up-btn-2 btn-block')]"));
        signUp.click();
        
        String expectedTermsErrorMessage = "To proceed further you must agree to our Terms of Service and Privacy Policy";
        WebElement uncheckedTermCheckbox = driver.findElement(By.xpath("//p[@class='error-mass mt-2']"));
    	String actualTermsErrorMessage = uncheckedTermCheckbox.getText();
        //To proceed further you must agree to our Terms of Service and Privacy Policy
    	
    	Assert.assertEquals(actualTermsErrorMessage, expectedTermsErrorMessage);
    }