I'm using protractor for e2e testing.
I want to visit a url, say:
browser.get("http://my.test.com");
And get the http status code and all the response body text, but I can't find a way to get them. Is there any methods I can use?
Getting the http status code it's not possible since it's been resolved that selenium webdriver API won't add it and Protractor depends on Selenium for interacting with the browser.
You'll need to find a workaround for this, e.g. using NodeJS given that Protractor runs inside it with a helper function that understand promises so Protractor waits for the http get before continuing:
// A Protracterized httpGet() promise
function httpGet(siteUrl) {
var http = require('http');
var defer = protractor.promise.defer();
http.get(siteUrl, function(response) {
var bodyString = '';
response.setEncoding('utf8');
response.on("data", function(chunk) {
bodyString += chunk;
});
response.on('end', function() {
defer.fulfill({
statusCode: response.statusCode,
bodyString: bodyString
});
});
}).on('error', function(e) {
defer.reject("Got http.get error: " + e.message);
});
return defer.promise;
}
it('should return 200 and contain proper body', function() {
httpGet("http://localhost:80").then(function(result) {
expect(result.statusCode).toBe(200);
expect(result.bodyString).toContain('Apache');
});
});
Other option might be changing the html server side accordingly to the response status code as in this blog post
<h1 id="web_403">403 Access Denied</h1>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With