'Unable to understand the below error, please assist

Unable to understand the below error, please assist with the code. All the code is indented properly. I tried updated all the dependancies as well, however the error doesnt resolve.

Code:

**Base Class:** Where the drivers are setup
package baseClass;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;

import io.github.bonigarcia.wdm.WebDriverManager;

public class BaseClass{


    static WebDriver driver;

    public void getWebDriver(String browserName) throws InterruptedException
    {

        if(browserName.equalsIgnoreCase("chrome"))                  //To use Chrome driver
        {
            WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
            driver = new ChromeDriver(options);
        }
        else if(browserName.equalsIgnoreCase("firefox"))           //To use firefox Driver
        {
            WebDriverManager.firefoxdriver().setup();
            FirefoxOptions options = new FirefoxOptions();
            driver=new FirefoxDriver(options);
        }
        else if(browserName.equalsIgnoreCase("Edge"))            //To use Edge Driver
        {
            WebDriverManager.edgedriver().setup();
            EdgeOptions options = new EdgeOptions();
            driver=new EdgeDriver(options);
        }
        else
        {
            driver=null;
            System.out.println("Please provide the browser Name as Chrome/Firefox");
        }
        driver.manage().window().maximize();
        driver.get("https://jqueryui.com/draggable/");
        Thread.sleep(1000);

        //test1.log(Status.PASS,"Entered the Browser Name");

        

    }
}

Common Class Common methods are placed in this class package baseClass;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;


public class CommonMethods extends BaseClass {
    
    WebDriver driver;
    Actions action = new Actions(driver);

    public void initializeDriver(WebDriver driver) {
        this.driver = driver;
    }

    public void clickOperation() {
        WebElement Selectable=driver.findElement(By.xpath("//*[@id='sidebar']/aside[1]/ul/li[4]/a"));
        action.moveToElement(Selectable).click().perform();
        WebElement Item3=driver.findElement(By.xpath("//*[@id=\"selectable\"]/li[3]"));
        action.moveToElement(Item3).click().perform();
    }
    

}

TestClass All the test cases are in this class package testClasses;

import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import baseClass.CommonMethods;
import baseClass.BaseClass;

public class TestClass {
    
    WebDriver driver;
    
    CommonMethods cm=new CommonMethods();
    
    @BeforeTest
    @Parameters({"browsername_from_xml"})
    public void BrowserCall(String browser) throws InterruptedException
    {       
        
        BaseClass baseClass = new BaseClass();
        baseClass.getWebDriver(browser);
        cm.initializeDriver(driver);
    }
    
    
    //click() – clicks at the current location
    @Test(priority = 2)
    public void clickOperationTest() {
        cm.clickOperation();
    }
    
    @AfterTest
    public void closeBrowser()
    {
        driver.quit();
    }

}

Error:



[RemoteTestNG] detected TestNG version 7.4.0
org.testng.TestNGException: 
Cannot instantiate class testClasses.TestClass
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:30)
    at org.testng.internal.InstanceCreator.instantiateUsingDefaultConstructor(InstanceCreator.java:193)
    at org.testng.internal.InstanceCreator.createInstanceUsingObjectFactory(InstanceCreator.java:113)
    at org.testng.internal.InstanceCreator.createInstance(InstanceCreator.java:79)
    at org.testng.internal.objects.SimpleObjectDispenser.dispense(SimpleObjectDispenser.java:25)
    at org.testng.internal.objects.GuiceBasedObjectDispenser.dispense(GuiceBasedObjectDispenser.java:30)
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:112)
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:165)
    at org.testng.TestClass.getInstances(TestClass.java:122)
    at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:102)
    at org.testng.TestClass.init(TestClass.java:94)
    at org.testng.TestClass.<init>(TestClass.java:59)
    at org.testng.TestRunner.initMethods(TestRunner.java:463)
    at org.testng.TestRunner.init(TestRunner.java:339)
    at org.testng.TestRunner.init(TestRunner.java:292)
    at org.testng.TestRunner.<init>(TestRunner.java:223)
    at org.testng.remote.support.RemoteTestNG6_12$1.newTestRunner(RemoteTestNG6_12.java:33)
    at org.testng.remote.support.RemoteTestNG6_12$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_12.java:66)
    at org.testng.ITestRunnerFactory.newTestRunner(ITestRunnerFactory.java:55)
    at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:659)
    at org.testng.SuiteRunner.init(SuiteRunner.java:173)
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:107)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1300)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1276)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1125)
    at org.testng.TestNG.runSuites(TestNG.java:1063)
    at org.testng.TestNG.run(TestNG.java:1031)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:23)
    ... 29 more
Caused by: java.lang.IllegalArgumentException: Driver must be set
    at org.openqa.selenium.internal.Require.nonNull(Require.java:59)
    at org.openqa.selenium.interactions.Actions.<init>(Actions.java:68)
    at baseClass.CommonMethods.<init>(CommonMethods.java:12)`enter code here`
    at testClasses.TestClass.<init>(TestClass.java:16)
    ... 35 more


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source