Skip to content

Commit

Permalink
on now checks for equality against full and partial path url
Browse files Browse the repository at this point in the history
Discussed on this gist: https://gist.github.com/KevM/6554377#comment-906673

Note: this is a breaking change with the existing on as it does a compare and was passing for sub partial urls.
  • Loading branch information
KevM committed Sep 16, 2013
1 parent 757a15a commit 4115fa4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
23 changes: 23 additions & 0 deletions basictests/Program.fs
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,29 @@ test (fun _ ->
failsWith "More than one element was selected when only one was expected for selector: .lastName"
someElement ".lastName" |> ignore)

"Navigating to a url should be on url" &&& fun _ ->
url testpage
on testpage

"Navigating to a url with query string should be on url with and without a query string" &&& fun _ ->
let testpageWithQueryString = testpage + "?param1=weeeee"
let subtestpage = "http://lefthandedgoat.github.io/canopy"
url testpageWithQueryString
on testpageWithQueryString //with query string
on testpage //without query string

"Should not be on partial url" &&& fun _ ->
url testpage
let partialUrl = "http://lefthandedgoat.github.io/canopy"
failsWith ("on check failed, expected expression '" + partialUrl + "' got " + testpage)
on partialUrl

"Should not be on child url" &&& fun _ ->
url testpage
let childUrl = testpage + "notatthspath/"
failsWith ("on check failed, expected expression '" + childUrl + "' got " + testpage)
on childUrl

context "reddit tests"
once (fun _ -> Console.WriteLine "once: reddit tests")
before (fun _ -> Console.WriteLine "before: reddit tests")
Expand Down
9 changes: 6 additions & 3 deletions canopy/canopy.fs
Original file line number Diff line number Diff line change
Expand Up @@ -616,11 +616,14 @@ let quit browser =

let currentUrl() = browser.Url

let on (u: string) =
let on (u: string) =
let urlSansQueryString u =
let uri = new System.Uri(u)
uri.GetLeftPart(System.UriPartial.Path)
try
wait pageTimeout (fun _ -> (browser.Url.Contains(u)))
wait pageTimeout (fun _ -> if browser.Url = u then true else urlSansQueryString(browser.Url) = u)
with
| ex -> raise (CanopyOnException(sprintf "on check failed, expected %s got %s" u browser.Url));
| ex -> if browser.Url.Contains(u) = false then raise (CanopyOnException(sprintf "on check failed, expected expression '%s' got %s" u browser.Url));

let ( !^ ) (u : string) = browser.Navigate().GoToUrl(u)

Expand Down

0 comments on commit 4115fa4

Please sign in to comment.