package LocalGrid;


import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v85.network.Network;
import org.openqa.selenium.devtools.v85.network.model.Headers;
import org.testng.annotations.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;


import java.util.*;


public class TestHandlingLoginPopUpUsingDevTools{


   @Test
   public void testHandlingLoginPopUpUsingDevTools()
   {  
       ChromeDriver driver = new ChromeDriver(); 
              
       // Get the devtools from the running driver and create a session
       System.out.println("Creating Chrome DevTools session");
       DevTools devTools = driver.getDevTools();
       devTools.createSession();


       // Enable the Network domain of devtools
       devTools.send(Network.enable(Optional.<Integer>empty(), Optional.<Integer>empty(), Optional.<Integer>empty()));


       // Encoding the username and password using Base64
       String auth = "admin:admin";
       String encodeToString = Base64.getEncoder().encodeToString(auth.getBytes());
       System.out.println("Encoded String: " + encodeToString);


       // Pass the network header as Authorization : Basic <encoded String>
       Map<String, Object> headers = new HashMap<String, Object>();
       headers.put("Authorization", "Basic " + encodeToString);
       devTools.send(Network.setExtraHTTPHeaders(new Headers(headers)));
      
       //Navigate to the website
       driver.get("https://the-internet.herokuapp.com/basic_auth");
      
       //verify the loaded page
       String title = driver.getTitle();
       System.out.println("The page title is : " + title);


       String text = driver.findElement(By.tagName("p")).getText();
       System.out.println("The text present in page is : " + text);
  
       driver.quit();
   }
}