.get("example/#/url") gets "example/" instead of the full url - Durandal Router

Hi everyone,

I’ve encountered a problem with Gatling’s get-function. This problem relates to the Durandal Router and the way the URL’s are getting built.

Take this script:

val scn = scenario(“test”)

.exec(http(“test_request”)

.get(“http://www.google.com/#/test”))

Gatling will request www.google.com and not the full url. Have anyone encountered this before? Any clues to a workaround?

As far as I know, the developers here had to adapt some javascript to get their site to work properly with Durandal due to the #, I’m guessing Gatling struggles due to the same reason. Maybe Gatling interprets whatever comes after the # as an anchor?

Any help to solve this would be greatly appriciated!

Best regards
Håkon

Check out RFC3986, everything in a URI that comes after a # is a fragment, and a user agent mustn’t send it to a server, this information stays on the client side and is typically used by a browser to scroll to the corresponding anchor (or used by some javascript code).

Thanks for the quick reply.

I understand what you’re saying and what the generic syntax says about fragments, but that’s not the case in this situation. Due to Durandal Router, the # is a part of the URI that has to be sent to the server.

Is there anyway to make Gatling send the information to the server?

-Håkon

torsdag 13. august 2015 14.16.39 UTC+2 skrev Stéphane Landelle følgende:

Do you have an online Durandal or Aurelia sample that would exhibit how a browser would send such fragment?

I’m afraid not, this is a part of a log in process and the only version available online, is the live system.

This is an example of what the request URL looks like from a browser:
https://the.site.no/internal/location/#/doSomething?returnTo=&firstparam=abcd&secondparam=efgh

Exactly how this works server side, I don’t know. I’m just in charge of performance testing and haven’t been a part of the development process.

-Håkon

Honestly, I really doubt the fragment is sent to the server over the wire. Plus Durandal is only a front end framework and has nothing to do with what happens on the server side.
So without an example that proves me wrong, there’s nothing I can do.