Add DontLaunchOnConnectFailure
and refine server connection logic
Introduced the `DontLaunchOnConnectFailure` option to prevent browser launch on connection failure when connecting to a Playwright server. Enhanced environment variable handling for server address based on browser type, improving flexibility and reliability in connection scenarios.
This commit is contained in:
@@ -59,6 +59,10 @@ type PlayWrightBrowserOptions struct {
|
|||||||
// PlayWrightServerAddress is the address of a PlayWright server to connect to.
|
// PlayWrightServerAddress is the address of a PlayWright server to connect to.
|
||||||
// Defaults to the value of the environment variable PLAYWRIGHT_SERVER_ADDRESS.
|
// Defaults to the value of the environment variable PLAYWRIGHT_SERVER_ADDRESS.
|
||||||
PlayWrightServerAddress string
|
PlayWrightServerAddress string
|
||||||
|
|
||||||
|
// DontLaunchOnConnectFailure will, if set, not launch the browser if the connection to the PlayWright server,
|
||||||
|
// and return an error if the connection fails.
|
||||||
|
DontLaunchOnConnectFailure bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func cookieToPlaywrightOptionalCookie(cookie Cookie) playwright.OptionalCookie {
|
func cookieToPlaywrightOptionalCookie(cookie Cookie) playwright.OptionalCookie {
|
||||||
@@ -90,7 +94,7 @@ func NewPlayWrightBrowser(opts ...PlayWrightBrowserOptions) (Browser, error) {
|
|||||||
Browser: PlayWrightBrowserSelectionFirefox,
|
Browser: PlayWrightBrowserSelectionFirefox,
|
||||||
Timeout: &thirtySeconds,
|
Timeout: &thirtySeconds,
|
||||||
DarkMode: false,
|
DarkMode: false,
|
||||||
PlayWrightServerAddress: os.Getenv("PLAYWRIGHT_SERVER_ADDRESS"),
|
PlayWrightServerAddress: "",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
@@ -112,7 +116,9 @@ func NewPlayWrightBrowser(opts ...PlayWrightBrowserOptions) (Browser, error) {
|
|||||||
if o.DarkMode {
|
if o.DarkMode {
|
||||||
opt.DarkMode = true
|
opt.DarkMode = true
|
||||||
}
|
}
|
||||||
|
if o.PlayWrightServerAddress != "" {
|
||||||
|
opt.PlayWrightServerAddress = o.PlayWrightServerAddress
|
||||||
|
}
|
||||||
opt.ShowBrowser = o.ShowBrowser
|
opt.ShowBrowser = o.ShowBrowser
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,24 +143,41 @@ func NewPlayWrightBrowser(opts ...PlayWrightBrowserOptions) (Browser, error) {
|
|||||||
switch opt.Browser {
|
switch opt.Browser {
|
||||||
case PlayWrightBrowserSelectionChromium:
|
case PlayWrightBrowserSelectionChromium:
|
||||||
bt = pw.Chromium
|
bt = pw.Chromium
|
||||||
|
if opt.PlayWrightServerAddress == "" {
|
||||||
|
opt.PlayWrightServerAddress = os.Getenv("PLAYWRIGHT_SERVER_ADDRESS_CHROMIUM")
|
||||||
|
}
|
||||||
|
|
||||||
case PlayWrightBrowserSelectionFirefox:
|
case PlayWrightBrowserSelectionFirefox:
|
||||||
bt = pw.Firefox
|
bt = pw.Firefox
|
||||||
|
if opt.PlayWrightServerAddress == "" {
|
||||||
|
opt.PlayWrightServerAddress = os.Getenv("PLAYWRIGHT_SERVER_ADDRESS_FIREFOX")
|
||||||
|
}
|
||||||
|
|
||||||
case PlayWrightBrowserSelectionWebKit:
|
case PlayWrightBrowserSelectionWebKit:
|
||||||
bt = pw.WebKit
|
bt = pw.WebKit
|
||||||
|
if opt.PlayWrightServerAddress == "" {
|
||||||
|
opt.PlayWrightServerAddress = os.Getenv("PLAYWRIGHT_SERVER_ADDRESS_WEBKIT")
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, ErrInvalidBrowserSelection
|
return nil, ErrInvalidBrowserSelection
|
||||||
}
|
}
|
||||||
var browser playwright.Browser
|
var browser playwright.Browser
|
||||||
|
|
||||||
|
var launch = true
|
||||||
if opt.PlayWrightServerAddress != "" {
|
if opt.PlayWrightServerAddress != "" {
|
||||||
|
launch = false
|
||||||
browser, err = bt.Connect(opt.PlayWrightServerAddress, playwright.BrowserTypeConnectOptions{})
|
browser, err = bt.Connect(opt.PlayWrightServerAddress, playwright.BrowserTypeConnectOptions{})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
if opt.DontLaunchOnConnectFailure {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
launch = true
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
if launch {
|
||||||
browser, err = bt.Launch(playwright.BrowserTypeLaunchOptions{
|
browser, err = bt.Launch(playwright.BrowserTypeLaunchOptions{
|
||||||
Headless: playwright.Bool(!opt.ShowBrowser),
|
Headless: playwright.Bool(!opt.ShowBrowser),
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user