71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package playwright
|
|
|
|
import (
|
|
"net/url"
|
|
"path"
|
|
)
|
|
|
|
type pageAssertionsImpl struct {
|
|
assertionsBase
|
|
actualPage Page
|
|
}
|
|
|
|
func newPageAssertions(page Page, isNot bool, defaultTimeout *float64) *pageAssertionsImpl {
|
|
return &pageAssertionsImpl{
|
|
assertionsBase: assertionsBase{
|
|
actualLocator: page.Locator(":root"),
|
|
isNot: isNot,
|
|
defaultTimeout: defaultTimeout,
|
|
},
|
|
actualPage: page,
|
|
}
|
|
}
|
|
|
|
func (pa *pageAssertionsImpl) ToHaveTitle(titleOrRegExp interface{}, options ...PageAssertionsToHaveTitleOptions) error {
|
|
var timeout *float64
|
|
if len(options) == 1 {
|
|
timeout = options[0].Timeout
|
|
}
|
|
expectedValues, err := toExpectedTextValues([]interface{}{titleOrRegExp}, false, true, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return pa.expect(
|
|
"to.have.title",
|
|
frameExpectOptions{ExpectedText: expectedValues, Timeout: timeout},
|
|
titleOrRegExp,
|
|
"Page title expected to be",
|
|
)
|
|
}
|
|
|
|
func (pa *pageAssertionsImpl) ToHaveURL(urlOrRegExp interface{}, options ...PageAssertionsToHaveURLOptions) error {
|
|
var timeout *float64
|
|
var ignoreCase *bool
|
|
if len(options) == 1 {
|
|
timeout = options[0].Timeout
|
|
ignoreCase = options[0].IgnoreCase
|
|
}
|
|
|
|
baseURL := pa.actualPage.Context().(*browserContextImpl).options.BaseURL
|
|
if urlPath, ok := urlOrRegExp.(string); ok && baseURL != nil {
|
|
u, _ := url.Parse(*baseURL)
|
|
u.Path = path.Join(u.Path, urlPath)
|
|
urlOrRegExp = u.String()
|
|
}
|
|
|
|
expectedValues, err := toExpectedTextValues([]interface{}{urlOrRegExp}, false, false, ignoreCase)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return pa.expect(
|
|
"to.have.url",
|
|
frameExpectOptions{ExpectedText: expectedValues, Timeout: timeout},
|
|
urlOrRegExp,
|
|
"Page URL expected to be",
|
|
)
|
|
}
|
|
|
|
func (pa *pageAssertionsImpl) Not() PageAssertions {
|
|
return newPageAssertions(pa.actualPage, true, pa.defaultTimeout)
|
|
}
|