Skip to content

[Need support]: #305

Description

@turnfuze

Describe the problem

Environment:
Selenide, Gradlew
selenideVersion = '7.8.1'
seleniumVersion = '4.31.0'
cucumberVersion = '7.20.1'
jacksonVersion = '2.18.0'

implementation('com.epam.healenium:healenium-web:3.5.5') {
exclude group: 'org.slf4j', module: 'slf4j-simple'
}

The project runs on the remote server (Selenoid) and is started by Jenkins on a separate server.

My question is
How should I set up the remote webdriver for correct work in this flow?
I tried different configuration options, but the server refuses to start.

Example of code
public RemoteWebDriver setupRemoteBrowser(String browser, DesiredCapabilities desiredCapabilities) {
Browsers currentBrowser = Browsers.fromNameOrNull(browser);

    switch (currentBrowser) {
        case CHROME: {

// RemoteWebDriver driver = createRemoteChromeDriver(desiredCapabilities);
// return (RemoteWebDriver) wrapWithHealenium(driver);

            RemoteWebDriver driver = createRemoteChromeDriver(desiredCapabilities);
            SelfHealingDriver healingDriver = SelfHealingDriver.create(driver);
            return (RemoteWebDriver) healingDriver;
        }
        case FIREFOX: {
            RemoteWebDriver driver =  createRemoteFirefoxDriver(desiredCapabilities);
            return (RemoteWebDriver) wrapWithHealenium(driver);
        }
        case EDGE: {
            RemoteWebDriver driver =  createRemoteEdgeDriver(desiredCapabilities);
            return (RemoteWebDriver) wrapWithHealenium(driver);
        }
        case SAFARI: {
            RemoteWebDriver driver =  createRemoteSafariDriver(desiredCapabilities);
            return (RemoteWebDriver) wrapWithHealenium(driver);
        }
        default:
            throw new NotImplementedException("Browser '" + browser + "' is not implemented");
    }
}

private WebDriver wrapWithHealenium(WebDriver driver) {
    log.info("Wrapping WebDriver with Healenium for self-healing capabilities.");
    System.setProperty("healenium.config", "resources/healenium.properties");
    return SelfHealingDriver.create(driver);
}

private RemoteWebDriver createRemoteChromeDriver(DesiredCapabilities desiredCapabilities) {
    log.info("Using remote chrome driver instance");
    ChromeOptions options = new ChromeOptions();
    desiredCapabilities.setCapability("browser", "chrome");
    desiredCapabilities.setCapability("browser_version", "127.0");
    desiredCapabilities.setCapability("enableVNC", true);
    desiredCapabilities.setCapability("sessionTimeout", "5m");

    options.addArguments(
            "--no-sandbox",
            "--disable-dev-shm-usage",
            "--window-size=1920,1080");
    options.merge(desiredCapabilities);
    return getRemoteWebDriver(options);
}

@slf4j
public class RemoteWebDriverProvider implements WebDriverProvider {

@Override
public WebDriver createDriver(Capabilities capabilities ) {
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities(capabilities.asMap());
    SystemEnvironment environment = new SystemEnvironment();
    GenericWebdriverProvider provider = new GenericWebdriverProvider();
    return provider.setupRemoteBrowser(environment.getGetBrowser(), desiredCapabilities);
}

}

Healenium Web version

3.5.5

Healenium Backend version

3.4.7

Selenium version

4.31.0

Platform

Java

Properties file

recovery-tries=2
recovery.timeout=10
score-cap=.6
heal-enabled=true

locator-healing-strategy=xpath
similarity-threshold=0.8

serverPort=7878
imitatePort=8000

report.path=./healenium-reports

Logs appeared during using Healenium

/var/lib/jenkins/workspace/RocketEffect_SaaS/RF_Style_promo_test_automation/src/test/java/com/addiedigital/config/GenericWebdriverProvider.java:58: error: incompatible types: SelfHealingDriver cannot be converted to RemoteWebDriver
                return createRemoteChromeDriver(desiredCapabilities);
                                               ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error

Additional context

The tests can't start

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions