Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chrome extensions via serenity.conf #3423

Open
pablowatson opened this issue Mar 21, 2024 · 4 comments
Open

Chrome extensions via serenity.conf #3423

pablowatson opened this issue Mar 21, 2024 · 4 comments

Comments

@pablowatson
Copy link

I am trying include a chrome extension via the serenity.conf like the one below.

# Some sample Serenity configuration options

#
# WebDriver configuration
#
webdriver {
  driver = chrome
  autodownload = true

  capabilities{

      "goog:chromeOptions" {
           args = [
                    "start-maximized", "test-type", "no-sandbox", "ignore-certificate-errors",
                    "disable-popup-blocking", "disable-default-apps", "disable-extensions-file-access-check"
                    "incognito", "disable-infobars", "disable-gpu", "remote-allow-origins=*"
                   ]
           extensions = [src/test/resources/Dark-Reader.crx]
      }
  }

}
headless.mode = false

serenity {
  test.root = starter
  compress.filenames = false
//  take.screenshots = FOR_FAILURES
}

However when do that, I get the error below:

net.thucydides.core.webdriver.DriverConfigurationError: WebDriver was unable to create a new instance of type class org.openqa.selenium.chrome.ChromeDriver
WebDriver reported the following message: Could not start a new session. Response code 500. Message: session not created: cannot process extension #2
from unknown error: cannot base64 decode 
Host info: host: 'PWATSON-THINKPA', ip: '192.168.0.125'
Build info: version: '4.14.1', revision: '03f8ede370'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.2'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: false, browserName: chrome, goog:chromeOptions: {args: [start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, remote-allow-origins=*], binary: C:\Program Files (x86)\Goog..., extensions: [Q3IyNAMAAAAdBQAAEqwECqYCMII..., src/test/resources/Dark-Rea...]}}]}]
See below for more details.
	at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:152)
	at net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:178)
	at net.thucydides.core.webdriver.WebDriverFacade.newProxyDriver(WebDriverFacade.java:169)
	at net.thucydides.core.webdriver.WebDriverFacade.getProxiedDriver(WebDriverFacade.java:120)
	at net.thucydides.core.webdriver.WebDriverFacade.get(WebDriverFacade.java:209)
	at net.serenitybdd.core.pages.PageObject.openPageAtUrl(PageObject.java:982)
	at net.serenitybdd.core.pages.PageObject.openUrl(PageObject.java:928)
	at net.serenitybdd.screenplay.actions.OpenUrl.performAs(OpenUrl.java:18)
	at net.serenitybdd.screenplay.actions.OpenUrl$ByteBuddy$7rxSexBZ.performAs$accessor$5sknVZgW(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:519)
	at net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:499)
	at net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:471)
	at net.thucydides.core.steps.StepInterceptor.runOrSkipMethod(StepInterceptor.java:213)
	at net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:200)
	at net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:92)
	at net.thucydides.core.steps.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:51)
	at net.serenitybdd.screenplay.actions.OpenUrl$ByteBuddy$7rxSexBZ.performAs(Unknown Source)
	at net.serenitybdd.screenplay.Actor.performTask(Actor.java:299)
	at net.serenitybdd.screenplay.Actor.perform(Actor.java:274)
	at net.serenitybdd.screenplay.Actor.attemptsTo(Actor.java:215)
	at net.serenitybdd.screenplay.Actor.attemptsTo(Actor.java:222)
	at starter.wikipedia.WhenSearchingForTerms.searchBySingleKeyword(WhenSearchingForTerms.java:18)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: cannot process extension #2
from unknown error: cannot base64 decode 
Host info: host: 'PWATSON-THINKPA', ip: '192.168.0.125'
Build info: version: '4.14.1', revision: '03f8ede370'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.2'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: false, browserName: chrome, goog:chromeOptions: {args: [start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, remote-allow-origins=*], binary: C:\Program Files (x86)\Goog..., extensions: [Q3IyNAMAAAAdBQAAEqwECqYCMII..., src/test/resources/Dark-Rea...]}}]}]
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:140)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:96)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:200)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:175)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:602)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:163)
	at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:108)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:88)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:83)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:72)
	at net.serenitybdd.core.webdriver.driverproviders.ChromeDriverProvider.newInstance(ChromeDriverProvider.java:73)
	at net.thucydides.core.webdriver.WebDriverFactory.createWebDriver(WebDriverFactory.java:164)
	at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:142)
	... 26 more


Could not start a new session. Response code 500. Message: session not created: cannot process extension #2
from unknown error: cannot base64 decode 
Host info: host: 'PWATSON-THINKPA', ip: '192.168.0.125'
Build info: version: '4.14.1', revision: '03f8ede370'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.2'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: false, browserName: chrome, goog:chromeOptions: {args: [start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, remote-allow-origins=*], binary: C:\Program Files (x86)\Goog..., extensions: [Q3IyNAMAAAAdBQAAEqwECqYCMII..., src/test/resources/Dark-Rea...]}}]}]
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: cannot process extension #2
from unknown error: cannot base64 decode 
Host info: host: 'PWATSON-THINKPA', ip: '192.168.0.125'
Build info: version: '4.14.1', revision: '03f8ede370'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.2'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: false, browserName: chrome, goog:chromeOptions: {args: [start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, start-maximized, test-type, no-sandbox, ignore-certificate-errors, disable-popup-blocking, disable-default-apps, disable-extensions-file-acc..., incognito, disable-infobars, disable-gpu, remote-allow-origins=*], binary: C:\Program Files (x86)\Goog..., extensions: [Q3IyNAMAAAAdBQAAEqwECqYCMII..., src/test/resources/Dark-Rea...]}}]}]
	at app//org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:140)
	at app//org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:96)
	at app//org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68)
	at app//org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
	at app//org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:200)
	at app//org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:175)
	at app//org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:602)
	at app//org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
	at app//org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:163)
	at app//org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:108)
	at app//org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:88)
	at app//org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:83)
	at app//org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:72)
	at app//net.serenitybdd.core.webdriver.driverproviders.ChromeDriverProvider.newInstance(ChromeDriverProvider.java:73)
	at app//net.thucydides.core.webdriver.WebDriverFactory.createWebDriver(WebDriverFactory.java:164)
	at app//net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:142)
	at app//net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:178)
	at app//net.thucydides.core.webdriver.WebDriverFacade.newProxyDriver(WebDriverFacade.java:169)
	at app//net.thucydides.core.webdriver.WebDriverFacade.getProxiedDriver(WebDriverFacade.java:120)
	at app//net.thucydides.core.webdriver.WebDriverFacade.get(WebDriverFacade.java:209)
	at app//net.serenitybdd.core.pages.PageObject.openPageAtUrl(PageObject.java:982)
	at app//net.serenitybdd.core.pages.PageObject.openUrl(PageObject.java:928)
	at app//net.serenitybdd.screenplay.actions.OpenUrl.performAs(OpenUrl.java:18)
	at app//net.serenitybdd.screenplay.actions.OpenUrl$ByteBuddy$7rxSexBZ.performAs$accessor$5sknVZgW(Unknown Source)
	at java.base@19.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base@19.0.2/java.lang.reflect.Method.invoke(Method.java:578)
	at app//net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:519)
	at app//net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:499)
	at app//net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:471)
	at app//net.thucydides.core.steps.StepInterceptor.runOrSkipMethod(StepInterceptor.java:213)
	at app//net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:200)
	at app//net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:92)
	at app//net.thucydides.core.steps.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:51)
	at app//net.serenitybdd.screenplay.actions.OpenUrl$ByteBuddy$7rxSexBZ.performAs(Unknown Source)
	at app//net.serenitybdd.screenplay.Actor.performTask(Actor.java:299)
	at app//net.serenitybdd.screenplay.Actor.perform(Actor.java:274)
	at app//net.serenitybdd.screenplay.Actor.attemptsTo(Actor.java:215)
	at app//net.serenitybdd.screenplay.Actor.attemptsTo(Actor.java:222)
	at app//starter.wikipedia.WhenSearchingForTerms.searchBySingleKeyword(WhenSearchingForTerms.java:18)
	at java.base@19.0.2/java.lang.reflect.Method.invoke(Method.java:578)
	at java.base@19.0.2/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base@19.0.2/java.util.ArrayList.forEach(ArrayList.java:1511)

Does anyone have any ideas what I am doing wrong here?

@JefferCardenas
Copy link

JefferCardenas commented May 24, 2024

I am getting the same error, I have Serenity version 4.1.13, Chrome 124 and I am running them on a Linux server.
These are my configurations:

headless.mode = true

webdriver {
  driver = chrome
  autodownload = true
  capabilities {
    browserName = "chrome"
    acceptInsecureCerts = true
    "goog:chromeOptions" {
        prefs {
            download.prompt_for_download=false,
            profile.default_content_settings.popups=0,
            download.default_directory = ${user.dir}"\\src\\test\\resources\\descargas",
            download.directory_upgrade = true,
            safebrowsing.enabled = true,
            plugins.always_open_pdf_externally = true
        }
    }
  }
}

chrome.switches = """--window-size=1920,1080;--start-maximized;--test-type;--no-sandbox;--ignore-certificate-errors;
                   --disable-popup-blocking;--disable-default-apps;--disable-extensions-file-access-check;
                   --incognito;--disable-infobars,--disable-gpu;--remote-allow-origins=*"""

@wakaleo
Copy link
Member

wakaleo commented May 24, 2024

In theory you can do this with the W3c properties but I haven't been able to get it to work, either in Serenity or in plain Selenium. Getting it working with plain Selenium would be the first step.

@JefferCardenas
Copy link

If I have my project with Screenplay, how would I make it work with Selenium Simple?

@JefferCardenas
Copy link

The strange thing is that it works locally for me. I use Windows 11, but when I run them on the server with Linux, it fails. I have 6 scenarios; it manages to execute the first one, but then it can't open the Chrome driver for the following ones. I see that the server's capacity is being fully consumed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants